MongoDB 特性
什么是MongoDB?
什么是MongoDB?MongoDB是一个面向文档的NoSQL数据库,用于大容量数据存储。MongoDB是2000年代中期出现的一个数据库,属于NoSQL数据库。
MongoDB功能
- 每个数据库都包含集合,而集合又包含文档。每个文档可以有不同的字段数。每个文档的大小和内容可以彼此不同。
- 文档结构更符合开发人员如何用各自的编程语言构造类和对象。开发人员通常会说,他们的类不是行和列,而是有一个带有键值对的清晰结构。
- 正如NoSQL数据库简介中所看到的,行(或MongoDB中调用的文档)不需要预先定义模式。相反,可以动态创建字段。
- MongoDB中可用的数据模型允许您更容易地表示层次关系、存储数组和其他更复杂的结构。
- 可扩展性—MongoDB环境非常容易扩展。世界各地的公司都定义了集群,其中一些公司运行100多个节点,数据库中有大约数百万个文档。
为什么使用MongoDB?
下面是为什么应该开始使用MongoDB的几个原因
- 面向文档 – 由于MongoDB是一个NoSQL类型的数据库,因此它不使用关系类型格式的数据,而是将数据存储在文档中。这使得MongoDB非常灵活,能够适应实际的业务环境和需求。
- 即席查询 – MongoDB支持按字段、范围查询和正则表达式搜索。可以进行查询以返回文档中的特定字段。
- 索引-可以创建索引以提高MongoDB中搜索的性能。MongoDB文档中的任何字段都可以被索引。
- 复制-MongoDB可以为副本集提供高可用性。副本集由两个或多个Mongo DB实例组成。每个副本集成员可以随时扮演主副本或辅助副本的角色。主副本是与客户机交互并执行所有读/写操作的主服务器。辅助副本使用内置复制来维护主副本的数据。当主副本失败时,副本集会自动切换到辅助副本,然后成为主服务器。
- 负载均衡 – MongoDB使用sharding的概念,通过跨多个MongoDB实例拆分数据来横向扩展。MongoDB可以在多个服务器上运行,平衡负载和/或复制数据,以在硬件故障时保持系统的正常运行。
MongoDB和RDBMS之间的差异
以下是MongoDB和RDBMS之间的一些关键术语差异
RDBMS MongoDB 不同点
Table Collection 在RDBMS中,该表包含用于存储数据的列和行,而在MongoDB中,该结构称为集合。集合包含的文档依次包含字段,而字段又是键值对。
Row Document 在RDBMS中,该行表示表中的单个隐式结构化数据项。在MongoDB中,数据存储在文档中.
Column Field 在RDBMS中,该列表示一组数据值。在MongoDB中,这些被称为字段。
Joins Embedded documents 在RDBMS中,数据有时分布在不同的表中,为了显示所有数据的完整视图,有时会在表中形成一个连接来获取数据。在MongoDB中,数据通常存储在单个集合中,但使用嵌入式文档进行分隔。所以MongoDB中没有连接的概念。
除术语差异外,其他一些差异如下所示
- 关系数据库以增强数据完整性而闻名。这在MongoDB中不是一个明确的要求。
- RDBMS要求首先对数据进行规范化,这样可以防止孤立记录和重复的规范化数据,然后需要更多的表,这将导致更多的表联接,从而需要更多的键和索引。
随着数据库的增长,性能可能开始成为一个问题。这在MongoDB中不是一个明确的要求。MongoDB是灵活的,不需要首先对数据进行规范化。
https://mongoing.com/archives/25662
MongoDB Sharding 簡介
Sharding 為 MongoDB 所擁有的一種資料分散處理架構,簡單的說就是將資料分片 (Shard) 儲存到不同的機器中,最常應用在大數據的案例上。在海量資料的儲存情境上,垂直擴充架構是無法滿足的,必須透過水平擴充來實現。
Config Server
Config Server 是 MongoDB Sharding 架構中相當重要的一個角色,它存放了資料的 Metadata,包括透過 Shard Key 計算出來的索引,用來記錄每一個資料存放的 Shard 位置,好讓 Router 可以正確的 Query 資料,如果沒有這些索引,那麼每一個用來存放資料的 mongod 實體,就「純粹」只是獨立存放分散的資料,無法協同工作。Config Server 聽起來很重要對吧!?因此 Config Server 部署時必須要多台機器,在新版 3.2 之後也可以用 Replica Set 架設 Config Server。
https://blog.toright.com/posts/4552/mongodb-sharding-%E5%88%86%E6%95%A3%E5%BC%8F%E5%84%B2%E5%AD%98%E6%9E%B6%E6%A7%8B%E5%BB%BA%E7%BD%AE-%E6%A6%82%E5%BF%B5%E7%AF%87.html
MongoDB 的特性就是 Schemaless
。
使用關聯式資料庫時,需要透過 Relation(JOIN)找出目標資料。
使用 MongoDB 時,有關聯的資料常常會被儲存在 同一個 Document 中
。
BSON
上面有提到,Document 的長相是如 JSON
一般的 key-value
組合。
實際 MongoDB 在儲存資料時,使用的是較特殊的 BSON
格式。
使用 BSON 的優點包含:
- 在
空間儲存
上較有效率 - 有更多
type (資料格式)
可以使用 - 如後續會提到的
ObjectId
、Regular Expression
、Timestamp
等,都是 BSON 支援的格式 - BSON 支援的資料格式列表可以參考官方文件
總結
MongoDB 強大的原因之一在於其
資料儲存的彈性
。
由於不需要事先定義 Schema,因此我們可以很輕易的加入
、修改
資料!https://zh-tw.coderbridge.com/series/800ffff9f7524d35ac6ecc51fffda4b9/posts/fccb25a652444dfda38629965eac7c7d
留言
張貼留言