1

ビジネス データを mysql からボルトに保存する必要があります。データは次のmap[string]stringようになります。

{"id": "<uuid>", "shop_id":"12345678", "date": "20181019"... }

データ量が膨大で増えていくので、データを独立したファイル(201810.dbなど)に分割する以外は、最終的なファイルをできるだけ小さくしたいと考えています。したがって、「ルックアップ テーブル」を使用して、自分でデータをエンコードする予定です。つまり、すべてのデータ項目ですべてのキーが同じになるため、id=1、shop_id=2 などをマップして、キーが 1~ 2 バイト。また、値についても同じエンコーディングを行うため、非常に冗長な列 (つまり、select distinct は少数の結果しか返さない) がボルト ファイル内で消費するスペースが少なくなります。

私の質問は次のとおりです。ボルトはどのようにキーと値を保存しますか? 上記の方法を使用すると、最終的にスペース効率を改善できるように、「ページごとに」より多くのオブジェクトをボルトで保存できますか?

それとも、1 バイトのデータを格納するだけでもページ全体を消費するように「ページ」を利用しているのでしょうか。この場合、「完全に埋め尽くす」ためには、結合したサイズがボルト ページよりも大きくなるまで、一連のオブジェクトを手動でグループ化する必要がありますか? もちろん、これはランダム アクセスに悪影響を与えますが、私のアプリケーションでは、コーディングの複雑さを犠牲にしてこれを克服できます。

4

0 に答える 0