0%

你好 MongoDB

logo

数据库相关

NoSQL: Not Only NoSQL

大数据存储问题:

  1. 并行数据库:水平切分,分区查询

  2. NoSQL 数据库管理系统:非关系模型、分布式、不支持 ACID 数据库设计范式

    • 简单数据模型
    • 元数据和数据分离
    • 弱一致性
    • 高吞吐量
    • 高水平扩展能力和低端硬件集群
  3. NewSQL 数据库管理系统

    • 代表产品:Clustrix、GenieDB、ScaleBase、NimbusDB、Drizzle

数据存储模型分为:

  • 列式存储模型:Hadoop
  • 文档数据模型:Elastic、MongoDB
  • 键值数据模型:Redis

文档模型相关:

  • 应用场景:非强事务需求的 web 应用
  • 数据模型:键值模型,储存为文档
  • 优点:数据模型无须实现定义,说白了就是每条文档可以想象成一张白纸,根据需求填充键值对,而不会像 MySQL 那样,加一个字段可能会牵一发而动全身

MongoDB

MongoDB 的名字从 “humongous” 而来,是一个具备高可扩展、高性能、开源、可以自由调整结构体、基于文档的 NoSQL 关系型数据库。

NoSQL 简介:https://www.runoob.com/mongodb/nosql.html

注意:安装后默认没有开启 auth。

安装后使用客户端程序 mongo 直接连接,支持 RESTful 风格的 address。

MongoDB 的 database 无需创建,通过 use testdb 可直接使用,而且是延迟创建的,当创建表(collections)时,才会真的帮你创建这个 database。

collections: 因为 MongoDB 是文档数据库,所以要把各个文档组合起来,一个文档就相当于 MySQL 中的一行数据,而多个文档组合起来就是 collections,相当于 MySQL 中的表。

很多常用命令查看这里,就不一一复制了:
https://www.runoob.com/mongodb/mongodb-create-database.html

MongoDB 会自动为每个文档维护一个 ID,第一个 ID 号是随机的,之后的根据第一个文档的 ID 顺序生成,使用 find 查询可以看到。

> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
{
        "_id" : ObjectId("56063f17ade2f21f36b03133"),   // 第一个 id 号是随机的,之后的根据第一个的 id 顺序生成
        "title" : "MongoDB 教程",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "菜鸟教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}