gpt4 book ai didi

database - 将唯一访问者存储在分布式数据库中

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:49 25 4
gpt4 key购买 nike

我有这样的结构数据(网络访问者)

List(p1,p1,p1,p2,p3,p3,p4,p4,p5...)

one visitor can visit 1 --> many times

数据量:约1亿/天

如何或哪个数据库我可以存储唯一访问者以像那样快速访问(近乎实时)

2014-11-15 | p1 | p2 | p3 | ...| pn

我尝试通过使用像这样的表来使用 Cassandra 来解决问题:

CREATE TABLE uniqueVisitor (
key text,
p text,
PRIMARY KEY (key, data)
)

我认为这种商店模式不是很好,因为:

因为这个表的分区数据,一个键的所有数据将只存储在一个服务器上(复制因子=1)==>太多的写请求会炸毁存储这个键的服务器。

请给我一个解决方案(存储模式)

最佳答案

您可以使用集合,因为它消除了重复项(并且没有特定的顺序)。例如,

CREATE TABLE uniqueVisitor (
dt text,
users set<text>,
PRIMARY KEY (dt)
);

你是对的,一天的数据不会分发;它将位于单个节点(和副本)上。当然,不同日期的记录将被分发。所以这是一个潜在的写入热点。话虽如此,我认为写入热点在这种情况下可能并不重要,因为它是一个正在修改的单个(虽然巨大)记录。但是,每次用户访问都不会导致磁盘 I/O,因为更改首先会在内存中进行,在 memtables 中,只有当 memtables 刷新到磁盘时,它才会被写入 SSTable。来自多个 SSTable 的数据将定期进行压缩,这可能会产生一些性能成本,但我认为这不会杀死您的应用程序。

在 Cassandra 2.1 中,还可以在 SET 等集合类型上创建索引。

希望这对您有所帮助。

关于database - 将唯一访问者存储在分布式数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27223194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com