数据库与存储系统(二) | 青训营笔记

123 阅读2分钟

今天内容有大量的存储系统和数据库,不要搞混

单机存储

单机存储 = 单个计算机节点上的存储软件系统,一般不涉及网络交互
两个典型的单机存储系统 -> 本地文件系统key-value存储

  • 本地文件系统 image.png

  • key-value存储

image.png

分布式存储

分布式存储 = 在单机存储基础上实现了分布式协议,设计大量网络交互
两个经典的分布式存储系统 -> 分布式文件系统分布式对象存储

所以分布式存储要更关注网络交互的有效性和网络交互的性能。

  • 分布式文件系统 image.png

  • 分布式对象存储 image.png

单机数据库

单机数据库 = 单个计算机节点上的数据库系统
事务在单机内执行,也可能通过网络交互实现分布式事务

单机关系型数据库

image.png image.png

单机非关系型数据库

关系型数据库一般直接使用SQL交互,而非关系型数据库交互方式各不相同
非关系型数据库的数据结构千奇百怪,没有关系约束后,schema相对灵活
不管是否关系型数据库,大家都在支持SQL(子集)和“事务”

  • Elastic search

    • 面向【文档】存储
    • 文档可序列化成JSON,支持嵌套
    • 存在【index】,index = 文档的集合
    • 存储和构建索引能力依赖Lucene引擎
    • 实现了大量搜索数据结构&算法
    • 支持RESTFUL API、也支持弱SQL交互
  • mongoDB

    • 面向【文档】存储
    • 文档可序列化成JSON/BSON,支持嵌套
    • 存在【collection】,collection = 文档的集合
    • 存储和构建索引能力依赖wiredTiger引擎
    • 4.0后开始支持事务(多文档、跨分片多文档等)
    • 常用client/SDK交互,可通过插件转译支持SQL
  • Redis

    • 数据结构丰富(hash表、set、zset、list)
    • C语言实现,超高性能
    • 主要基于内存,但支持AOF/RDB持久化
    • 常用redis-cli/多语言SDK交互

最后还讲了分布式数据库解决的问题 ↓

  • 解决了容量问题(分布式池化技术)
  • 解决了弹性问题
  • 解决了性价比问题

个人总结

今天学习的各种不同的存储系统和数据库系统的实现,以及分布式的技术,包括为什么使用分布式和分布式的优点,对数据库的选择上有了进一步理解。