文档型数据库_nosql 文档型数据库 - CSDN
精华内容
参与话题
  • 文档型数据库

    万次阅读 2019-03-22 09:20:36
    文档型数据库 简介 1. MongoDB:文档型数据库,按照文档的形式存储 a. Web App(用的较多) 2. 数据库管理系统(DBMS) a. 需要把具体如何实现的如 增删改查 隐藏在系统软件中,对用户软件透明 基础概念: a. ...

    文档型数据库

    简介

    • MongoDB:文档型数据库,按照文档的形式存储
      • Web App(用的较多)
    • 数据库管理系统(DBMS)
      • 需要把具体如何实现的如 增删改查 隐藏在系统软件中,对用户软件透明

    基础概念:

    • 文档(数据模型) 【关系数据库的数据模型是表格】

      • 用<key/attribute,value>存放,json的格式
      • 一个文档里还可以包括子文档
      • 每个文档都有个_id,如果在一个文档中没有说_id是什么,数据库会自动分配一个,可以通过_id找到数据库的任何一个文档
      • 一个文档可以是做一个对象(json)
    • 文档集(collection)

      • 文档的集合(一个文档集可以视为一类对象)
    • 数据库(database)

      • 若干个文档集构成一个数据库
      • 部署在一个服务器上,【一般】一个数据库对应一个应用

    文档的访问接口

    • 插入文档

      • db.foo.insert({“bar”:“baz”})
        • db:datebase foo:collection
      • db.foo.batchinsert() 批量插入
    • 查找文档

      • db.blog.find() [查blog文档集的所有文档]
      • Joe=db.people.findOne({“name”:“joe”,“age”:20}); [查people文档集特定属性的文档]
      • db.users.find({},{“username”:1,“email”:1}) [只返回users文档的username,email这两个属性、前面的空括号表明不限定如何查询条件,如果这里去掉后面两个属性就变成查询条件了]
      • db.users.find({“age”:{“gte&quot;:18,&quot;gte&quot;:18,&quot;lte”:30}}) 【查年龄在18~30的用户文档】
      • db.raffle.find({“ticket_no”}:{"$in"} :{ [725,542,390]}})
    • 删除文档

      • db.foo.remove()
      • db.mailing.list.remove({“opt-out”:true})
    • 更新文档

      • db.users.update({"_id" : ObjectId(“28h32j223e92e”)},…{"KaTeX parse error: Expected 'EOF', got '}' at position 44: …War and Peace"}}̲) 【set指置换】
      • db.games.update({“game” : “pinball”, “user” : “joe”},…{"$inc" : {“score” : 50}})

    文档模型的设计思想

    • 优点:每个元素都被视为对象(储存为json格式)

    存储器件

    • 数据处理性能的宗旨
      • 提高数据访问的局部性:
        • 对磁盘/闪存而言
          • 减少I/O的次数;
          • 变随机访问为顺序访问。
        • 对内存而言
          • 增加Cache的命中率
    • 数据库的基本存储架构
      • 以页为单位存放数据。每一页为512bytes的整数倍,4KB到4MB。

    索引:

    • 对于非聚集索引,有些查询甚至可以不访问数据页。

    • 聚集索引可以避免数据插入操作集中于表的最后一个数据页。

      当然,众所周知,虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引。

    参考 https://www.cnblogs.com/ccsccs/articles/4243644.html

    • B-Tree
      • B-Tree的平衡性

        • 每个节点的大小固定(e.g. 4KB或8KB),因此最多只能容纳n个键和n+1个指针。
      • 什么决定B-Tree的效率?

        • 树的高度决定查询需要I/O次数。
        • 对于同样规模的数据,n越大树的高度越低。
        • 为了提高B-Tree的效率,我们需要增加n,即增加每个节点容纳键和指针的数量。
          • 用简短的数据类型定义键的属性,e.g. smallint.
          • 对B-Tree进行压缩。
    展开全文
  • 实时数据库,内存数据库,关系型数据库比较

    万次阅读 多人点赞 2018-09-27 18:45:44
    内存数据库 内存数据库就是将数据放在内存中...关系型数据库 数据库是指按照一定数据结构和模型来组织、存储和管理数据的仓库。采用关系模型建立起来的数据库叫做关系数据库。关系数据库是建立在集合代数基础上...

    内存数据库

    内存数据库就是将数据放在内存中直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而磁盘是顺序访问这两个特点,将数据保存在内存中,在内存中模仿建立表结构和索引结构并针对内存特性进行优化,相比从磁盘上访问,内存数据库访问较快。

    关系型数据库

    数据库是指按照一定数据结构和模型来组织、存储和管理数据的仓库。采用关系模型建立起来的数据库叫做关系数据库。关系数据库是建立在集合代数基础上,应用数学方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。

    实时数据库

    实时数据库概述

    实时数据库是采用实时数据模型建立起来的数据库,用于处理不断更新的快速变化的数据及具有时间限制的事务处理。实时数据库技术是实时系统和数据库技术相结合的产物,利用数据库技术来解决实时系统中的数据管理问题,同时利用实时技术为实时数据库提供时间驱动调和资源分配算法。主要应用于工业监控,如:电力、石化、化工、钢铁、冶金、造纸、交通控制和证券金融等工业领域的监控。。概括地讲,实时数据库系统有如下特点:

    1. 时间约束:
      实时数据库是其数据和事务都有明确的时间限制的数据库。在实时系统中,具有时间约束的数据主要是来自于外部的动态数据,以及由这些数据求导出的新的数据。数据库中的数据必须如实反映现场设备的运行情况。
    2. 事务调度:
      实时数据库系统的正确性不仅依赖于事务的逻辑结果,而且依赖于该逻辑结果所产生的时间。事务调度既要考虑事务的执行时间,也要考虑事务的截止期、紧迫程度等因素。
    3. 数据存储:
      实时数据库主要承担系统所有实时数据的存储和管理,为相关的功能提供快速、正确的实时信息。为了达到实时性,实时数据库在系统运行过程中,应常驻内存,以保证读取速度。对于实时性要求不高的数据可存放在外存储空间。因此,在实时数据库设计时,要妥善处理时间与存储空间的矛盾,以保证系统的实时性。
    4. 数据在线压缩:
      在实际的数据存储中,实时数据库还要解决如何高效处理海量数据的问题。如果数据被原封不动地存储势必需要大量内存和磁盘空间以及耗费大量的时间,因此必须对实时数据进行在线压缩存储。

    实时数据库的实现原理

    http://www.360doc.com/content/11/0422/11/6295074_111482939.shtml

    实时数据库常用压缩算法介绍
    https://www.cnblogs.com/liguangsunls/p/7207265.html

    比较项目 实时数据库 关系数据库 内存数据库 说明
    应用领域 应用于电力、石油、化工等流程工业和生产领域,适用于处理不断更新、快速变化的数据及具有时间限制的事务处理 应用于应用于电子商务、事务性管理、金融管理,网络游戏等领域 更多的应用与电信,证券,网络游戏等领域
    开发目的 处理实时变化的数据。维护数据的实时性、真实性,满足工业生产管理、实时应用的需要 处理永久、稳定的数据。维护数据的完整性、一致性,很难处理有关数据及其处理的定时限制,因此不能满足工业生产管理实时应用的需要 比关系型数据库的实时性有了些提高
    表结构 以时间序列方式对数据进行存储,以资产表的方式对数据进行访问 以二维表格对数据进行存储和访问 文档形式,或key,value的方式存储
    读写速度(记录/ 秒) 500000 3000 50000 实时数据库的读写速度要比关系数据库快几百倍
    历史数据压缩 实时数据库的数据压缩功能极大地减少了所占用的存储空间
    磁盘空间占用率 4G空间能存贮30万个测点的每秒变化一次的历史数据(不带索引)200小时 同等条件下,关系数据库5小时的数据就达到4G磁盘空间 不详
    数据恢复功能 关系数据库的数据恢复功能以消耗系统资源和牺牲系统性能为代价
    展开全文
  • 文档型数据库MongoDB

    2019-07-13 10:52:21
    MongoDB 是一个跨平台的,面向文档数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关 系数据库的产品。它支持的数据结构非常松散,是...

    MongoDB简介

    (1)数据量大
    (2)写入操作频繁
    (3)价值较低
    对于这样的数据,我们更适合使用MongoDB来实现数据的存储

    什么是MongoDB

    MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关
    系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。
    MongoDB 的官方网站地址是:http://www.mongodb.org/

    MongoDB特点

    MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。
    具体特点总结如下:
    (1)面向集合存储,易于存储对象类型的数据
    (2)模式自由
    (3)支持动态查询
    (4)支持完全索引,包含内部对象
    (5)支持复制和故障恢复
    (6)使用高效的二进制数据存储,包括大型对象(如视频等)
    (7)自动处理碎片,以支持云计算层次的扩展性
    (8)支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++语言的驱动程序,社区中也提供了对 Erlang 及.NET 等平台的驱动程序
    (9) 文件存储格式为 BSON(一种 JSON 的扩展)

    MongoDB体系结构

    MongoDB 的逻辑结构是一种层次结构。主要由:
    文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。
    (1)MongoDB 的文档(document),相当于关系数据库中的一行记录。
    (2)多个文档组成一个集合(collection),相当于关系数据库的表。
    (3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。
    (4)一个 MongoDB 实例支持多个数据库(database)。
    文档(document)、集合(collection)、数据库(database)的层次结构如下图:

    在这里插入图片描述

    在这里插入图片描述

    数据类型

    基本数据类型
    null:用于表示空值或者不存在的字段,{“x”:null}
    布尔型:布尔类型有两个值true和false,{“x”:true}
    数值:shell默认使用64为浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,可以使用NumberInt(4字节符号整数)或NumberLong(8字节符号整数),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}
    字符串:UTF-8字符串都可以表示为字符串类型的数据,{“x”:“呵呵”}
    日期:日期被存储为自新纪元依赖经过的毫秒数,不存储时区,{“x”:new Date()}

    正则表达式:查询时,使用正则表达式作为限定条件,语法与JavaScript的正则表达式相同,{“x”?[abc]/}
    数组:数据列表或数据集可以表示为数组,{“x”: [“a“,“b”,”c”]}
    内嵌文档:文档可以嵌套其他文档,被嵌套的文档作为值来处理,{“x”:{“y”:3 }}
    对象Id:对象id是一个12字节的字符串,是文档的唯一标识,{“x”: objectId() }
    二进制数据:二进制数据是一个任意字节的字符串。它不能直接在shell中使用。如果要将非utf-字符保存到数据库中,二进制数据是唯一的方式。
    代码:查询和文档中可以包括任何JavaScript代码,{“x”:function(){/…/}}

    展开全文
  • 文档型数据库存储树型结构

    千次阅读 2018-04-23 15:12:55
    此文以存储树形结构数据为需求,分别描述了利用关系型数据库和文档型数据库作为存储的几种设计模式。A.关系型数据库设计模式1idnameparent_id1ANULL2B13C14D2上图表示了传统的设计方法之一,就是将树形结构的每一个...

    在数据库中存储树形结构的数据,这是一个非常普遍的需求,典型的比如论坛系统的版块关系。在传统的关系型数据库中,就已经产生了各种解决方案。

    此文以存储树形结构数据为需求,分别描述了利用关系型数据库和文档型数据库作为存储的几种设计模式。

    A.关系型数据库设计模式1

    idnameparent_id
    1ANULL
    2B1
    3C1
    4D2

    上图表示了传统的设计方法之一,就是将树形结构的每一个结点作为关系型数据库中的一行进行存储,每一个结点保存一个其父结点的指针。

    • 优点:结构简单易懂,插入修改操作都很简单
    • 缺点:如果要获取某个结点的所有子结点,将是一件很恶心的事

    B.关系型数据库设计模式2

    idnameparent_idleftright
    1ANULL18
    2B125
    3C167
    4D234

    上图在模式1的基础上多了两列,left和right,相当于btree中的左右分支,分别存储了左右分支结点的最大值和最小值。

    • 优点:要查找一个结点的子结点很容易,只需要做一个范围查询就行了(比如B节点的子结点,只需要查询 id >=2 && id<=5)
    • 缺点:由于树结构存在在这里面了,所以添加或修改已存在结点将可能产生连锁反应,操作过于复杂

    C.文档型数据库设计模式1

    {
      "name": "A",
      "children": [
        {"name": "B", "children": [{"name": "D"}]},
        {"name": "C"}
      ]
    }

    将整个树结构存成一个文档,文档结构既树型结构,简明易懂。

    • 优点:简明易懂
    • 缺点:文档会越来越大,对所有结点的修改都集中到这一个文档中,并发操作受限

    D.文档型数据库设计模式2

    {"_id": "A", "children": ["B", "C"]}
    {"_id": "B", "children": ["D"]}
    {"_id": "C"}
    {"_id": "D"}

    将每个结点的所有子结点存起来

    • 优点:结构简单,查找子结点方便
    • 缺点:查找父结点会比较麻烦

    E.文档型数据库设计模式3

    {
      "leaf": "A",
      "children": [
        {"leaf": "B", "children": [{"leaf": "D"}] },
        {"leaf": "C"}
      ]
    }
    {"_id": "A", ...}
    {"_id": "B", ...}
    {"_id": "C", ...}
    {"_id": "D", ...}

    充分利用文档型存储schema-less的优点,先利用上面C方案存存储一个大的树形文档,再将每一个结点的其他信息单独存储。

    • 优点:操作方便,结构上的操作可以直接操作大的树形文档,数据上的操作也只需要操作单条数据
    • 缺点:对所有结点的修改都集中到这一个文档中,并发操作受限
    展开全文
  • NoSQL:文档数据库

    千次阅读 2020-10-12 13:24:56
    文档”是文档数据库中的主要概念。此类数据库可存放并获取文档,其格式可以是XML、JSON、BSON等,这些文档具备可述性(self-describing),呈现分层的树状结构(hierarchical tree data structure),可以包含映射...
  • 目录 关系数据库 ACID特性 关系数据库的三范式 非关系型数据库 VS 文档型数据库 ...1. 文档型数据库 ...关系数据库(Relational Database)是建立在关系模型基础上的数据库,借助...而文档型数据库是一种非关系型数据.
  • 文档型数据库是一种非关系型数据库,非关系型数据库(Not Only SQL,NoSQL)正好与关系型数据库相反,它不是建立在“关系模型”上的数据库。文档型数据库的典型代表是 MongoDB。 我们本课时的面试题是,关系型...
  • 常用数据库排名及分类介绍

    万次阅读 多人点赞 2020-07-16 17:57:33
    DB-Engines:2019年6月全球数据库排行 DB-Engines 数据库流行度排行榜 6 月更新已发布,排名前二十如下:总体排名和上个月相比基本一致,其中排名前三的Oracle、MySQL 和 Microsoft SQL Server 也是分数增加最多的...
  • 是普通一个搜索负载和并发太弱了,优化好了搜索速度倒是不慢,但是一个搜索占的资源太多了(比如一个千万级别的表即使搜索索引内存和CPU等资源也瞬间大量占用,而文档型数据库就占用资源很少),而且添加和更新操作...
  • 在文档型NoSQL数据库出现之前,许多开发者一直绞尽脑汁思考,希望能想出更好的处理关系型数据库技术的方法,如今他们可能要跳出那种...本文将介绍关系型数据库和分布式文档型数据库的区别以及在应用开发上的一些建议。
  • (Notes的结构非常象Access数据库,所以我以Access数据库为例介绍): 类似: (1)Notes是一个文档型数据库,它的数据是以文档的形式存放的。Access是一个关系型数据库,它的数据是以记录的形式...
  • mongodb文档型数据库特点介绍

    千次阅读 2015-07-08 16:37:06
    mongodb文档型数据库特点介绍
  • 【TechTarget中国原创】DB-Engines网站专门提供数据库管理系统流行度的排名信息,这个排名主要根据5个因素来进行:Google以及Bing搜索引擎的关键字搜索数量、Google Trends的搜索数量、Indeed网站中的职位搜索量、...
  • 文档型数据库CouchBase应用实践

    万次阅读 2014-11-08 23:10:28
    在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度。 现有 Cache 系统的特点 目前业界使用得最多的 Cache 系统主要是 memcached 和 redis。...
  • 1.NoSQL数据库分为四大类:分别是键值存储数据库,列存储数据库,文档型数据库以及图形数据库。本文主要的记录MongoDb,它是一个基于分布式文件存储的数据库,可以说是非关系型数据库中最像关系型数据库的。主要的...
  • 一 NoSQLNoSQL,泛指非关系型数据库。(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相...
  • 关系型数据库 关系型数据库: 关系模型中的常用概念 优点 不足 非关系型数据库 非关系型数据库: 非关系型数据库结构 优点 不足 分类 CAP 理论 关系型与非关系型数据库的比较 最近的数据库排名 关系...
  • 文档型数据库MongoDB 入门篇

    千次阅读 2020-04-16 14:25:16
    它介于关系数据库和非关系数据库之间,是非关系型数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似JSON 的BSON 格式,因此可以存比较复杂的数据类型。 特点 MongoDB最大的特点是它...
  • MongoDB2.1、安装启动2.1.1、下载安装2.1.2、后台启动2.1.3、查看是否启动2.1.4、如果开了外网端口,用浏览器查看是否外网访问2.2、常用命令2.2.1、连接mongo2.2.2、显示数据库列表2.2.3、显示表单(集合)列表2.2.4...
  • 首先 文档数据库 和 键值数据库 都是 NoSQL 第二 文档数据库 最典型的是 MongoDB 而 键值数据库 最典型的是 Redis 第三 文档数据库 提供嵌入式文档 这对于非规范化非常有用 文档数据库将经常查询的数据存储...
1 2 3 4 5 ... 20
收藏数 215,426
精华内容 86,170
关键字:

文档型数据库