用于保存一类向量或SQL数据库的简单文件
A simple file for saving a class of vectors or a SQL database
我有一个数据库,它由来自用户活动的排序数据组成。如果我想记录每个用户,哪个记录属于哪个用户(就像每个用户的一类数字向量),我可以在这里使用的最佳数据库类型是什么?速度很重要,而且数据库很大(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 = ###
再加上适当的索引,应该可以满足您的需要。
至于索引,主键应该为该联接生成适当的索引。您还可以创建外键定义,以便数据库知道表之间的关系,并可以强制执行它。有些数据库不支持外键约束,但这并不重要。
关系型SQL数据库可以很好地处理这一问题
使用PostGreSQL
您可以从C使用ODBC,这样您就可以在需要时更改数据库。
如果您的数据不是真正的关系型数据,您也可以使用redis
http://code.google.com/p/credis/
由于它是一组经过排序的数据,因此可以对NoSQL或Bigtable数据库进行事件处理。HBase、Hadoop等为您提供OpenSouce资源。
相关文章:
- 如何在 c++ 中从 SQL 数据库中读取亚洲字符
- 我们可以从 TXT 文件中读取数据并使用 C 和 C++ 将其保存到 SQL 数据库吗?
- 使用C SQL.H.备份SQL数据库
- QT-写入SQL数据库时,空的qlineedits不会以null的方式传递
- 从SQL数据库到CIMAGE的图像
- C QT中的SQL数据库更新未前进到下一个ID
- 将当前日期与 c++ 中的 sql 数据库条目匹配
- PostgreSQL 的替代方案,用于 C/C++ 应用程序中的嵌入式 SQL 数据库
- 将 SQL 数据库移动到内存中
- 如何将sql数据库文件从系统位置复制到另一个位置
- 如何使用C++获取SQL数据库的总大小
- 在插入SQL数据库时忽略空格而不删除字符串中的空格
- 程序的本地/专用 sql 数据库
- Qt SQL 数据库自动完成
- c++中的SQL数据库
- 带有用户名和密码的C++/.net(Framework 2.0)MS SQL数据库windows身份验证
- 用于保存一类向量或SQL数据库的简单文件
- C++从SQL数据库加载文件
- c++ /SIFT/SQL -如果有一种方法可以有效地比较图像的SIFT描述符与SQL数据库中的SIFT描述符
- 插入到SQL数据库中