传统的关系型数据库定义明确,使用模式来描述每个功能元素,包括表、行、视图、索引和关系。通过施加高度的控制,数据库管理员可以提高性能并防止捕获低质量、不完整或不规范的数据。在SQL数据库中,模式在数据写入磁盘时由关系型数据库管理系统(RDBMS)强制执行。
但是,为了工作,数据需要经过大量的格式化和塑形,以适应表结构。这意味着在保存时牺牲任何未定义的细节,或者将有价值的信息完全存储在数据库之外。
无模式数据库,如MongoDB,没有这些预先约束,映射到一个更“自然”的数据库。即使坐在数据湖之上,每个文档都是创建了一个部分模式来辅助检索。任何正式的方案都是在应用程序代码中应用的;这一层抽象保护了NoSQL数据库中的原始数据,并允许根据您的需求变化进行快速转换。
任何格式化或未格式化的数据都可以存储在非表格类型的NoSQL数据库中。同时,使用无模式数据库这种形式的正确工具可以释放所有结构化和非结构化数据类型的价值。
在无模式数据库中,信息存储在类似JSON风格的文档中,这些文档可以具有不同字段的不同数据类型的字段集。因此,一个集合可能看起来像这样
{
name : “Joe”, age : 30, interests : ‘football’ }
{
name : “Kate”, age : 25
}
如您所见,数据本身通常具有相当一致的结构。在无模式MongoDB数据库中,有一些额外的结构——系统命名空间包含集合和索引的显式列表。集合可以是隐式或显式创建的——索引必须显式声明。
对数据类型有更大的灵活性
由于没有模式,无模式数据库可以存储、检索和查询任何数据类型——非常适合由未结构化数据分析工具(如未结构化数据)驱动的大数据分析和类似操作。关系数据库对数据应用严格的模式规则,限制了可以存储的内容。
没有预定义的数据库模式
缺少模式意味着您的NoSQL数据库可以接受任何数据类型,包括您尚未使用的类型。这为您的数据库提供了未来保障,使其能够随着您数据驱动的业务发展和成熟而增长和变化。
无数据截断
无模式数据库对您的数据几乎没有修改;每个项目都保存在一个带有部分模式的文档中,原始信息保持不变。这意味着每个细节始终可用,没有任何内容被裁剪以匹配当前模式。如果您未来的分析需求发生变化,这一点尤其有价值。
适用于实时分析功能
由于能够处理非结构化数据,基于NoSQL数据库构建的应用程序能够更好地处理实时数据,例如来自物联网传感器的读取和测量。无模式数据库也非常适合用于机器学习和人工智能操作,有助于加速您业务中的自动化行动。
增强的可扩展性和灵活性
使用NoSQL,您可以使用最适合工作任务的数据模型。图数据库允许您查看数据点之间的关系,或者您可以使用具有异常多列的传统宽表视图。您可以选择查询、报告和建模信息。随着您需求的增长,您可以继续添加节点以增加容量和功率。
当记录保存到关系型数据库时,与模式不匹配的任何内容(尤其是元数据)将被截断或删除。这些详细信息在写入时被删除,以后无法恢复。
这看起来是什么样子?
缺乏刚性模式使得在修改数据库或进行数据迁移时增加了透明性和自动化。比如说,您想添加GPA属性到数据库中存储的学生对象。您只需添加该属性,重新保存,GPA值就会添加到NoSQL文档中。如果您查找现有学生并引用GPA,它将返回null。如果您回滚代码,现有的对象中的新GPA字段不太可能导致问题,并且如果您的代码编写良好,则不需要删除。
NoSQL数据库与传统的关系型数据库非常不同,后者由RDBMS强制执行严格定义的模式。然而,为了辅助排序和检索,每个NoSQL文档都包含一个部分模式——例如,所有集合和索引都明确列在系统命名空间中。但是,只有当您的应用程序检索数据时,才会应用模式。
因为NoSQL数据库的设计是为了存储和查询非结构化数据,所以它们不需要像关系型数据库那样使用刚性模式。尽管在应用级别可以应用模式,但NoSQL数据库仍然以原始的原始格式保留所有非结构化数据。这意味着即使您后来更改了应用程序模式,也能保留完整的粒度——这是传统SQL数据库不可能做到的。
作为一个NoSQL数据库,MongoDB被认为是无模式的,因为它不需要像关系型数据库那样的刚性、预定义的模式。数据库管理系统(DBMS)在数据写入时强制执行部分模式,明确列出集合和索引。您用于利用存储在MongoDB中的数据的应用程序将在读取数据库中的文档时强制执行一个更严格的动态类型模式。
无模式数据库提供您业务所需灵活性,以从其数据资产中提取最大价值和洞察力。通过在保存时未应用结构,您可以防止未来可能变得重要的细节丢失。
通过免费 MongoDB Atlas 订阅亲自测试无模式数据库的强大功能。免费 MongoDB Atlas 订阅,无需信用卡即可开始,无技术限制,您可以立即开始。