Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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
Python 在Cassandra中存储大型原始请求和响应的时间序列_Python_Dictionary_Cassandra - Fatal编程技术网

Python 在Cassandra中存储大型原始请求和响应的时间序列

Python 在Cassandra中存储大型原始请求和响应的时间序列,python,dictionary,cassandra,Python,Dictionary,Cassandra,我有许多python进程,每个进程都重复地查询一个单独的API。请求以一次20-100次的突发方式出现,然后该过程开始解析响应,并在大约一秒钟后重复。我希望使用Cassandra作为请求和响应的原始存储。这将允许我调试解析数据的问题和/或稍后重新解析。我正试图为此设计一个方案 我想每个API都可以有一个单独的表列族,这一点没什么好说的。我最初对表模式的想法是: stripe text, // free text to describe the flavour of the request, e.

我有许多python进程,每个进程都重复地查询一个单独的API。请求以一次20-100次的突发方式出现,然后该过程开始解析响应,并在大约一秒钟后重复。我希望使用Cassandra作为请求和响应的原始存储。这将允许我调试解析数据的问题和/或稍后重新解析。我正试图为此设计一个方案

我想每个API都可以有一个单独的表列族,这一点没什么好说的。我最初对表模式的想法是:

stripe text, // free text to describe the flavour of the request, e.g. live games  
date int, // YYYYMMDD  
requests map<datetime, text>,  
responses map<datetime, text>  
这基本上是告诉我,无论如何,我不能把这些东西放在一个集合列中,因为响应的大小是任意的,而且几乎总是超过限制

我是卡桑德拉世界的新手,但我认为这些CQL映射最终对应于记录中单独的列名和值,并且每个列的大小限制为2GB。我能想到的一件事是不要使用映射,每次都要不断更改表模式,然后在单元格中插入一个正常值,但我不确定在底层存储中这有什么不同

所以我想我有两个问题:

这只是CQL的限制还是卡桑德拉的全部限制? 有经验的人能想出一个总体上更好的方法吗? 谢谢你的阅读


KCH

回答我自己的问题-我的误解在于,在CQL中,键的第一部分始终是行键,因此对于复合键,键的其余部分构成列键。地图也会在同一行的不同列中使用自己的键名展开约定,但应用了限制大小。

我怀疑答案可能存在于
stripe text, // free text to describe the flavour of the request, e.g. live games  
date int, // YYYYMMDD  
requests map<text, text>,  
responses map<text, text>  
E               InvalidRequest: code=2200 [Invalid query] message="Map value is too long. Map values are limited to 65535 bytes but 435145 bytes value provided"