- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我是 NoSQL 世界的新手,正在考虑将我的 MS Sql Server 数据库替换为 MongoDB。我的应用程序(用 .Net C# 编写)与 IP 摄像机交互,并将来自摄像机的每个图像的元数据记录到 MS SQL 数据库中。平均而言,我每天为每个相机插入大约 86400 条记录,并且在当前数据库模式中,我为单独的相机图像创建了单独的表,例如Camera_1_Images、Camera_2_Images ... Camera_N_Images。单个图像记录由简单的元数据信息组成。像 AutoId、FilePath、CreationDate。为了添加更多细节,我的应用程序为每个摄像头启动单独的进程 (.exe),每个进程每秒在数据库的相关表中插入 1 条记录。
我需要 (MongoDB) 专家就以下问题提出建议:
判断 MongoDB 是否适合保存此类数据,这些数据最终将根据时间范围进行查询(例如,在指定小时内检索特定相机的所有图像)?关于我的案例基于文档的架构设计有什么建议吗?
服务器的规范应该是什么(CPU、RAM、磁盘)?有什么建议吗?
我是否应该在这种情况下考虑分片/复制(同时考虑写入同步副本集的性能)?
在同一台机器上使用多个数据库有什么好处,这样一个数据库将保存所有相机的当天图像,而第二个数据库将用于存档前一天的图像?我正在考虑在单独的数据库上拆分读取和写入。因为所有读取请求都可能由第二个数据库提供服务并写入第一个数据库。它会受益还是没有?如果是,那么任何确保两个数据库始终同步的想法。
欢迎提出其他建议。
最佳答案
我自己是 NoSQL 数据库的初学者。所以我以潜在的反对票为代价来回答这个问题,但这对我来说将是一次很棒的学习经历。
Before trying my best to answer your questions I should say that if MS SQL Server is working well for you then stick with it. You have not mentioned any valid reason WHY you want to use MongoDB except the fact that you learnt about it as a document oriented db. Moreover I see that you have almost the same set of meta-data you are capturing for each camera i.e. your schema is dynamic.
MongoDB 是一个面向文档的数据库,擅长查询 within 聚合(您称其为文档)。由于您已经将每个摄像头的数据存储在其自己的表中,因此在 MongoDB 中,您将为每个摄像头创建一个单独的 collection。 Here is how您执行日期范围查询。
所有 NoSQL 数据库都是为在商用硬件上横向扩展而构建的。但按照您提出问题的方式,您可能正在考虑通过扩大规模来提高性能。您可以从一台合理的机器开始,随着负载的增加,您可以继续添加更多服务器(横向扩展)。您无需计划和购买高端服务器。
MongoDB locks the entire db用于单次写入(但会产生其他操作),并且适用于读取多于写入的系统。所以这取决于你的系统是怎样的。有多种分片方式,并且应该是特定于域的。一个通用的答案是不可能的。但是可以给出一些示例,例如按地理、按分支等进行分片。
另请阅读 A plain english introduction to CAP Theorem
更新了对分片评论的回答
根据他们的documentation , 你应该考虑部署一个分片集群,如果:
- your data set approaches or exceeds the storage capacity of a single node in your system.
- the size of your system’s active working set will soon exceed the capacity of the maximum amount of RAM for your system.
- your system has a large amount of write activity, a single MongoDB instance cannot write data fast enough to meet demand, and all other approaches have not reduced contention.
所以根据最后一点,是的。自动分片功能旨在扩展写入。在这种情况下,每个 shard 都有一个写锁,而不是每个 database。但我的答案是理论上的。我建议您从 10gen.com 小组咨询。
关于sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13190468/
我已经使用 MS Word 和一大堆表单字段创建了一个应用程序表单,并且我有一个 Access db,可以从这个 Word 文档中导入我需要的所有数据,这要归功于: http://msdn.micro
我试图找到一种将 Outlook 插件发布到办公商店的方法。但我发现我们只能发布 Office 应用程序,而不能发布 Office 商店的加载项。因此我想知道 Office 应用程序和 Office
我在 MS Reporting Services 服务器上部署了一份报告,工作正常。我可以使用 Microsoft 的报表查看器组件从 ASPX 页面毫无问题地 Access 它、设置报表参数等。效果
让我们再试一次。我发布这个是为了回答 2 个问题 MS Project 2007 是否需要 SharePoint(我希望没有)? 做 你喜欢 MS Project 开发团队 - 它是有用的还是 疼痛?
我正在执行这些星期六上午的任务之一,试图理解为什么为什么要在计算机注册表中搜索某些信息会花费大量时间,甚至迫使我停止该过程。使用这些注册表清理程序之一,我发现该代码花了数十分钟遍历如下行: HKEY_
从多年前开始,我就没有使用Access。 它能很好地解决什么样的问题,甚至比真正的RDBMS支持的Web应用程序更好? 它仍在积极开发吗?还是MS已经死了? 最大的局限性是什么? 更新: 应该使用什么
我们计划重新设计一个相当庞大的 MS Access 应用程序。有没有办法在同一应用程序上同时工作,或者是否可以合并同一文件的两个单独实例(不是数据,而是表单和代码)。现在 Access 包含数据,但在
我写了一些SQL命令来更正表中的字段。由于它是如此之小(也许我有点自大),我什至没有运行过一次,只是将其放入了更新包中供其他用户使用。 Dim SQL As String Dim rs As DAO.
它是Office自带的,是一个“中规中矩”的数据库,到今天这里有800多个问题,但我从来没有关注过它。 我失去了一些有趣的东西? 我说的是 MS-Access 作为用于快速原型(prototype)制
我有一个MS-Access数据库,该数据库已通过使用“用于Access的Microsoft SQL Server迁移助手2008”(aka SSMA)转换为使用SQL表并创建了链接表(因此,MS-Ac
我有一个 Excel 文件,其中包含从 Access 数据库(主数据库)导出的任务。然后,此 Excel 文件用作 MS Project 的导入文件。随后,MS Project 用于实际跟踪和报告,并
我正在尝试获取有关如何将 MS Project 2010 连接到 MS Project Server 2010 的教程或分步说明。 我已经在我的服务器上安装了 Server 2008 R2(64 位)
有没有办法像选择查询一样在查询中引用表单的组合框/文本框? 我通常在选择查询的条件中使用类似这样的东西: like forms!frmMain.qTitleofSomething&* (acces
我想创建一个表,其中包含 DOUBLE 实数类型的列。我可以在表设计 View 中找到数据类型 Number,但是没有 Double 或 single,Float.. 如何实现..? 我还需要 SQL
我环顾四周,发现了一些关于如何从字段的“描述”框中获取描述的 VBA 代码,但没有找到如何在表单属性中使用它的方法。 我希望出现一个 ControlTip,其中包含从数据库中的描述中带来的该字段的描述
我有一个难题。我已经开发了一个 Access 应用程序,我正准备分发它。我刚刚拆分了数据库。 (我知道,有人说我应该从一开始就把它分开开发……我没有)我也刚刚加密了后端数据库。在前端,我已链接到后端并
我制作了一个 MS Access 2013 数据库来跟踪有关交易网站的所有通信。与此问题相关的表和列是具有列 ID(编号)和链接(超链接)的广告,以及具有列广告的注释,其中包含广告 ID。链接字段包含
我与我不拥有且无法更改的数据库建立了 ODBC 连接。我要做的是使相关记录合并为一条记录。关系是一对多。 我有一个学生管理系统,想要导出一个提供自动标注服务(由调用收费)的调用列表。如果有多个学生住在
我在 Access 的表单中设置了一个文本框。该表单链接到一个表格。但是它自己的文本框是未绑定(bind)的,它用于简单地收集用户输入。但是,我无法编辑它所查看的值。 文本框未锁定。文本框可以在 VB
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
我是一名优秀的程序员,十分优秀!