1

それは明らかに多くの答えがある単純な質問です。

調査結果は、次の範囲に及びます。

a. Basho のドキュメントによると 22 バイト: http://docs.basho.com/riak/latest/references/appendices/Bitcask-Capacity-Planning/

b. ここに 450~ バイト: http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-August/005178.html http://lists.basho.com/pipermail/riak-users_lists.basho .com/2011-May/004292.html

c. また、オーバーヘッドが 45 から 200 バイトの範囲にあるという逸話的な記録もあります。

これに対する明確な答えがないのはなぜですか?私はそれが複雑な問題であることを理解しています - 上記のメーリングリストのエントリの1つがそれを明確にしています! -しかし、一貫した球場を考え出すことさえ難しいですか? 芭蕉の文書がこれについて明確でないのはなぜですか?


キーのオーバーヘッドに基づいてロジックを構築する方法に関連する別の問題があります (多くの小さな値を格納するのではなく、大きな構造でそれらを「収集」する)、それは別の問題だと思います。

4

2 に答える 2

1

静的オーバーヘッドは、C 構造体のサイズであるため、キャパシティ プランナーでは 22 バイトと記載されています。そのページに記載されているように、キャパシティ プランナーはサイジングの大まかな見積もりを提供しているだけです。

あなたがリンクしているニコによるメーリングリストの古い投稿は、おそらくあなたが見つけることができるbitcaskの内部の最も完全な説明であり、正確です. エントリへのポインターの 8 バイトと、バケット/キー ペアの 13 バイトの erlang オーバーヘッドを計算すると、64 ビット システムでは 43 バイトになります。

率直な答えがないということについては... 実際に (電子メール、メーリング リスト、IRC、伝書鳩などを介して) 私たちに尋ねると、常に実際の答えが得られます。

于 2013-03-05T14:57:06.647 に答える
0

Bitcask では、すべてのキーをメモリに保持する必要があります。私が見る限り、a) で参照されているオーバーヘッドは、この要件のためにクラスター全体で必要となる RAM bitcask の総量を見積もる際に使用されるものです。

データをディスクに書き込むとき、Riak はベクトルクロックなどのさまざまなメタデータとともに実際の値を保存します。b) に記載されている 450 バイトについて言及している投稿は、ディスク上のストレージ オーバーヘッドの推定であるように思われるため、おそらく他のバックエンドにも当てはまるでしょう。

ニコの投稿には、適切で正確な説明が含まれているようです。

于 2013-03-05T16:24:34.050 に答える