NoSQL:文档数据库
发布日期:2021-07-01 04:08:49
浏览次数:2
分类:技术文章
本文共 1214 字,大约阅读时间需要 4 分钟。
“文档”是文档数据库中的主要概念。此类数据库可存放并获取文档,其格式可以是XML、JSON、BSON等,这些文档具备可述性(self-describing),呈现分层的树状结构(hierarchical tree data structure),可以包含映射表、集合和纯量值。数据库中的文档彼此相似,但不必完全相同。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。文档数据库可视为其值可查的键值数据库。(参考:)
下表是关系型数据库Oracle和文档数据库MongoDB的术语对比:
Oracle | MongoDB |
---|---|
数据库实例(database instance) | MongoDB实例(MongoDB instance) |
模式(schema) | 数据库(database) |
表(table) | 集合(collection) |
行(row) | 文档(document) |
伪列(rowid) | _id |
join | DBRef |
什么是文档数据库
文档数据库中的各个文档的“数据模式”(the schema of the data)也许不同,但是他们仍然能放在同一“集合”内,而不是像关系型数据库那样,表格中每行数据的模式都要相同。
向文档中新增属性时,既无需预先定义,也不用修改已有文档内容。
文档数据库特性
- 一致性:开发者可以根据应用程序需要和业务需求,为每次操作指定数据库的“一致性”强度,以决定读取操作应该使用何种slaveOk设置,并通过WriteConcern设置写入操作的安全级别。
- 事务:支持单文档级别的事务,也可以使用“仲裁”这一概念来实现事务功能。(参考:)
- 可用性:文档数据库视图用主从数据复制技术来增强可用性。可以使用三活数据中心架构。(参考:)
- 查询:可以使用视图查询,可用“物化视图”。文档数据库可以查询文档中的数据,而不用必须根据关键字获取整个文档。
- 可扩展性:可用“分片”技术。(参考:)
适用案例
- 事件记录,应用程序对事件记录各有需求。
- 内容管理系统及博客平台,用来管理用户评论、用户注册、用户配置和面向Web文档(web-facing document)。
- 网站分析与实时分析,用来存储“页面浏览量”(page view)或“独立访客数”(unique visitor)会非常方便,而且可以无需改变模式即可新增度量标准。
- 电子商务应用程序,以存储产品和订单。
不适用案例
- 包含多项操作的复杂事务。文档数据库不适合执行“跨文档的原子操作”(atomic cross-document operation)。
- 查询持续变化的聚合结构。虽然文档数据库对模式不施加任何限制,但是如果要即时查询这些持续可变的实体,那么所用的查询命令也要不断变化,所以就需要以“最低级别的粒度”(lowest level of granularity)来保存聚合了,这实际上就等于要统一数据格式了。在这种情况下,文档数据库并不适合。
转载地址:https://mortal.blog.csdn.net/article/details/83064773 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月21日 18时19分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PL/SQL学习笔记之异常
2019-05-02
PL/SQL学习笔记之触发器
2019-05-02
PL/SQL学习笔记之包
2019-05-02
PL/SQL学习笔记之集合
2019-05-02
调整Jvm参数,让你的SpringBoot项目飞起来
2019-05-02
日均5亿查询量的京东订单中心,为什么舍MySQL用ES?
2019-05-02
MySQL数据库之互联网常用分库分表方案
2019-05-02
微服务中Zookeeper的应用及原理
2019-05-02
开发多年,你知道Spring如何在一个事务中开启另一个事务吗?
2019-05-02
Spring的核心思想你了解多少?揭秘Spring依赖注入的神秘面纱
2019-05-02
高并发下,如何解决接口幂等性?常用解决方案必知必会
2019-05-02
面试必问:Spring循环依赖的三种方式
2019-05-02
你真的了解Java常量池吗?不同JDK版本有什么区别?
2019-05-02
spi的初步认识
2019-05-02
MyBatis与传统jdbc批量新增数据对比
2019-05-02
MyBatis批量插入大量数据(1w以上)--解决方案
2019-05-02
这谁顶得住?Mybatis 十八连环问
2019-05-02
MyBatis面试题集锦(精选)
2019-05-02
MyBatis的前世:JDBC数据库编程
2019-05-02
你知道APP扫码登陆的实现原理吗?
2019-05-02