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
Nosql 正在寻找一种支持流式计数、草图绘制和大型集合交叉点的体系结构_Nosql_Cassandra_Hbase - Fatal编程技术网

Nosql 正在寻找一种支持流式计数、草图绘制和大型集合交叉点的体系结构

Nosql 正在寻找一种支持流式计数、草图绘制和大型集合交叉点的体系结构,nosql,cassandra,hbase,Nosql,Cassandra,Hbase,我想知道Stackoverflow社区是否可以帮助我提出一种技术,如HBase、Raiku、Cassandra等,来解决我的问题。我有一个大的数据集,我们想实时更新和查询,大约10TB。我们的数据集是一个像素流,它包含一个用户ID和一个或多个特征,通常在10左右。可能的特征总数以百万计 我们设想我们的数据模型如下所示: FEATUREID\u到用户\u表: 功能id->{UserID散列,UserID散列,…} 功能ID到计数器表: 功能id->{epic之后的小时->HyperLogLog字节

我想知道Stackoverflow社区是否可以帮助我提出一种技术,如HBase、Raiku、Cassandra等,来解决我的问题。我有一个大的数据集,我们想实时更新和查询,大约10TB。我们的数据集是一个像素流,它包含一个用户ID和一个或多个特征,通常在10左右。可能的特征总数以百万计

我们设想我们的数据模型如下所示:

FEATUREID\u到用户\u表: 功能id->{UserID散列,UserID散列,…}

功能ID到计数器表: 功能id->{epic之后的小时->HyperLogLog字节blob}

我们希望保留一组按用户ID散列排序的用户ID。如果新ID的散列值较低,我们还希望为每个FEATUREID_to_User_表项保留最多~200k,以逐出旧ID

我们希望存储支持以下不一定用SQL表示的操作:

select FeatureID, count(FeatureID) from FEATUREID_TO_USER_TABLE where UserID in 
(select UserID from FEATUREID_TO_USER_TABLE where FeatureID = 1234)
    group by FeatureID;

我们相信,通过用户ID在机器之间共享这些数据最简单的方法

谢谢你的建议,
Mark

Cassandra是保存数据的最佳选择,但您需要其他东西来实时处理数据。我建议您去看看,因为它可以相对轻松地为您提供实时流数据处理。它是一个开源框架,为您处理并发和并行化。它是在JVM上编写的,但也有各种非JVM语言的语言绑定。

我不确定我是否理解您的全部描述,所以我在黑暗中拍摄了一些上下文

有没有办法对数据进行分区,以便查询到分区中?这有助于在扩展时实现可伸缩性和查询。您通常不想查询太大的表,而是查询分区

PlayOrm在cassandra上具有分区功能,因此您可以查询一个分区

虽然PlayOrm也有连接查询,此时它不执行子选择,但通常客户端只需对nosql存储进行第一次调用,然后聚合结果并执行第二次查询,而且速度仍然非常快,可能与您进行一次调用一样快,因为即使cassandra也必须在内部对其他服务器进行两次调用

嗯,我越是读你的文章,我不确定你是否应该在那里写SQL,因为你可能可以通过主键做任何事情,但我不是100%确定。SQL是混乱的,因为它获取了行中所有的用户ID,然后只计算它们????因为它在select和subselect中都是同一个表


至于共享数据,您不需要做任何事情,因为cassandra会自动执行此操作。

感谢您的回复!我把我原来的SQL示例弄错了一点——我刚刚纠正了它。基本上,我希望能够将具有FeatureID A的用户与具有FeatureID B的用户进行交集。复杂的部分是,我希望通过某种散列保留一组粗略的用户ID,并且我喜欢将大量功能进行交集。
update FEATUREID_TO_COUNTER_TABLE set HyperLogLog = NewBinaryValue where FEATUREID_TO_COUNTER_TABLE.id = 567