python - Python 列表、集合或字典是否可以使用数据库无形地实现?

标签 python database google-app-engine list volume

列表、集合和字典的 Python 原生功能非常棒。当数据变得非常大时,有没有办法继续使用原生能力?我正在处理的问题涉及非常大列表的匹配(交集)。我还没有突破极限——实际上我真的不知道极限是什么——并且不想在数据按预期增长后对大型重新实现感到惊讶。

部署在像 Google App Engine 这样标榜没有实际规模限制的东西上,并继续按原样永远使用 native 功能而不去真正考虑这个问题是否合理?

是否有一些 Python 魔法可以隐藏列表、集合或字典是在 Python 管理的内存中还是在数据库中——因此数据的物理部署可以与我在代码中所做的不同?

Python super 专家先生或女士,随着数据量的增长,您如何处理列表、集合和指令?

最佳答案

我不太清楚您所说的列表、集合和字典的 native 功能是什么意思。但是,您可以创建模拟 container types 的类和 sequence types通过定义一些 methods with special names .这意味着您可以创建一个行为类似于列表的类,但将其数据存储在 SQL 数据库或 GAE 数据存储中。简单来说,这就是 ORM 所做的。然而,将对象映射到数据库非常复杂,发明自己的 ORM 可能不是一个好主意,而是使用现有的 ORM。

恐怕没有万能的解决方案。特别是 GAE 不是某种可以撒在代码上以使其可扩展的魔法仙尘。要创建可扩展的应用程序,您必须牢记几个限制。其中一些是通用的,例如 computational complexity ,其他特定于您的代码运行的环境。例如在 GAE 上,最大响应时间限制为 30 秒, 查询数据存储的方式与在其他数据库上不同。

在不了解您的具体问题的情况下很难给出任何具体的建议,但我怀疑 GAE 是正确的解决方案。

一般来说,如果您想处理大型数据集,您要么从一开始就牢记这一点,要么随着数据集的增长而重新编写代码、算法和数据结构。

关于python - Python 列表、集合或字典是否可以使用数据库无形地实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6650275/

相关文章:

python - 我们可以将小写字符增加一个吗

python - 在 Numpy 数组中的两个特定值之间更改值

python - 将属性重命名为 _property 的原因

python - RDFLIB Python 支持 Geosparql 查询吗?

database - 逆向工程普适数据库?

google-app-engine - gcloud 应用程序部署错误 : Permissions error fetching application [apps/<PROJECT_NAME>]

android - GoogleJsonResponseException : 404 Not Found using google apps endpoint engine backend

mysql - 使用用户输入进行数据库规范化

java - 交易后刷新实体

python - GAE+ Picasa 大量使用。限制或引用