これかどうか知りたいのですが:
$column_family->get('row_key', $columns=array('name1', 'name2'));
私が今使用しているより柔軟な取得よりも高速です:
$column_family->get('row_key');
もちろん、方法1の実装は困難ですが、負荷/帯域幅/遅延が少なくなりますか?
Cassandraはmysqlではないため、そこでいくつかの点が異なるのは当然のことです。:)
この場合、Cassandraのスパース行ストレージモデルは、Cassandraが行レベルの列エントリを逆シリアル化してチェックする必要がないため、列の数が少ない場合は全行バージョンの方が高速になることを意味します。
もちろん、列の数が多い場合は、必要以上に逆シリアル化するという余分な作業が再び支配的になります。
結論:これを心配することは、ほぼ確実に時期尚早の最適化です。そうでない場合は、テストします。
特に、多数の列を含む大きなテーブルで作業する場合は、最初の方が高速です。
とという2つの列しかない場合でも、それらの名前を指定するname1
とname2
、MySQL側のテーブル構造から列名が抽出されないようにする必要があります。*
したがって、セレクターを使用するよりも高速である必要があります。
ただし、 PHPでmicrotime()を使用して大きなテーブルに対して結果をテストすると、私が話していることがわかります。もちろん、テーブルに20以上の列があり、それらをすべて抽出したい場合は、それらすべての*
列名をリストするよりも簡単に配置できますが、速度の点では、列のリストは少し速くなります。
この結論を確認する最良の方法は、自分でテストすることです。