数据存储的目标

  • 高性能

    • 性能指标

      • 更高的吞吐率 - 满足日益增长的业务要求

        • 单位时间数据存储系统完成的操作数目
      • 更低的延迟 - 给用户提供更高的服务质量

        • 数据存储系统完成单个操作所需的时间
    • 软硬件协同设计

      • 硬件

        • 采用更快速的存储硬件

          • 存储金字塔

          • 硬件性能越好→成本越高→难以普及

          • 吞吐率越大→容量越小→限制系统能容纳的数据量

      • 软件

        • 单个存储设备性能有限→通过软件组合大量存储硬件→吞吐率越高

          • RAID, Redundant Array of Independent Disks 独立磁盘冗余阵列
        • 数据的局部性原理→缓存、预取等机制

          • 时间局部性

            • 缓存机制

              • 将经常访问的数据放置于cache

              • Linux文件系统:Page Cache, LRU算法

              • 数据中心:Memcached构建分布式缓存集群

          • 空间局部性

            • 预取机制

              • 将可能要用到的数据放置于cache

              • Linux文件系统:readahead预取算法

  • 高易用性

    • 应用能够方便地写入、读取数据

    • 通过数据存储接口实现

      • 块接口

        • 语义最简单,难以表达大部分应用的数据语义

        • 存储空间分割成大小相等的数据块,应用通过地址访问块数据

      • 键值接口

        • 易用性高于块接口

        • 键值对的集合

          • 键值对包括键和值,均变长

          • 应用通过键定位键值对从而增删改查

        • 扩展 - 二级索引 - 多个键查询同一个数据

      • 文件接口

        • 将数据组织成目录树结构

        • 文件 - 具有权限等属性

          • 目录文件

            • 目录下的普通文件以及目录文件的名字
          • 普通文件

            • 文件数据
        • 扩展 - 事务语义 - 多个文件操作的原子性

      • 数据共享

        • 不同位置的用户访问同一份数据

          • 网络化共享

            • NAS, Network Attached Storage 网络附接存储 - 局域网共享文件
          • 分布式存储系统

            • Tectonic
  • 高可靠性

    • 面对异常情况,数据不丢失,服务不中断

    • 数据冗余

      • 多副本

      • 纠删码

        • 多份数据通过编码计算校验块,分别存储在不同位置,无法访问时可以用其他数据和校验码计算得到

        • 更低的存储开销,更高的计算和恢复开销

    • 每个层级的可靠性

      • 存储设备层

        • LDPC等
      • 服务器层

        • RAID等
      • 集群

        • 分布式多副本机制

        • 分布式纠删码机制

      • 周期性地备份、归档数据

  • 高性价比

    • 存储分级

      • 热数据在高速设备(SSD)

      • 冷数据在低速设备(磁带)

  • 高安全性

  • 高可扩展性