0

我有一个这样的数据库:

  • 图片
    • 标识(整数)
    • 名称(文字)
    • 图像(斑点)
    • create_date(日期时间)
    • 评论(文字)
    • 大小(整数)
    • 视图(整数)

表格图像包含带有元信息的 jpg。我有能力在 MySQL 中排序(按视图、大小和 create_date)

如何对 Cassandra 做同样的事情?


我尝试了一些设计,例如:-图像-id(文本)-名称(文本)-图像(blob)

  • image_by_size

    • id_image(文本)
    • 大小(整数)
  • image_by_view

    • id_image(文本)
    • 视图(整数)
  • image_by_create

    • id_image(文本)
    • 创建日期(时间戳)

但是当我不知道如何订购之前不知道“id”时......

我使用 CQL(最新版本)在 cassandra 表中阅读了Select 2000 最近的日志条目,但我不知道如何将其移植到我的使用中......

4

1 回答 1

0

一种解决方案:

  • 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;

一桌解决方案

由于大小、视图和时间戳都是数字,因此可以只使用一张表来索引所有这些

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 回答