gpt4 book ai didi

python - Python 项目的低内存和最快查询数据库

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:07 27 4
gpt4 key购买 nike

由于新定价,我正在将一个 GAE/Java 应用程序迁移到 Python(非 GAE),所以我得到了一个小服务器,我想找到一个满足以下要求的数据库:

  • 低内存使用率(或可调整或可预测)
  • 对由键标识的简单文档/树状数据的最快查询能力(我不关心写入性能,我假设它会有索引)
  • 具有 Pypy 1.6 兼容性(或至少 Python 2.7)的绑定(bind)

我的数据是这样的:

  • Id:短键串
  • 职位
  • Creators:另一个数据结构的数组,它有一个 id(用作键)、名称、站点地址等。
  • 标签:标签数组。他们每个人都可以有多个父标签、名称、ID 等。
  • 许可证:一种数据结构,描述其许可证(CC、GPL 等)以及名称、关联的 URL 等。
  • 添加时间:添加到我们网站的时间。
  • 翻译:指向其他条目的指针,这些条目是一个创作的翻译。

我的查询非常简单。通常的情况是:

  • 按添加时间排序的标签过滤。
  • 选择几个(分页)按添加时间排序。
  • (也许,还没有完成)按创作者过滤。
  • (未完成但已计划)表单中的一些自动完成功能,因此如果某些字段包含子字符串(“LIKE”查询),我将需要进行搜索。

数据量不大。现在我有大约 50MB 的数据,但我计划拥有一个大约 10GB 的庞大数据集。

此外,我想从头开始重建它,所以我愿意接受任何选择。您认为什么数据库可以满足我的要求?

编辑:我想围绕不同的选项做一些基准测试并分享结果。到目前为止,我选择了 MongoDB、PostgreSQL、MySQL、Drizzle、Riak 和 Kyoto Cabinet。

最佳答案

迁移 App 引擎应用程序的阻力最小的路径可能是使用 AppScale ,它实现了 App Engine API 的主要部分。特别是,您可能想要使用 HyperTable数据存储,它与 Google App Engine 数据存储非常相似。

编辑:好的,所以您要进行重新设计。我想复习一下你在问题中提出的一些观点。

Low memory usage

这与您在数据库中想要的几乎相反;您希望尽可能多地在核心内存中存储数据集;这可能意味着调整数据集本身以有效地适应,或添加 memcached 节点,以便您可以将数据集分布在多个主机上,以便每个主机都有足够小的数据集部分以适合核心。

为了说明这一点,考虑从 ram 读取一个值比从磁盘读取它快大约 1000 倍;与只需要访问磁盘以处理 1% 的查询的数据库相比,能够满足来自核心的每个查询的数据库可以处理 10 倍的工作负载。

I'm planning to have a huge dataset around 10GB.

我认为您不能将 10GB 称为“庞大的数据集”。事实上,这可能适合相当大的数据库服务器的内存;您不需要超过一个 memcached 节点,更不用说额外的持久性节点(典型的磁盘大小以 TB 为单位,比这个预期的数据集大 100 倍。


根据这些信息,我肯定会建议使用像 PostgreSQL 这样成熟的数据库产品,它可以为您描述的数据提供足够的性能,轻松提供您正在谈论的所有功能。如果到了您需要超越 PostgreSQL 实际提供的能力的时候,您实际上将有一个真正的工作负载来分析以了解真正的瓶颈是什么。

关于python - Python 项目的低内存和最快查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375415/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com