入门
系统-分层来描述现实中的模型
- 物理层-存储介质 | 操作系统/FS-文件系统EXT4/XFS | 数据库-数据表/行/文档 | 应用程序-类/对象
- 自下而上,上层用更简单易表述的模型来隐藏下层的复杂性
- 数据库系统屏蔽来磁盘文件的存取压缩细节,给应用程序展示了一些通用的数据模型
- 处理SQL数据模型 - ORM框架(hibernate等)
- 基于JSON的文档模型更契合面向对象的设计准则
BSON(一种二进制版本的JSON扩展)
- 易用性扩展(增加日期,二进制的支持)
动态模式
- 所有读写都是基于一种内部隐含的模式,模式采取按需变更而非提前声明
Feature
完备的索引
- 设计思路和一般关系型数据库差不多
- 特殊应用场景支持:地理空间,文本检索,TTL
跨平台
- C++ write
- 3.4之后不再支持32-bit X86
- 提供了多种语言实现的驱动-Java/C/C++/C#/Python/NodeJS
aggregation很强大
- 以文档化模型为基础设计,适合非结构化数据
- pipline/stage
replication set 副本集
- 类似MySQL的Master/Slave复制架构
- 海量数据处理-原生支持分布式计算能力
Advantage
易用
- 变更文档结构无需执行DDL变更语句,方便业务平滑升级
高性能
- 3.0-WiredTiger存储引擎(基于内存的二级缓存提供了高速读取数据的能力,根据磁盘I/O特点做了缓冲式写入)
高可靠
- 单个MongoDB节点-开启Journal机制实现断电保护
- 集群节点-副本集架构(节点宕机,秒级切换)
高可扩展
- 分片的集群架构
社区支持
Difficult
- 关系型数据库思维转变,关注段放在系统未来的扩展能力,专注做好表设计,访问模式和性能的权衡
- 事务-4.0之后支持(一致性要求高-金融交易类)
类比SQL模型
类比
database(数据库)- 逻辑上名称的空间
collection (集合) - SQL中的表
document(文档)- 相当于数据表中的一行
field(字段)- 文档中的一个属性,相当于column(列)
index(索引)- 独立的检索式数据结构
_id - 相当于SQL中的primary key
view(视图) - 看作虚拟的集合,3.4版本中开始提供,通过聚合管道技术实现
$lookup(聚合操作)- 类似table join表链接的聚合操作符
差异
- 半结构化(用的字段无需声明,支持多级嵌套,数组等灵活的数据类型)+弱关系(没有外键约束,也没有强大的表连接能力)
类SQL语句
- ANSQL
安装
包含的二进制程序
- mongod-数据库服务启动程序
- mongo-数据库客户端shell程序
- mongostat-数据库性能监控工具
- mongotop-热点表监控工具
- mongodump-数据库逻辑备份工具
- mongorestore-数据库逻辑恢复工具
- mongoexport-数据库导出工具
- mongoimport-数据库导入工具
- bsondump-BSON格式转换工具
- mongofiles-GridFS文件工具
mongo shell
- mongodb是用来SpiderMonkey作为内部JavaScript引擎,3.2之前用的V8
- –eval 非交互式
操作
可见另外一篇博文 - mongodb
卸载
1 | service mongod stop |