0

そのため、現在mysqlにあるテーブルがありますが、まもなくnosqlシステムに転送されます。そこで、テーブルの正規化を取り除いたところ、データの重複がありましたが、各行でIDの1つが変更され、残りのデータは一定です。すべての行はIDAを介して接続されます。IDBは行ごとに変更され、ユーザーIDはIDAのすべての行で同じです。

次に、ユーザーIDを使用して2つの行グループを取得する必要があります。ただし、ID Bの数はAのグループごとに可変であるため、各ID Aによってすべてグループ化された行数を可変にすることができます。これまでは一度に1つのグループを表示していたので、IDに基づいて選択しました。 A、ユーザーIDで2セットを取得してみる必要があります...

私はこれを行う方法を見つけることができないようです...私はSQLについてすべてを知っているわけではありませんが。mysqlでこれを行うにはどうすればよいですか?そして、nosqlで少しシステムに移動すると?ご不明な点がございましたら、お気軽にお問い合わせください。

4

1 に答える 1

1

行には、IDがAとBの2つの列で構成される複合キーがあると言っていると思います。これが正しいと仮定すると、Cassandraでの実行方法は次のようになります(2つのアプローチがあります)。

CQLを使用して、元のMySqlテーブルの他の列とともに、AとBの2つの主キーをこの順序で持つようにテーブルを宣言できます。

行キーがidAであり、そのIDAの一意のIDBごとに列を持つ列ファミリーを作成することもできます。列の名前はidBの値になり、その列の値は残りのMySQL行値の値(またはシリアル化された値)。IDBは文字列値である必要はないことに注意してください。id Aの任意の値に対して、これにより、そのidA値に固有のidB値と同じ数の列を持つCassandra列ファミリー行が生成されます。これは「動的列ファミリパターン」と呼ばれます。

最初のアプローチを採用すると、基本的に2番目のアプローチを隠蔽して実行することになります(過度の単純化アラート)。

于 2012-08-19T21:08:42.103 に答える