Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cassandra上tick数据的模式 概述_Cassandra_Time Series_Schema - Fatal编程技术网

cassandra上tick数据的模式 概述

cassandra上tick数据的模式 概述,cassandra,time-series,schema,Cassandra,Time Series,Schema,我想在cassandra中为财务数据确定正确的模式 数据和模式 我有以下csv格式的示例数据: SYMBOL,DATE,TIME,PRICE,SIZE A,2011-01-03,9:28:00,41.46,200 A,2011-01-03,9:28:00,41.46,100 A,2011-01-03,9:30:00,41.56,1300 A,2011-01-03,9:30:00,41.56,1300 A,2011-01-03,9:30:00,41.55,100 A,2011-01-03,9:30

我想在cassandra中为财务数据确定正确的模式

数据和模式 我有以下csv格式的示例数据:

SYMBOL,DATE,TIME,PRICE,SIZE
A,2011-01-03,9:28:00,41.46,200
A,2011-01-03,9:28:00,41.46,100
A,2011-01-03,9:30:00,41.56,1300
A,2011-01-03,9:30:00,41.56,1300
A,2011-01-03,9:30:00,41.55,100
A,2011-01-03,9:30:19,41.55,200
A,2011-01-03,9:30:23,41.5169,100
A,2011-01-03,9:30:29,41.44,66534
A,2011-01-03,9:30:29,41.45,225
A,2011-01-03,9:30:30,41.44,100
A,2011-01-03,9:30:30,41.43,100
A,2011-01-03,9:30:30,41.49,100
A,2011-01-03,9:30:30,41.45,200
我存储在下表中:

CREATE TABLE tickdata (
symbol text,
date date,
time time,
price float,
size int,
PRIMARY KEY ((symbol,date),time)
);
这是表的
选择
的一部分:

 symbol | date       | time               | price   | size
--------+------------+--------------------+---------+-------
      A | 2011-01-03 | 09:28:00.000000000 |   41.46 |   100
      A | 2011-01-03 | 09:30:00.000000000 |   41.56 |  1300
      A | 2011-01-03 | 09:30:19.000000000 |   41.55 |   200
      A | 2011-01-03 | 09:30:23.000000000 | 41.5169 |   100
      A | 2011-01-03 | 09:30:29.000000000 |   41.45 | 66534
用例 数据将被写入Cassandra一次,并且主要在
日期
符号
条件下读取,例如给定时间段内的一组符号

问题
  • 元组
    (符号、日期、时间)
    不是正确的
    主键,因为我的粒度限制为秒。因此,
    复制,例如,在导入过程中,由于键重复,会删除csv的第二行如何保存记录

  • 假设
    主键
    是唯一的,我如何避免存储
    符号
    日期
    的重复值?还是分区在引擎盖下处理

  • 我正在考虑使用以下模式:

    CREATE TABLE tickdata (
    symbol text,
    date date,
    time blob,
    price blob,
    size blob,
    PRIMARY KEY ((symbol,date))
    );
    
    存储原始数据。这是解决上述问题的正确方法吗

  • 根据
    主键
    的定义,当我
    选择
    时,数据未排序。这与上面提到的非唯一性问题有关吗

  • 我是否应该继续使用二进制文件存储,它保存符号和日期的地图,并根据请求加载相关文件?这避免了为每一行重复符号和日期,并且和时间戳的有限粒度(重复)无关

元组(符号、日期、时间)不是合适的主键,因为我的 粒度限制为秒。因此,来自(例如)的副本会删除 在导入过程中,由于在 钥匙我如何保存记录

第一个表定义中的主键是
((符号,日期),时间)
而不是
(符号,日期,时间)
。在卡桑德拉,两者都是不同的

((符号,日期),时间)
=>将在一个节点中存储相同符号(A)和日期的所有记录。对于相同的符号(A),但其他日期可能在其他节点上。 行键将为符号+日期

物理数据布局(示例)

(符号、日期、时间)
=>同一符号的所有记录将驻留在一个节点上。这可能会导致宽行。 行键将是符号

物理数据布局(示例)

为了避免记录丢失,您可以再添加一列,如
uuid
timeuuid

CREATE TABLE tickdata (
symbol text,
date date,
time time,
price float,
size int,
id timeuuid
PRIMARY KEY ((symbol,date),time,id)
);
假设主键是唯一的,如何避免重复存储 符号和日期的价值?还是分区在处理这个问题 在引擎盖下

基于上面解释的物理存储结构,这个问题已经得到解决

您正在讨论的备用模式对于一个符号和一个日期只有一条记录。您必须在应用程序端处理blob。。。我想这可能是开销

数据不是按照主键的定义排序的 当我选择它的时候。这与非唯一性问题有关吗 上面提到过吗

默认情况下,数据是按集群键按升序排序的(在您的情况下是按时间排序的)。虽然您可以通过将表的属性的集群顺序更改为降序来更改顺序

例如:

CREATE TABLE tickdata (
symbol text,
date date,
time time,
price float,
size int,
id timeuuid
PRIMARY KEY ((symbol,date),time,id)
) WITH CLUSTERING ORDER BY(time desc,id desc); 
我应该坚持使用二进制文件存储,它保存符号地图吗 和日期,并根据要求加载相关文件?这避免了 为每行重复符号和日期,与限制无关 时间戳的粒度(重复)

您可以自己决定:)

元组(符号、日期、时间)不是合适的主键,因为我的 粒度限制为秒。因此,来自(例如)的副本会删除 在导入过程中,由于在 钥匙我如何保存记录

第一个表定义中的主键是
((符号,日期),时间)
而不是
(符号,日期,时间)
。在卡桑德拉,两者都是不同的

((符号,日期),时间)
=>将在一个节点中存储相同符号(A)和日期的所有记录。对于相同的符号(A),但其他日期可能在其他节点上。 行键将为符号+日期

物理数据布局(示例)

(符号、日期、时间)
=>同一符号的所有记录将驻留在一个节点上。这可能会导致宽行。 行键将是符号

物理数据布局(示例)

为了避免记录丢失,您可以再添加一列,如
uuid
timeuuid

CREATE TABLE tickdata (
symbol text,
date date,
time time,
price float,
size int,
id timeuuid
PRIMARY KEY ((symbol,date),time,id)
);
假设主键是唯一的,如何避免重复存储 符号和日期的价值?还是分区在处理这个问题 在引擎盖下

基于上面解释的物理存储结构,这个问题已经得到解决

您正在讨论的备用模式对于一个符号和一个日期只有一条记录。您必须在应用程序端处理blob。。。我想这可能是开销

数据不是按照主键的定义排序的 当我选择它的时候。这与非唯一性问题有关吗 上面提到过吗

默认情况下,数据是按集群键按升序排序的(在您的情况下是按时间排序的)。虽然您可以通过将表的属性的集群顺序更改为降序来更改顺序

例如:

CREATE TABLE tickdata (
symbol text,
date date,
time time,
price float,
size int,
id timeuuid
PRIMARY KEY ((symbol,date),time,id)
) WITH CLUSTERING ORDER BY(time desc,id desc); 
我应该坚持使用二进制文件存储,它保存符号地图吗 和日期,并根据要求加载相关文件?这避免了 为每行重复符号和日期,与限制无关 时间戳的粒度(重复)


您可以自己决定:)

日期和时间是如何生成的?您是否使用当前时间?并且您的用例不清晰?数据按原样给出