使用Cassandra表作为键值对是正确的做法。并在此表上执行大容量读写

使用Cassandra表作为键值对是正确的做法。并在此表上执行大容量读写,cassandra,cassandra-2.0,cassandra-3.0,spark-cassandra-connector,cassandra-2.1,Cassandra,Cassandra 2.0,Cassandra 3.0,Spark Cassandra Connector,Cassandra 2.1,我想创建一个键值数据存储,其中key是一个url,value是大约0.5MB的数据。应用程序要求每次写入和读取来自文件的大约10-20K键值。什么是正确的模式。?如果没有集群密钥,每个分区将只有一行。在未标记的批次中读取20K条记录可以吗 使用未标记的批处理进行此操作是一个非常糟糕的主意。Cassandra中的批处理非常有用 在您的情况下,最有效的方法是通过executeAsync发送单个查询,然后在应用程序中收集这些数据。但是,您可能需要控制同时有多少飞行中的请求,并且可能需要进行调整。Cas

我想创建一个键值数据存储,其中key是一个url,value是大约0.5MB的数据。应用程序要求每次写入和读取来自文件的大约10-20K键值。什么是正确的模式。?如果没有集群密钥,每个分区将只有一行。在未标记的批次中读取20K条记录可以吗

使用未标记的批处理进行此操作是一个非常糟糕的主意。Cassandra中的批处理非常有用


在您的情况下,最有效的方法是通过
executeAsync
发送单个查询,然后在应用程序中收集这些数据。但是,您可能需要控制同时有多少飞行中的请求,并且可能需要进行调整。

Cassandra确实是一个快速接收数据并通过特定键读取数据的好方法。它绝对不是一次读取20K K/Vs的正确工具。由于每一对都有自己的分区键,因此您的对将分布在所有节点上,尝试读取其中的许多项几乎肯定会导致超时。那么,我应该如何根据我的用例设计模式呢?我想从url中生成一个哈希代码作为分区键,这样每个分区都会有多个记录,稍后我将在in子句中使用它。基于K/V的模型可以工作,直到您开始谈论一次读取20k值。即使是Redis也不能很好地解决这个问题。此外,批是一个用词不当;它实际上应该被命名为ATOMIC,因为它是为了将写操作原子化地应用于5或6个不同的表。通过使用批处理查询进行读取,您将一无所获,除了选择哪个节点作为协调器可能会崩溃之外。说真的,博士后可能比卡桑德拉更适合这种情况。