【发布时间】:2012-01-24 01:01:09
【问题描述】:
我们正在为我们的用户数据构建缓存解决方案。数据当前存储在 sybase 中,分布在 5 - 6 个表中,但是使用休眠在其之上构建的查询服务,我们的性能非常差。为了将数据加载到缓存中,需要 10 到 15 个小时。
所以我们决定在另一个关系数据库 (UDB) 中创建一个 50 - 60 列和 5mm 行的非规范化表,首先填充该表,然后使用 JDBC 从新的非规范化表填充缓存,这样就可以构建我们了缓存较低。这给了我们更好的性能,现在我们可以在大约一个小时内构建缓存,但这也不能满足我们在 5 分钟内构建缓存的要求。使用以下查询查询去规范化的表
select * from users where user id in (...)
这里的用户 id 是主键。我们也试过查询
select * from user where user_location in (...)
并在位置上创建了一个非唯一索引,但这也没有帮助。
那么有没有一种方法可以使查询更快。如果没有,那么我们也愿意考虑一些 NOSQL 解决方案。
哪种 NOSQL 解决方案适合我们的需求。除了大桌子,我们每天都会在桌子上进行大约 1 毫米的更新。
我已经阅读了有关 mongo db 的信息,似乎它可能会起作用,但没有人发布过任何使用 mongo db 的经验,其中包含如此多的行和如此多的每日更新。
请让我们知道您的想法。
【问题讨论】:
-
对我来说,您似乎遇到了一个相当基本的问题,而现在您正试图通过大量额外的技术堆栈来解决它。为什么首先需要缓存中的所有数据?您正在对这些数据执行什么样的操作?等等。我怀疑您提供的信息是否足以获得合格的答案...
-
我们将主要在启动时读取这些数据,然后在创建新用户帐户或对其数据进行更改或删除帐户时定期更新数据
-
一次所有数据??为什么需要内存中的数据?现代数据库在访问磁盘上的数据方面非常有效......我不明白你在做什么
-
是的,这就是我想找到哪个数据库将是托管此功能的良好解决方案的原因,它应该能够非常非常快地快速查询...大型数据集
标签: sql mongodb database-performance udb