大量1kB数据块的数据库(MySQL?)

时间:2009-04-29 07:55:35

标签: mysql database performance

我有一个非常大的数据集,数据集中的每个项目大小约为1kB。需要通过网络分布的许多应用程序快速查询数据。该数据集有超过一百万个项目(因此有5亿+ 1kB数据块)。

存储此数据集的最佳方法是什么(需要允许添加更多项目,并快速读取它们,但从不修改已添加的数据)?使用二进制blob格式的MySQL数据库是否合适?

或者是否应将每个文件存储为文件系统中的文件?

编辑:现在这个数字是100万件,但需要能够轻松扩展到超过5亿件物品。

3 个答案:

答案 0 :(得分:1)

因为不需要索引对象内的任何内容。我不得不说文件系统可能是你最好的选择而不是关系数据库。由于只有一个唯一的ID和一个blob,所以这里确实没有任何结构,因此将其放入数据库没有任何价值。

您可以使用Web服务器提供对存储库的访问。然后像nginx w / memcache这样的缓存解决方案将其全部保存在内存中并使用负载平衡进行扩展。

如果您遇到进一步的性能问题,您可以删除文件系统并像Facebook一样使用他们的照片系统进行自己的操作。这可以减少不必要的IO操作,以便从文件系统中提取不需要的元数据,如安全信息。

答案 1 :(得分:-1)

这是一GB的数据。你打算用什么数据库?

这绝对只​​是一个文件,在启动时将其读入ram。

扩展到500亿很容易。这需要更多的机器。 根据精确的应用程序特性,您可以在ram中标准化或压缩数据。

您可能能够将内容保存在磁盘上并使用数据库,但这严重限制了您在同时访问方面的可扩展性。您可以从磁盘获得50次磁盘访问/秒,因此只需计算您需要的磁盘数量。

答案 2 :(得分:-1)

如果您需要检索保存的数据,那么存储在文件中肯定不是一个好主意。

MySQL是一个不错的选择。但请确保您设置了正确的索引。

关于binary-blob。这取决于您打算存储的内容。给我们更多细节。