用于保存一类向量或SQL数据库的简单文件

A simple file for saving a class of vectors or a SQL database

本文关键字:SQL 数据库 文件 简单 向量 一类 保存 用于      更新时间:2023-10-16

我有一个数据库,它由来自用户活动的排序数据组成。如果我想记录每个用户,哪个记录属于哪个用户(就像每个用户的一类数字向量),我可以在这里使用的最佳数据库类型是什么?速度很重要,而且数据库很大(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资源。