【问题标题】:How to store large datasets in python dictionary? [closed]如何在python字典中存储大型数据集? [关闭]
【发布时间】:2019-08-06 23:15:57
【问题描述】:

我有几 TB 的数据要存储并能够快速查找。当然,我不能简单地使用 python 字典,因为它的大小受 RAM 大小的限制。

我尝试使用 dbm python:https://docs.python.org/3/library/dbm.html,但它对我的应用程序来说太慢了。

【问题讨论】:

  • 您需要对您的数据进行哪些操作?
  • 我不认为字典可以很好地存储 TB 的数据,因为它都在内存中。大数据的文件格式有很多种,一个例子是Pandas library支持的HDF5。
  • 当然可以,但是您需要 TB 的 RAM,然后可能需要像 Redis 这样的东西。老实说,玩起来会很有趣。
  • @EricWang 存储、检索、变异。原子操作也很好。另外,获取字典的所有键,以便我可以对其进行迭代。这些将是大的。
  • @PyNoob 是的。确实如此。但是,这些对于我的应用程序来说太慢了。

标签: python dictionary bigdata


【解决方案1】:

看看 Neueda 在https://github.com/blu-corner/heliumdb 所做的工作 该接口提供了一些重要功能: 1.它使用原生字典接口,所以你真的不需要使用新的API,你的代码也不需要改变 2.速度很快。比在下面使用数据库快得多 3. 您可以将您的字典放在单独的服务器中,并让多个 Python 程序共享同一个字典。当然,您仍然需要在应用程序级别处理并发控制,但字典在所有程序中始终是一致的。对于字符串类型,性能在内存字典中接近原生。希望有帮助。如果你愿意,我可以给你一些示例代码

【讨论】:

  • 太棒了。听起来很有趣。我会调查的。由于性能接近内存中的原生python字典,其速度的瓶颈会是网络带宽吗?
【解决方案2】:

您可以使用基于磁盘的键值对存储。 LevelDB 之类的东西可能与 Python wrapper library 一起工作,同时保持性能

【讨论】:

  • 既然是基于磁盘的,那不是很慢吗?
猜你喜欢
  • 2013-05-05
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 2013-05-06
  • 2015-11-26
  • 2012-07-09
相关资源
最近更新 更多