
数据库相关¶
NoSQL: Not Only NoSQL
大数据存储问题:
-
并行数据库:水平切分,分区查询
-
NoSQL 数据库管理系统:非关系模型、分布式、不支持 ACID 数据库设计范式
- 简单数据模型
- 元数据和数据分离
- 弱一致性
- 高吞吐量
- 高水平扩展能力和低端硬件集群
-
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
}