SSTableとは何ですか?


回答:


105

ソートされた文字列テーブル(googleから借用)は、キーでソートされたキー/値文字列ペアのファイルです。


4
さらに別の優れたSO Cassandra回答をありがとう!:ところで、あなたはこの質問見てきましたstackoverflow.com/questions/2573106/...
knorv

一般的に不変ですか?
ディーンJ

1
はい、sstableは設計により不変です-これは素晴らしい機能です
Schildmeijer

それでは、どのようにソートして不変にすることができますか?
xjcl

56

「SSTableは、キーと値の両方が任意のバイト文字列である、キーから値への永続的な順序付けされた不変のマップを提供します。指定されたキーに関連付けられた値を検索し、すべてのキー/値のペアを反復する操作が提供されます指定されたキー範囲。内部的に、各SSTableには一連のブロックが含まれています(通常、各ブロックのサイズは64KBですが、これは構成可能です)ブロックインデックス(SSTableの最後に格納)を使用してブロックを特定します;インデックスがロードされますSSTableが開かれたときにメモリに読み込まれます。ルックアップは単一のディスクシークで実行できます。まず、メモリ内インデックスでバイナリ検索を実行して適切なブロックを見つけ、次にディスクから適切なブロックを読み取ります。オプションで、SSTableメモリに完全にマッピングできるため、ディスクに触れることなく検索とスキャンを実行できます。」


4
「ディスクに触れていない」->「ディスクに触れていることに気付かずに」。メモリマップドIOは、実際のIOをOSに委譲するため、非常に便利な手法です。キャッシュで適切に機能できる場合(特に、複数のプロセスが同じファイルを共有する場合)はそうです。しかし、それはあなたがそれを制御できないという欠点があります。ページがメモリに常駐していない場合、スレッドはブロックし、他の操作を実行できません。「非同期IO」とは対照的です。IOが保留中にコールバックを登録し、同じスレッドで他のことを実行できます。
ithkuil

2
@ithkuil:特定のページがメモリ内にあるか、ディスクにコミットされていることを保証できるようになるまで、メモリマップIOを完全に制御できます(ページにあることが保証されていないページのための余地はまだあります)メモリが非常によくできます)。これが、mlock()、msync()、MAP_LOCKEDなどの不思議なことのすべてです。また、mincore()を使用してページインされているものとされていないものを理解することもできます。
クリストファースミス

2
@ChristopherSmith:はい、そうです、それを制御する方法があります。ただし、通常は、重要なパフォーマンスセクション(リアルタイム)またはセキュリティ関連の問題(メモリ内のパスワードがディスク上でスワップされるのを回避するなど)に使用されます。メモリマップファイルは、どれだけメモリに保持するかを決定する必要がないため、非常に便利です。それ以外の場合は、mmapなしでメモリ内のファイル全体を読み取るだけで、同じ効果を得ることができます。実際、私はcassandraのコードを調べました。唯一の呼び出しはmlockall(MCL_CURRENT);起動時に行われます。次も参照してください:goo.gl/AEgPM
ithkuil

4
上記の引用はBigTable論文からのものです。
ShreevatsaR

4

タブレットはSSTablesの形式で保存されます。

SSTable(GFSに直接マップされる)は、キーと値に基づく不変のストレージです。データのチャンクを保存します。各チャンクは64KBです。

定義:

  • キーのインデックス:キーと開始場所
  • チャンクはGFSのストレージユニットであり、レプリカ管理はチャンクによる

3
  • SSTable(eng。ソートされた文字列テーブル)は、キーでソートされたキー/値文字列ペアのファイルです。

  • SSTableは、キーから値への永続的な順序付けされた不変のマップを提供します。キーと値の両方が任意のバイト文字列です。

  • 内部的には、各SSTableには一連のブロックが含まれています(通常、
    各ブロックのサイズは64KBですが、これは構成可能です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.