まず、英語で失礼します。それは私の母国語ではありません。SQLデータベースをCassandraに移動する作業をしていますが、解決できない質問があります。曲を保存するSQLテーブルがあるとしましょう。各曲には主キーとしてIDがあり、キーで指定された行のフィールドに保存されているすべての関連データにアクセスできます。著者、性別、肩書きなど、いくつかの異なる基準を使用して検索するためのインデックスもいくつかあります。
これをCassandraスキーマに移動することを考えるとき、私は同等の列ファミリーを作成できるという考えを回避します。ここで、曲IDは行キーであり、曲属性は列です。次に、5つまたは6つの手動インデックスを作成して、著者、タイトル、性別などで検索できます。著者、タイトル...は列キーになり(複合列名を使用して、一意に保つためにいくつかのデータを追加します)、値は、各行がによって識別される静的列ファミリーで検索するための曲IDになります。曲ID。
しかし、私はここに私の疑いが現れます。何が良いですか:各インデックスCFはIDのみを格納するか、すべての属性を格納しますか?最初のオプションでは、必要なメモリの量を減らすことができますが、各曲の属性を取得するには、(少なくとも)2回の読み取りが必要です。2番目のオプションでは、インデックスごとに同じ情報を1回繰り返すため、より多くのメモリが必要ですが、1回の読み取りで、必要なすべての属性を取得できます。これがより高速なスキーマである場合、必要な追加のメモリを想定できると思いますが、実際にはより高速になりますか?データベースが大きくても動作が遅くなることはありませんか?または、Cassandraが行を格納する方法と、2回の読み取りが原因で、インデックスCFによって指定された各行を検索するのが遅い操作ですか?
別の詳細:2番目のオプション(「インデックス」として機能するCFにすべての属性を格納する)を使用すると、最初のオプションを使用するよりも約80%多くのメモリが必要になると計算しました(CFは実際にインデックスとして機能して適切なデータを検索します)曲の「メイン」CF)。
どんな助けでも大歓迎です。
前もって感謝します!