【问题标题】:What is a fast database equivalent of using reading data from multiple files?什么是快速数据库相当于使用从多个文件中读取数据?
【发布时间】:2015-06-01 14:39:42
【问题描述】:

我们有大量数据无法放入内存。因此,我们将它们分布在磁盘上的许多文件中,然后通过向前移动指针来打开一个文件并顺序读取记录。一旦指针到达 EOF,我们就打开下一个文件。

我们现在在加载数据后进行过滤。如果我们可以像在数据库中一样运行查询来进行过滤,那就太好了。我们想从数据库而不是文件中读取所有数据,但是我们不能一次将所有数据放入内存中,我们该怎么做呢?我们可以使用块来获取数据,但这可能需要更多的网络时间。有没有更快的方法来解决这个问题?使用 Redis 或 MemSQL 等替代数据存储有帮助吗?

【问题讨论】:

  • 数据库就是为此而设计的。那里有数 TB 的数据库,由内存仅在千兆字节范围内的服务器处理...加载数据,运行查询,让数据库担心内存的使用。
  • @MarcB 你应该把这个评论变成一个答案。
  • 我们担心如果我们获取的数据比 RAM 的多,那么我们可能会出现内存不足。
  • 您不必在将所有内容保存到数据库之前将其加载到内存中。您可以告诉数据库一点一点地从文件中读取数据。根据您可能需要准备的结构,但这绝对是可能的。
  • 没关系。假设数据已加载到数据库中。我的问题是,当我们获取记录并且碰巧获取的数据比我的 RAM 多时,会发生什么?理想情况下,我们需要在从数据库中获取数据时使用这些数据,这样我们的内存使用量就不会增加。

标签: mysql database datastore flat-file


【解决方案1】:

MemSQL 的列存储是为解决此类问题而精心设计的。它会智能压缩数据并在您查询数据时自动在 RAM 和磁盘(SSD 或 HDD)之间移动。

MemSQL 还会自动并行处理文件并跨节点分发数据。

这是 MemSQL 的快速入门指南:http://docs.memsql.com/latest/setup/quick_start/

还有一些关于如何开始使用列存储的文档: http://docs.memsql.com/latest/concepts/columnar/

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 2020-10-06
    • 2019-07-25
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多