我有一个数据库,由来自用户事件的排序数据组成。如果我想保留每个用户的记录,记录属于哪个用户(比如每个用户的一类数字 vector ),我可以在这里使用的最佳数据库类型是什么?速度很重要,而且数据库非常大(9 Gig ~ 7 亿条记录)。用户数量约为 200 万,所以我认为 SQL 中的关系连接不是一个好的建议。 (编码在 C++ 中)。
最佳答案
我现在要根据我们在评论中的对话提供答案,因为我有太多东西要写在评论中。
首先,我会为此使用完整的 RDBMS 而不是 SQLite。名称的 Lite 部分应该作为一个指示器,表明它并没有试图成为一个完整的数据库。我之所以这么说是因为如果 SQLite 在你的大型数据库上表现得不够好,我不希望你把它归咎于 RDBMS 技术,而是归咎于你正在使用的弱数据库。选择 PostgreSQL 或 MySQL,因为它们有更好的优化器(您不必编写代码)。
其次,您的数据库应该提供将表连接在一起的功能。它看起来像:
Select *
From users
Join activity on users.id = activity.user_id
Where users.id = ###
结合适当的索引应该可以满足您的需求。
就索引而言,您的主键应该为此连接生成适当的索引。您还可以创建外键定义,以便数据库知道表之间的关系,并可以强制执行。一些数据库不支持外键约束,但这并不重要。
关于c++ - 用于保存一类 vector 或 SQL 数据库的简单文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376025/