0

私はそのようなデータベースを持っています:

  • 画像
    • id (整数)
    • 名前 (テキスト)
    • 画像 (ブロブ)
    • create_date (日時)
    • コメント (テキスト)
    • サイズ (整数)
    • ビュー (整数)

テーブルの画像には、メタ情報を含む jpg が含まれています。MySQL で (ビュー、サイズ、create_date で) ソートする機能があります。

Cassandraで同じことをする方法は?


次のようなデザインを試します: - 画像 - id (テキスト) - 名前 (テキスト) - 画像 (ブロブ)

  • image_by_size

    • id_image (テキスト)
    • サイズ (整数)
  • image_by_view

    • id_image (テキスト)
    • ビュー (整数)
  • image_by_create

    • id_image (テキスト)
    • create_date (タイムスタンプ)

しかし、以前に「id」を知らずに注文する方法がわからない場合...

CQL (最新バージョン) を使用して cassandra テーブルの最新のログ エントリを 2000 選択しましたが、これを自分の用途に移植する方法がわかりません...

4

1 に答える 1

0

1 つの解決策:

  • image_by_size

テーブル

CREATE TABLE image_by_size
(
   rowkey text, // arbitrary text, it can be 'IMAGE_BY_SIZE' for example
   size int,
   id_image text,
   PRIMARY KEY (rowkey,size,id_image)
);

サイズ別に画像を一覧表示するには:

 SELECT id_image FROM image_by_size WHERE rowkey='IMAGE_BY_SIZE' ORDER BY size DESC;
  • ビューごとのイメージ

テーブル

   CREATE TABLE image_by_view
    (
       rowkey text, // arbitrary text, it can be 'IMAGE_BY_VIEW' for example
       view int,
       id_image text,
       PRIMARY KEY (rowkey,view,id_image)
    );

ビューごとに画像を一覧表示するには:

SELECT id_image FROM image_by_view WHERE rowkey='IMAGE_BY_VIEW' ORDER BY size DESC;
  • 作成による画像

テーブル

  CREATE TABLE image_by_create
    (
       rowkey text, // arbitrary text, it can be 'IMAGE_BY_CREATE_DATE' for example
       create_date timestamp,
       id_image text,
       PRIMARY KEY (rowkey,create_date,id_image)
    );

イメージを作成日別に一覧表示するには:

 SELECT id_image FROM image_by_create WHERE rowkey='IMAGE_BY_CREATE_DATE' ORDER BY create_date DESC;

1 つのテーブル ソリューション

サイズ、ビュー、およびタイムスタンプは数値であるため、1 つのテーブルのみを使用してこれらすべてにインデックスを付けることができます。

CREATE TABLE image_index
(
   index_type text, // 'IMAGE_BY_SIZE', 'IMAGE_BY_VIEW' or 'IMAGE_BY_CREATE_DATE'
   value bigint,
   id_image text,
   PRIMARY KEY (index_type,value,id_image)
);

サイズで画像を索引付けするには

INSERT INTO image_index(index_type,value,id_image) VALUES('IMAGE_BY_SIZE',size_as_long,id_image);

ビューごとに画像にインデックスを付けるには

INSERT INTO image_index(index_type,value,id_image) VALUES('IMAGE_BY_VIEW',view_as_long,id_image);

作成日で画像を索引付けするには

INSERT INTO image_index(index_type,value,id_image) VALUES('IMAGE_BY_CREATE_DATE',create_timestamp_as_long,id_image);
于 2013-09-01T19:42:44.790 に答える