【发布时间】:2012-08-30 19:32:03
【问题描述】:
所以要设置这个,我有一家公司,我们有用户和一组标签来描述这些用户。 每个用户最多可以附加 5000 个标签。
我们有一个引擎,允许客户选择某些标签来组成一个标签组。该引擎具有 AND/Or 功能和 Include/Exclude。客户可以创建一个标签组,我们的引擎会找到满足标签组中指定的逻辑要求的用户总数。基本上这只是交集、联合和排除,所以 redis 集已经很完美了。
为了处理这个问题,我存储数据。 标签1:[用户1,用户2,用户3] 标签2:[用户1,用户5,用户6] 等等
从这里开始,所有的布尔逻辑都是使用脚本完成的。
但是,我们的客户群正在迅速扩大。几年之内,我们要么需要几个 64GB redis 服务器,要么需要一个替代方案。
这是我的问题。是否有任何闪电般快速的数据库选项来进行基于磁盘的相交和联合?我尝试过 Postgres,但性能无法接受。例如,对 500k 用户集进行集比较需要 1 秒。在 Postgres 中,我看到大约 30 秒,如果标签组中有很多标签,则更多。
我已经推荐过 DynamoDB 和其他一些人,但我只是想在深入挖掘之前获得一些有根据的意见。
谢谢, 丹
【问题讨论】:
标签: database-design nosql redis relational-database