Python原生的列表、集合和字典功能非常棒。当数据变得非常大时,有没有办法继续使用原生功能?我正在处理的问题涉及到非常大的列表的匹配(交集)。我还没有突破限制--实际上我并不真正知道限制是什么--我也不想在数据按预期增长后对大量的重新实现感到惊讶。
部署在Google App Engine这样的东西上,宣称没有实际规模限制,并继续使用原生功能,而不真正考虑这一点,这合理吗?
有没有什么Python魔术可以隐藏列表、集合或字典是否在Python管理的内存中,而不是在DB中--这样,数据的物理部署就可以与我在代码中所做的保持不同?
随着数据量的增长,Python超级专家先生或女士如何处理列表、集合和字典?
发布于 2011-07-11 21:30:56
你在描述我的梦!然而,我认为你不能这样做。我一直想要一些东西,就像Python语言的LINQ,但该语言不允许使用Python语法进行本机数据库操作AFAIK。如果可能,您可以只使用列表编写代码,然后使用相同的代码从数据库中检索数据。
我不建议您编写大量仅基于列表和集合的代码,因为将其移植到可伸缩平台并不容易。我建议你使用ORM之类的东西。GAE甚至有its own ORM-like system,你可以使用其他的,比如SQLAlchemy和SQLObject,比如SQLite。
不幸的是,您不能使用诸如列表理解之类的强大功能来从数据库中过滤数据。当然,您可以在从DB获取数据后对其进行过滤,但您仍然需要使用类似SQL的语言构建一个查询,以查询对象或从数据库返回大量对象。
还有Buzhug,这是一个用Python语言编写的奇怪的非关系型数据库系统,它允许使用自然的Python语法。我从来没有用过它,我不知道它是否可扩展,所以我不会把我的钱放在它上面。但是,您可以对其进行测试,看看它是否对您有帮助。
发布于 2011-07-11 21:00:17
你可以使用ORM:对象关系映射:一个类获取一个表,一个对象获取一行。我喜欢Django ORM。你也可以在非web应用中使用它。我从来没有在GAE上使用过它,但我认为它是可能的。
https://stackoverflow.com/questions/6650275
复制相似问题