关系型数据库首选 mysql
文档型数据库首选 mongodb
内存型数据库首选 redis
数据库的主要功能:
1.存取
(主要技术有: 内存读写,文件读写,分布式文件读写,事务读写, 容灾备份,主从复制,消峰读写 ,读写锁保护,脏数据处理,读写分离 ,索引优化,物理逻辑分区 等等)
2.分析
( 选取字段 ,条件过滤, 分组, 统计, 排序, 索引优化, MapReduce等 )
这三种数据库必须学习,因为各有特点:
- mysql特色 sql语言 ,学数据库必须先学 sql ,学习数据库 建表,建字段. 建索引,建函数,建触发器,建分区, 读取记录,条件过滤 ,分组,汇总,统计等等基础知识
- mongodb 基于数据库基本知识, 结合json结构, 重新理解数据库的操作方法, mongodb 分布式集群也很有特点,这个初学者不需要管
- redis 简单的键值对操作库,因为是内存数据库,所以很快, 学习java的人会觉得就像一个hashmap hashset arraylist的集合库,只是可以当作数据库使用
- postgresql 因为功能强大 既有mysql的特点,又有mongodb的特点
但是我觉得反而没有特色
对比项 | mysql | mongodb |
---|---|---|
表设计 | 结构严谨 | 字段容易变更 |
支持复杂表关系 | 是 | 否 |
支持复杂系统结构 | 是 | 否 |
统计分析语法 | 容易 | 难 |
适用开发语言 | java python c++ nodejs | python nodejs |
注意: 开发语言: mongodb 存储的json 这一点 nodejs 和python 确实有优势
数据库用途:
- redis: 数据缓存库,防止主机掉电内存数据丢失,也可以用于数据量比较少,对读写性能要求比较快的场景;
- mongodb: 项目的数据结构比较简单(集合(对象表)小于10张), 但数据量比较大的场景;
- mysql: 项目数据结构比较复杂的场景(对象表大于10张)
注意: 特别强调的是 单一项目 的数据结构,
如果多个项目共用一个数据库,每个项目只有几张集合,也算结构比较简单,可以用mongodb数据库,但是一定要注意区分项目间的集合名称,避免混乱