NoSQL究竟是什么?了解为什么NoSQL数据库不是传统数据库的对手
将多个嵌套数据保存在单个文档中可能会丢失“SUM”,“COUNT”等分析功能。在第一次应用程序开发期间这可能不是问题的坏事,但有人可能会在稍后询问某些报告,那么在这种情况下该怎么做?在填充数据库之后很难改变数据结构,并且由于明确定义的数据结构的泄漏,这样做可能具有不可预测的影响。分析对于NoSQL来说是一个难点。 此外,虽然有许多商业工具可以连接到传统数据库来管理分析部分,但对NoSQL系统的支持有限。 可以采取的另一个解决方案是在NoSQL DB中复制某种与非结构化数据的“关系”,可能会创建许多集合并将对象与其他集合链接起来。如果您计划遵循此路径以允许分析报告,请记住,这可能会降低性能,使其与标准SQL系统相媲美。当此DB中涉及的部分最小且记录数量有限时,这是可以接受的。无论如何,即使根据我的经验,构造允许加入NoSQL查询的数据,因为背后没有明确定义的关系,非常有限并且性能不如我们预期的那么好(即,在撰写本文时) ,MongoDB不支持内连接,每次只能进化到表而不创建临时表)。 更少的工具 我们谈到了NoSQL查询语言和语法缺乏标准化。这个问题也可以反映在工具中,以及大多数平台的年轻性。我说的是用于查询的工具,也用于在数据库之间迁移数据,管理备份等。当然,大多数NoSQL项目正在增长,我们期望工具会随之增长,所以这个问题会在某些时候自动解决。 缺乏标准化使第三方供应商难以构建可支持多种NoSQL解决方案的工具。此外,年轻平台意味着更少的用户,更少的客户,更少的时间来开发成熟的工具。 性能比较指定比较的方式很重要。首先,我需要将两种解决方案置于相同的条件下。这意味着,例如,使用相同的硬件并具有相同的调整级别。所以我在同一台机器上安装了MongoDB(最新版本)和SQLServer Express。因为我们对数据库本身的性能不感兴趣,所以我使用基于标准框架的C#代码构建了我的基准测试。 通过这两种方式来保存数据,一切都是共享的(实体,逻辑,数据生成)以确保公平。 我们将比较的所有操作列表:
对单个实体的批量操作 该基准测试包含一组可在较短时间内插入的对象。使用越来越多的项目来复制此测试以保存以证明两个系统中的性能规模。该基准测试以毫秒为单位测量执行时间,并坚持使用单个表/集合。 搜索 此基准测试侧重于查询功能。我们将以下模式分开:
我创建了一些基准模拟上面不同比例的模式。在一个示例中,第一个基准假定5%的类型1的查询,70%的类型2和25%的类型3.该基准测量以ms为单位的执行时间。此基准测试坚持使用单个表集合。 您可以在git-hub上找到用于执行这些测试的所有代码。 第一个测试是在“小”数据集上,大约2.500,000行。 对“更大”的数据集进行第二次测试,大约5M行。 此基准测试突出显示了对索引的查询性能的重大改进,但是当使用MongoDB读取一组数据时,增益会降低并且在数据增加时保持稳定。 我们知道NoSQL世界的事务大多不受支持。我们也明白放弃交易可以从表演中获益,一个问题是:我从中获得多少收益?我构建了这个基准来比较插入与一个与许多孩子相关的主行的事务。基准测试的重点是执行时间,以ms表示。 Analytics(分析) 该基准专注于分析。假设我们有一个分类的主 - 详细数据模型,您希望:
在内连接后的4M行的基础上: 革命在科技领域是不可避免的。新技术带来了一些革命性的功能,但往往不得不打败开发人员的先入之见。有时他们会被误解,所以他们的弱点在他们受雇后就会出现。 关于创新,我们必须“对立”人群:
在现实生活中,我们必须保持中间位置,因此了解和了解新技术可以为我们做些什么并准备好在项目需要之前采用新技术非常重要。“在工作中进行审判”是一种可能导致不良后果的坏习惯。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |