数据存储的分层思想

概述

系统分层在软件设计中屡见不鲜,从OSI网络7层架构到引用软件的MVC架构等不不体现分层的软件设计思想。软件分层可以提高系统的可维护性,降低每一层的系统的复杂度,并一定程度上起到故障隔离效果。

存储基本原理

从最基础上来说,数据存储主要解决两件事情:“你提供一些数据存储系统将这些数据保存,当你之后要这些数据时,存储系统可以将数据返会给你”。简而言之:

  • 数据存取的交互语言(接口)
  • 数据存储的方式结构(数据结构)
    而存储结构又决定了能够提供的交互接口以及适用的应用场景

接口

存储系统提供给用户的接口界面可以分为两个部分

  • 数据模型:即用户交互的数据形式,如关系型数据库就使用的表格的数据模型
  • 接口规范:即用户与存储系统交互的语言,如:SQL语言。对于比较简单交互接口可能没有提供这种语言

存储的接口,一般可以分为几类:

  • Key/Value: 如:leveldb
  • SQL on Table: mysql等关系数据库,Hive/impala等也提供了基于table的sql接口
  • 自定义表格接口:ES提供的Json查询语句, Hbase原始接口
  • POXIS文件接口:ext4、xfs
  • 自定义文件接口:hdfs
  • 块存储接口:ceph rdb
  • 对象存储接口:S3 OSS

数据结构

数据实际在系统内部的组织形式,具体可以分为几类:

  • BTree: innodb、MyISAM
  • Hash: Bitcask
  • LSM: leveldb、Rocksdb
  • blob/chunk/object: ceph、hdfs

案例分析

通过对现有一些存储分析来看一下分层在存储中的使用

数据存储层次.jpg
存储系统 存储结构 数据模型 接口规范
ext4 inode+block 文件 POSIX
hdfs block 文件 自定义接口
hbase LSM+Column-Oriented table 自定义接口
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。