【问题标题】:Productive oodbms for python?用于 python 的高效 oodbms?
【发布时间】:2012-05-25 10:26:06
【问题描述】:

谁能告诉我并描述一下 oodbms 实现可用于在其上存储所有持久数据的生产性 Web 应用程序。

【问题讨论】:

    标签: python database web-applications object-oriented-database


    【解决方案1】:

    也许你应该给ZODB 看看。即使用户社区不像其他一些 DBMS 那样大,它也很容易使用。

    【讨论】:

    • 是否支持对数据进行索引和搜索?
    • 不是开箱即用的,它为您提供了一些基本的构造,例如 BTrees,剩下的您必须自己完成。但是有一些辅助库,例如zope.index,可以提供一些额外的火力。
    【解决方案2】:

    经过一些研究和基准测试。我发现MongoDB 很有成效,因为:

    MongoDB(来自“humongous”)是一个可扩展、高性能、开源的 NoSQL 数据库。用 C++ 编写,MongoDB 特性:

    1. 面向文档的存储 » 具有动态模式的 JSON 样式文档提供了简单性和强大的功能。

    2. 完整的索引支持 » 任何属性的索引,就像你习惯的那样。

    3. 复制和高可用性 » 跨 LAN 和 WAN 镜像,以实现规模化和高枕无忧。

    4. 自动分片 » 在不影响功能的情况下水平扩展。

    5. 查询 » 丰富的基于文档的查询。

    6. 快速就地更新 » 用于无争用性能的原子修饰符。

    7. 映射/减少 » 灵活的聚合和数据处理。

    8. GridFS » 存储任何大小的文件,而不会使您的堆栈复杂化。

    9. 商业支持 » 提供企业级支持、培训和咨询。

    编辑 1:

    python中提供mongodb的包:

    • 虎猴 Humongolus 是一个用于 Python 和 MongoDB 的轻量级 ORM 框架。这个名字来自 MongoDB 和 Homunculus(一个微型但完全成形的人体的概念)的组合。 Humongolus 允许您创建具有强大验证的模型/模式。它尝试尽可能地 Pythonic,并尽可能公开 pymongo 游标对象。代码可在 github 下载。 GitHub 上也提供了教程和使用示例。

    • MongoKit MongoKit 框架是 PyMongo 之上的一个类似 ORM 的层。还有一个MongoKit google group。

    • Ming (the Merciless) 是一个库,它允许您在 Python 应用程序中对 MongoDB 数据库实施模式。它是由 SourceForge 在迁移到 MongoDB 的过程中开发的。有关详细信息,请参阅介绍性博客文章。

    • 蒙古炼金术 MongoAlchemy 是 PyMongo 之上的另一个类似 ORM 的层。它的 API 受到 SQLAlchemy 的启发。代码在 github 上可用;有关详细信息,请参阅教程。

    • MongoEngine MongoEngine 是 PyMongo 之上的另一个类似 ORM 的层。它允许您使用受 Django ORM 启发的语法为文档和查询集合定义模式。代码在 github 上可用;有关详细信息,请参阅教程。

    • Minimongo minimongo 是 MongoDB 的轻量级 Python 接口。它保留了 pymongo 的查询和更新 API,并提供了许多附加功能,包括简单的面向文档的接口、连接池、索引管理以及集合和数据库命名助手。源码在github上。

    【讨论】:

    • 所以你正在序列化你的对象到/从 JSON?
    • 我的对象是 python 字典,可能序列化/反序列化如此之快,往返于 json.but 支持一切见:mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
    • @Pedro,你为什么说:MongoDB 不是 OODBMS?
    • @pylover 因为 MongoDB 是一个文档存储系统。它不像 ZODB 和 db4o 那样持久化对象。它能够存储半结构化数据,但在模式方面它实际上更接近于 RDBMS 而不是 OODBMS:它有集合并且不支持继承。
    • @Pedro,感谢您的有用评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2011-10-12
    • 2012-07-07
    • 2020-10-06
    • 2013-01-30
    相关资源
    最近更新 更多