【51CTO.com快译】文档存储数据库被认为是所有NoSQL数据库类型中最复杂的。它们采用JSON格式来存储数据,而不是采用典型的行和列结构。
NoSQL数据库是大多数日常互联网使用的基础。从Twiiter使用FlockDB到亚马逊的DynamoDB,我们每天都会遇到NoSQL。
作为市面上流行的数据库模型之一,文档存储的工作方式与键值(key-value)非常相似,因为文档是以信息的特定键来存储的。有意思的是,Windows注册表就是文档存储数据库,因此它是很强大的数据模型。
文档数据库的工作原理
表面上,文档数据库背后的想法是,您可以在文档中存储任何类型的信息。这意味着您可以混合搭配所需的任何类型的数据,不必担心数据库无法解析它。实际上,大多数文档数据库仍往往使用某种形式的模式、文件格式和某种预定义结构。
相比关系型SQL数据库,文档存储没有与SQL同样的缺点和限制。这意味着处理手头的信息要容易得多,查询执行也要容易得多。出人意料的是,您在SQL数据库中可以执行的同一种操作也可以在文档存储数据库中执行,比如删除、添加和查询。
如前所述,每个文档都需要某种类型的键,这是通过唯一ID提供给它的。在任何过程中提供唯一ID时,直接读取和处理文档本身中的信息,而不是逐列取出信息。
说到文档数据库(以及所有NoSQL数据库),要注意的一点是,它们的安全性往往比SQL数据库差一点。因此,您需要考虑数据库安全,而加强安全的一种方法是使用SAST。 SAST即静态应用程序安全测试,直接查看源代码以查找漏洞。您还可以运行DAST(动态版本),同样有助于避免NoSQL注入攻击。
文档数据库的优点
文档存储的最大优点可能是,所有内容都在一个数据库当中,而不是信息分散在多个链接数据库中。因此,与SQL数据库相比,您可以获得更好的性能,只要不使用关系型流程。链接文档会大大增添复杂性,使用起来令人沮丧,引用在文档存储数据库中其实效果不好。
不像每个信息都有一个字段的传统数据库,即使没有任何内容,文档存储数据库也更加灵活。实际上,不需要文档有一致性,您就可以存储大量数据,基本上没有问题。
同样,由于文档存储更灵活,因此集成新数据根本不是问题。与必须将任何新类型的信息添加到所有数据集的关系数据库相比,文档存储数据库只需要添加到几个数据集即可。
更具体地说,由于可以在不造成任何停机的情况下修改模式,或者由于您将来可能不知道用户需求,因此文档存储数据库非常适合这些应用:
- 大型电子商务平台(比如亚马逊)
- 博客网站(比如Twitter)
- 内容管理系统(WordPress和Windows注册表)
- 分析平台
文件数据库的缺点
虽然大多数文档存储数据库已存在了一段时间,但除了小圈子和数据库自己的维基或论坛外,仍没有太多的说明文档。加上有太多的文档存储数据库可供选择,有时不深入研究,很难找到特定的信息。
此外,由于缺乏熟悉性而导致配置错误,或由于使用单个节点,数据有可能丢失。另一个问题是,文档存储数据库其实不适合运行多个复杂的操作或复杂的查询。
最后,文档数据库(和所有NoSQL数据库)快速发展,这个事实多少成了一把双刃剑。与SQL相对完善、不会有太大变化相比,如果您没有热情或兴趣,NoSQL可能很难跟上步伐。
流行文档数据库的例子
MongoDB:作为主要的NoSQL数据库引擎之一,它不仅应用广泛,还使用类似JSON的机制,有自己的查询语言。这篇指南全面介绍了MongoDB的基础知识。
Elasticsearch:基于文档存储数据模型的搜索引擎。它用于搜索数据库并建立索引,学习起来也非常简单。
CouchDB:与Ubuntu和Facebook一起使用,它使用Javascript,用Erlang编写。
BaseX:一种基于XML的轻量级DBM,开源,使用Java。
结论
文档存储数据模型大受欢迎、广泛使用有充分理由,这归因其灵活性。随着数据库应用变得越来越复杂,能够轻松添加数据集或扩大规模意味着整体麻烦更少、项目更易于处理。
文档存储还有助于数据分析,因为公司可以轻松存储众多信息供日后使用。由于几个文档存储数据库在添加图形接口(比如MongoDB),因此可以更轻松地查找原本可能不明显的信息和模式。
原文标题:Understanding NoSQL Document Databases,作者:Alex Williams
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】