NoSQL 数据库旨在摆脱关系型数据库的行和列模型。但认为 NoSQL 数据库没有任何数据模型是一种常见错误。对数据组织方式的有用描述是模式设计的起点。
关系型数据库已经有几代用户和开发者来总结标准设计方法。存在各种正式工具来描述业务领域的核心对象之间的关系,然后可以使用这些正式描述来规定数据的存储方式。
对于 NoSQL 数据建模,没有相同类型的标准数据建模工具。一个建议是从可以嵌入到应用程序中的业务领域模型开始,例如 JSON 文档。另一个重要的设计驱动因素是需要支持的数据访问类型。一些用例需要通过查询语言访问,而其他用例则需要一个或多个应用程序的访问。
由于没有任何商业或应用程序领域是静态的,因此必须考虑随时间的变化。在灵活性方面,NoSQL 数据库的模式修改成本要低得多。
一般来说,由于NoSQL数据库旨在存储在物理模型开发之前未指定固定结构的非结构化数据,因此开发者专注于物理数据模型。他们通常为大规模、水平扩展的环境开发应用程序。这强调了弄清楚系统的可扩展性和性能如何工作。但仍然需要考虑他们用于组织数据的模型。
NoSQL数据库的一个基本特性是需要优化数据访问,这使查询模式和业务流程成为重点。第一步是确定业务需求,并确定将使用应用程序的人的具体需求。模式设计的目的是规划快速且有效的键和索引,以适应应用程序查询和工作流程模式。
选择主键或决定哪些字段应该被索引有多种方法。审查用户的需求可能导致一些可能的索引候选者。
考虑用户将如何查询数据和查询频率。一种方法是事后的实际查询审查,这可能揭示可以指导索引哪些字段的模式。
NoSQL数据库的一个优点是它们相对容易修改以应对业务需求、查询模式或数据本身的变更。这意味着在整个应用程序生命周期中,将会有一个迭代的过程来设计模式。
一些决策可能由数据本身的架构所建议。在一个汽车数据库中,许多组件系统都是相同的,因此模式可能反映继承,带有可选的附加功能。在一个物流应用程序中,邻接性可以用来分组送货地址,表明模式为树结构。
数据和文档将被更新的频率是多少?这取决于应用程序的性质。一个实时传感器数据的流每天可能更新数千次,具体取决于其存储方式。在文档数据库(如MongoDB)中,有多种方式来建模时间序列数据,例如每个数据点一个文档或每分钟一个文档中的数据点分组。
有时索引预测的大小也会影响数据的存储方式。例如,一家金融服务公司的MongoDB客户考虑每个交易一个文档,这将创建一个预测的索引大小为280GB。选择按月对交易进行分组将大小减少到30GB。
什么是NoSQL数据模型?由于NoSQL数据库在设计上有很大的不同,因此每个主要类型的NoSQL数据库的数据模型自然会反映这些差异。换句话说,应用程序使用的NoSQL数据库类型将根据特定的用例选择,这些用例可以利用这些特定的差异。评估用例的最佳数据模型是在决定哪个NoSQL数据库最适合您的需求时的一个关键考虑因素。
四种主要类型的每种NoSQL数据库都基于一种特定的数据存储方式。这为每个案例的数据模型提供了逻辑。
文档数据库以文档数据类型存储数据,类似于JSON文档或对象。每个文档存储字段和值的对,使用广泛的数据类型和数据结构作为值。开发者通常将文档的字段和值结构嵌入到他们应用程序的代码对象中。查询用于检索字段值,并且已经开发了许多强大的查询语言来利用字段值类型的多样性。
键值数据库中的每个项目都由一个键和一个值组成,这使得这是最简单的数据库类型。数据模型由两部分组成:一个与数据有某些关系的字符串,如文件名或URL,用作键,以及数据,被视为一个单一集合。数据通过直接请求方法(提供键并获取数据)检索,而不是通过使用查询语言。
宽列存储使用表形式,但以灵活和可扩展的方式。每一行由一个键和一个或多个相关列组成,这些列被称为列族。每一行的键-列族可以有不同的列数,列可以有不同的数据类型。数据通过查询语言检索。列结构适合于快速聚合查询。
图数据库由通过边连接的节点组成。如名称、价格和产品等数据项存储在节点中,而边存储有关节点之间关系的信息。在基本意义上,节点和边是数据模型。但在整个数据库的规模上,随着新的关系数据类型的边存储和新的数据项的节点存储,数据模型会发生变化。节点和关系信息通常使用专门的查询语言检索,但一些图数据库使用SQL。
NoSQL数据库中的数据组织必须有利于提高可扩展性、更好的系统性能和优化的数据访问。通过考虑最适合您数据的模式设计和NoSQL数据模型,您可以更轻松地决定哪种NoSQL数据库是您需求的正确选择。
NoSQL涵盖了四种主要的数据库设计类型,因此每种类型的细节会有所不同。它们共同之处在于物理存储将是分布式和水平分区的。
NoSQL数据库没有与关系数据库相同的刚性模式。NoSQL的四种主要类型的每种数据库都有一个用于存储数据的底层结构。但是,数据组织细节非常灵活,有时甚至被称为“无模式”,这实际上是一种误导。
在四种主要的NoSQL数据库类型中,文档数据库、宽列和图数据库通常有利用各自优势的特定查询语言。
NoSQL数据库分为四个主要类别或类型。它们共同之处在于它们不使用传统关系数据库(有时称为SQL数据库)使用的刚性表格行和列数据模型。
相反,NoSQL数据库具有反映其特定类别的数据模型。文档数据库可以在单个文档中存储大量信息,并且可以嵌套文档。键值存储的数据模型简单,正如其名称所暗示的那样。宽列存储在数据类型和使用的列数上比面向行的关系数据库具有更多变化。图数据库基于图论的数据模型,其数据模型由节点和边组成,这些边将节点关联起来。