数据库 #
知识点 #
数据格式
- 结构化数据:以规定的形式保存数据,数据可以直接拿来使用。通常一个数据只会出现在一个地方,所以更新数据时只要更新一个地方。
- 非结构化数据:数据格式多种多样,所以使用前需要先进行预处理。
- 半结构化数据:通常以XML或JSON格式保存,有一定扩展性。
数据库一览
- SQL
- 关系型数据库:通常支持事务,适合交易等有强一致性要求的业务。可以将关系交由应用系统维护来提升性能。
- MySQL
- 关系型数据库:通常支持事务,适合交易等有强一致性要求的业务。可以将关系交由应用系统维护来提升性能。
- NoSQL: Not Only SQL。NoSQL数据库通常无需人工干预即可实现动态扩展。
- 文档型数据库:使用了半结构化数据,可以保存多列的同时保存关系(关系型数据库存在阻抗不匹配的问题),适合模式经常需要修改的情况。常用场景有用户评论、搜索、商品详情页等。
- MongoDB、ElasticSearch(全文数据库)
- 宽列数据库:每次读取可以只选取某些列而不是整行读取,适合据聚合查询和大数据分析。
- Cassandra、HBase
- 键值对数据库:适合简单存储,性能优先,频繁访问的情况。常用场景有TopN、临时保存等。
- Redis、Memcached
- 图形数据库:适合维护复杂关系(关系型数据库复杂关联查询会影响性能),推荐系统。常用场景有朋友关系、喜欢/购买的东西间的联系、出行路径规划、谷歌页面权重排名等。
- Neo4j
- 时序数据库:适合分析和推断结论,处理高频次的连续数据流。常用场景有物联网,传感器监测等。
- 文档型数据库:使用了半结构化数据,可以保存多列的同时保存关系(关系型数据库存在阻抗不匹配的问题),适合模式经常需要修改的情况。常用场景有用户评论、搜索、商品详情页等。
- Other
- 应用内缓存:Caffeine、Ehcache、Guava Cache
- 数据库中间件:Sharding-Sphere、MyCat、canal、TDDL
实际开发系统时一般选择混合持久化方案,根据系统功能需求同时使用多种数据库。