解读NoSQL文档数据库:工作原理、优缺点

译文
数据库 其他数据库
文档存储数据库被认为是所有NoSQL数据库类型中最复杂的。它们采用JSON格式来存储数据,而不是采用典型的行和列结构。

【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】

 

责任编辑:华轩 来源: 51CTO
相关推荐

2010-08-27 09:45:49

CSS Sprites

2020-11-20 15:04:27

数据库云数据库安全

2024-02-02 10:51:53

2021-03-04 09:00:00

架构Lambda工具

2019-03-13 09:00:00

Web应用SPAJavaScript

2021-09-28 09:25:05

NoSQL数据库列式数据库

2017-03-17 14:44:04

关系型数据库原理

2011-09-16 16:01:31

NoSQL

2011-10-09 09:38:03

OracleNoSQL

2010-06-17 11:22:37

SQL Server数

2020-06-15 07:00:00

GitOpsKubernetesDevOps

2019-02-26 15:23:01

数据安全磁盘

2015-10-22 10:52:34

NoSQL数据库键值型数据库文档型数据库

2023-11-27 00:58:00

数据库AI

2024-03-28 09:00:00

NoSQL数据库

2010-04-01 09:45:38

NoSQL

2019-03-20 15:59:11

NoSQLRedis数据库

2019-07-08 10:36:34

数据库WebNoSQL

2011-07-19 09:08:50

JavaNoSQL

2018-05-22 09:00:00

点赞
收藏

51CTO技术栈公众号