【问题标题】:What is an SSTable?什么是 SSTable?
【发布时间】:2011-02-04 06:47:49
【问题描述】:

在 BigTable/GFS 和 Cassandra 术语中,SSTable 的定义是什么?

【问题讨论】:

标签: computer-science nosql cassandra bigtable gfs


【解决方案1】:

Sorted Strings Table(借自google)是一个key/value字符串对的文件,按key排序

【讨论】:

  • 感谢另一个出色的 SO Cassandra 答案!顺便说一句,你有没有看到这个问题:stackoverflow.com/questions/2573106/…
  • 它通常是不可变的吗?
  • 是的,sstable 在设计上是不可变的——这是一个很棒的特性
  • 那怎么才能既排序又不可变呢?
  • @xjcl SSTable 段是不可变的。通过利用诸如 AVL 树之类的排序数据结构,排序行为是在内存级别上设计的。当您刷新磁盘上的内存时,您以排序格式写入它。一旦在磁盘上形成一个段,就无法对其进行编辑,因此它是不可变的。
【解决方案2】:

“SSTable 提供了一个从键到值的持久、有序的不可变映射,其中键和值都是任意字节字符串。提供操作来查找与指定键关联的值,并迭代所有键/​​值指定键范围内的对。在内部,每个 SSTable 包含一系列块(通常每个块的大小为 64KB,但这是可配置的)。块索引(存储在 SSTable 的末尾)用于定位块; index 在 SSTable 打开时加载到内存中。可以通过一次磁盘查找来执行查找:我们首先通过在内存索引中执行二进制搜索来找到适当的块,然后从磁盘中读取适当的块。可选,SSTable可以完全映射到内存中,这样我们就可以在不接触磁盘的情况下进行查找和扫描。”

【讨论】:

  • “不接触磁盘”->“不知道磁盘被接触”。内存映射 IO 是一种非常方便的技术,因为它将实际 IO 委托给操作系统,假设它可以很好地缓存(尤其是当多个进程共享同一个文件时)。但它的缺点是你无法控制它。如果页面不常驻内存,线程会阻塞,不能执行其他操作;将其与“异步 IO”进行对比,您可以在其中注册回调并在同一线程中执行其他操作,而 IO 处于挂起状态。
  • @ithkuil:您绝对可以控制内存映射 IO,至少能够确保某些页面在内存中或已提交到磁盘(页面仍有摆动空间不能保证在内存中,但很可能是)。这就是 mlock()、msync() 和 MAP_LOCKED 之类的奇妙事物的全部意义所在。您还可以通过 mincore() 了解当前哪些是分页,哪些不是分页。
  • @ChristopherSmith:是的,你是对的,有办法控制它。但是,通常它用于关键性能部分(实时)或安全相关问题(例如避免在磁盘上交换内存密码)。内存映射文件非常有用,正是因为您不必决定要在内存中保留多少文件。否则你可以在没有 mmap 的情况下读取内存中的整个文件并达到相同的效果。事实上,我只是通过了 cassandra 代码。唯一的电话是mlockall(MCL_CURRENT); 在启动时完成。另见:goo.gl/AEgPM
  • 以上引用来自the BigTable paper
【解决方案3】:

tablet 以 SSTables 的形式存储。

SSTable(直接映射到 GFS)是基于键值的不可变存储。它存储数据块,每个数据块大小为 64KB。

定义:

  • 键的索引:键和起始位置
  • Chunk是GFS中的一个存储单元,副本管理是按chunk来的

【讨论】:

    【解决方案4】:
    • SSTable (engl. Sorted Strings Table) 是一个键/值字符串文件 对,按键排序。

    • SSTable 提供了一个持久的、有序的不可变映射,从键到 值,其中键和值都是任意字节字符串。

    • 在内部,每个 SSTable 都包含一系列块(通常
      每个块大小为 64KB,但这是可配置的)。

    【讨论】:

      【解决方案5】:

      SSTable 表示“排序的字符串表”,基于键值对。在 Cassandra 中,SSTable 是不可变的,并且是按键排序的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-29
        • 2021-12-15
        • 2014-07-21
        • 1970-01-01
        • 1970-01-01
        • 2018-05-19
        • 2015-06-06
        • 2018-09-15
        相关资源
        最近更新 更多