1

我有一个由来自用户活动的排序数据组成的数据库。如果我想记录每个用户的记录,哪些记录属于哪个用户(例如每个用户的一类数字向量),我可以在这里使用的最佳数据库类型是什么?速度很重要,数据库很大(9 Gig ~ 7 亿条记录)。用户数在 200 万左右,所以我认为 SQL 中的关系连接不是一个好建议。(编码在 C++ 中)。

4

3 回答 3

2

我现在将根据我们在评论中的对话提供一个答案,因为我有太多要写的评论。

首先,我会为此使用完整的 RDBMS 而不是 SQLite。名称的 Lite 部分应该作为一个指标,表明它没有试图成为一个完整的数据库。我之所以这么说,是因为如果 SQLite 在您的大型数据库上表现不佳,我不希望您将其归咎于 RDBMS 技术,而是归咎于您正在使用的弱数据库。选择 PostgreSQL 或 MySQL,因为它们有更好的优化器(您不必编写代码)。

其次,您的数据库应该提供将表连接在一起的功能。它看起来像:

Select *
From users
  Join activity on users.id = activity.user_id
Where users.id = ###

结合适当的索引应该可以满足您的需求。

就索引而言,您的主键应该为此连接生成适当的索引。您还可以创建外键定义,以便数据库知道表之间的关系,并可以强制执行它。一些数据库不支持外键约束,但这并不重要。

于 2013-06-29T14:01:01.897 回答
1

由于它是一组排序的数据,因此您可以选择 NoSQL 或Bigtable数据库。HBaseHadoop等为您提供 OpenSouce 资源。

于 2013-06-29T06:26:13.093 回答
1

关系 SQL 数据库可以很好地处理这个问题。
使用 PostGreSQL
您可以使用 C 中的 ODBC,这样您就可以在需要时更改数据库。

如果你的数据不是真正的关系型,你也可以使用 redis。
http://code.google.com/p/credis/

于 2013-06-29T05:39:25.383 回答