c++ - 用于保存一类 vector 或 SQL 数据库的简单文件

标签 c++ sql xml json database-connection

我有一个数据库,由来自用户事件的排序数据组成。如果我想保留每个用户的记录,记录属于哪个用户(比如每个用户的一类数字 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/

相关文章:

c# - 如何 : Monitoring file access by another process in Windows?

sql - 即使没有返回行,如何提取汇总数据?

sql - 删除具有特权的角色

xml - 如何从 SharePoint 2010 中的数据库中找到 SharePoint 列表的字段?

android - 如何从 Android 布局文件中读取 XML

c++ - 如何使用 Libwebp 从 Webp 解码和编码?

c++ - Linux 服务器中的接收缓冲区大小

c++ - 子类如何使用与子类相同的方法名调用父类(super class)的方法?

sql - 从 PL/SQL 插入到临时表 GTT 非常慢

java - XML 作为数据存储。插入、移除、删除