Database 针对这一特殊需求的最佳数据库和数据库设计?

Database 针对这一特殊需求的最佳数据库和数据库设计?,database,database-design,Database,Database Design,我希望在一个数据库中存储大约5000-1亿个文档,并且能够以非常快的速度进行查询。文档的外观如下所示: { 名称:“示例”, 值:“300201512” } 值列始终是唯一的,名称不是唯一的。 现在,我希望能够使用查询仅检查是否存在具有特定值的文档。对于这样的查询,哪种数据库是最佳选择,哪种设计最适合以最快的速度进行查询?如果要将数据导入到某个数据库中,请尝试使用MS SQL Server 2008 R2,因为它非常方便用户,允许您更准确地完成工作。如果您想做到这一点而不付出任何代价,那么MyS

我希望在一个数据库中存储大约5000-1亿个文档,并且能够以非常快的速度进行查询。文档的外观如下所示:

{ 名称:“示例”, 值:“300201512” } 值列始终是唯一的,名称不是唯一的。
现在,我希望能够使用查询仅检查是否存在具有特定值的文档。对于这样的查询,哪种数据库是最佳选择,哪种设计最适合以最快的速度进行查询?

如果要将数据导入到某个数据库中,请尝试使用MS SQL Server 2008 R2,因为它非常方便用户,允许您更准确地完成工作。如果您想做到这一点而不付出任何代价,那么MySQL将是更好的选择,因为MySQL编辑器是SQLYG。我希望它能对您有所帮助。

NoSQL数据库试图提供一些传统关系数据库管理系统无法提供的功能。无论是为了在较短的时间内保存简单的键值对以进行缓存,还是为了保存非结构化集合(例如,无法使用关系数据库和结构化查询语言SQL轻松处理的数据集合),它们都可以提供帮助

为了更好地理解每个数据库管理系统的角色和底层技术,让我们快速回顾一下这四种操作模型

基于键/值的

我们将从基于键/值的数据库管理开始NoSQL建模之旅,因为它们可以被视为NoSQL的最基本和主干实现

这些类型的数据库通过将键与值匹配来工作,类似于字典。没有结构也没有关系。在连接到数据库服务器(例如Redis)后,应用程序可以声明一个密钥(例如“答案”到“生命”),并提供匹配值(例如42),稍后可以通过提供密钥以相同的方式检索该值

键/值DBMS通常用于快速存储基本信息,有时在执行CPU和内存密集型计算后不太存储基本信息。它们具有极高的性能、效率,并且通常易于扩展

注:对于计算机,字典通常指的是一种特殊类型的数据对象。它们由集合数组组成,集合中的各个键与值匹配

基于列的

基于列的NoSQL数据库管理系统通过改进基于键/值的数据库管理系统的简单特性来工作

尽管这些数据库很难理解internet上的图像,但它们的工作非常简单,只需创建一个或多个与记录匹配的键/值对集合

与传统的关系数据库定义模式不同,基于列的NoSQL解决方案不需要预结构化表来处理数据。每条记录都有一列或多列包含信息,每条记录的每一列都可能不同

基本上,基于列的NoSQL数据库是二维数组,其中每个键(即行/记录)都附带一个或多个键/值对,这些管理系统允许保存和使用非常大的非结构化数据,例如包含大量信息的记录

当简单的键/值对还不够时,通常使用这些数据库,并且必须存储包含大量信息的大量记录。实现基于列、无模式模型的DBMS可以非常好地扩展

基于文档

基于文档的NoSQL数据库管理系统可以被认为是最新的一股热潮,它成功地让很多人大吃一惊。这些数据库管理系统的工作方式与基于列的数据库管理系统类似;但是,它们允许实现更深层的嵌套和复杂的结构,例如文档、文档内、文档内

文档克服了列式数据库的一级或两级键/值嵌套的限制。基本上,任何复杂和任意的结构都可以形成一个文档,可以使用这些管理系统进行存储

尽管基于文档的管理系统功能强大,并且能够通过单个键查询记录,但与其他系统相比,它们有自己的问题和缺点。例如,检索一条记录的值意味着获取全部记录,更新也是如此,所有这些都会影响性能

基于图形的

最后,NoSQL数据库管理系统的有趣之处在于基于图形的系统

基于图形的DBMS模型以与前三种模型完全不同的方式表示数据。它们使用树状结构,即节点和边通过关系相互连接的图

与数学类似,使用这些类型的模型执行某些操作要简单得多,因为它们具有链接和分组相关数据块的性质 信息,例如有联系的人

这些数据库通常由应用程序使用,因此需要建立清晰的连接边界。例如,当您注册到任何类型的社交网络时,使用基于图形的数据库管理系统,您的朋友与您的连接以及他们的朋友与您的关系都要容易得多

基于文档的快速数据库

1 MongoDB

2发电机B

我会优先选择DynamoDB

目前,我们正在开发aws datalake,性能非常快 将数据存储在中并通过返回

简短答复: 我认为,您提到的结构和条件中的1亿个文档不够大,无法使用NoSQL。您可以使用PostgreSQL和MySQL等来处理它们


注意:很长一段时间以来,维基百科都在使用MySQL,而不是现在。请参见

数据将是静态的,填写完表格后将不再有进一步的导入,因此我不会太担心用户友好性。我所需要的就是尽可能快地完成我在帖子中解释的查询。此外,我正在寻找本地托管数据库,这样成本就不会成为问题。您能指定数据的大小吗?很抱歉,但要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题不属于堆栈溢出的主题,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。