私は RDBMS のバックグラウンドを持ち、バックエンドとして Cassandra を使用してアプリを設計していますが、自分の設計の有効性とスケーラビリティについて確信が持てません。
私は、本/映画/などのある種の評価/フィードバックアプリに取り組んでいます。Cassandra には柔軟な列ファミリー (スパース構造) の概念があるため、次のスキーマを使用することを考えました。
user-id (row key): book-id/movie-id (dynamic column name) - rating (column value)
このようにすると、本質的に行キーに関連付けられていなくても、何百万もの列 (RDBMS では行) を持つことになります。たとえば、次のようになります。
user1: {book1:Rating-Ok; book1023:good; book982821:good}
user2: {book75:Ok;book1023:good;book44511:Awesome}
すべての列ファミリーが 1 つのファイルに格納されているため、これがスケーラブルな設計であるかどうか (またはまったく設計ではない!) はわかりません。さらに、 のようなクエリがあるかもしれません"pick all 'good' reviews of 'book125'"
。どのようなアプローチを使用する必要がありますか?