【问题标题】:Is there any python web app framework that provides database abstraction layer for SQL and NoSQL?是否有任何 python web 应用程序框架为 SQL 和 NoSQL 提供数据库抽象层?
【发布时间】:2010-08-31 05:18:23
【问题描述】:

是否甚至可以创建一个可以容纳关系和非关系数据库的抽象层?该层的目的是最大限度地减少重复,并允许 Web 应用程序通过在一个地方(即抽象层)更改/修改代码来使用任何类型的数据库。位于抽象层之上的部分不必担心底层数据库是关系型 (SQL) 还是非关系型 (NoSQL) 或将来可能出现的任何新型数据库。

【问题讨论】:

  • 这是无法将头绕在 BigTable 周围的影响吗?
  • NoSQL 数据库有各种各样的。
  • 现有的 ORM 试图使 RDBMS 或多或少看起来像 OODB。我见过的每个人仍然经常要求您知道它是一个 RDBMS 并针对它编写代码。我认为使用如此不同的存储架构,您将严重影响性能或抽象,或两者兼而有之。当然,我还没有看到它在 RDBMS 上做得很好,并不是因为缺乏尝试!

标签: python sql database google-app-engine nosql


【解决方案1】:

a Summer of Code project 现在正在为 Django 的 ORM 添加非关系支持。它似乎进展顺利,很有可能它会及时合并到 Django 1.3 的核心中。

【讨论】:

    【解决方案2】:

    您可以同时使用现有的 Django 和 Django-nonrel (http://www.allbuttonspressed.com/projects/django-nonrel) 以获得相当统一的体验。有一些限制,但请仔细阅读文档,记住 Spolsky 的“所有抽象都是泄漏的”。

    【讨论】:

      【解决方案3】:

      你也可以检查一下 web2py,它们支持关系数据库和核心上的 GAE。

      【讨论】:

        【解决方案4】:

        关于 App Engine,所有现有的尝试都会以某种方式限制您(例如,web2py 不支持事务或命名空间以及可能的许多其他东西)。如果您打算使用 GAE,请使用 GAE 提供的功能,而无需寻找 SQL-NoSQL 的圣杯。现有的解决方案不可避免地受到限制,并对性能产生负面影响。

        【讨论】:

          【解决方案5】:

          感谢您的所有回答。总结一下答案,目前只有 web2py 和 Django 支持这种抽象。

          这不是关于 SQL-NoSQL 的圣杯,使用抽象可以使应用程序更加灵活。假设您使用 NoSQL 启动了一个项目,然后您需要切换到 SQL。最好只在几个地方而不是到处更改代码。在某些情况下,将数据存储在关系数据库还是非关系数据库中并不重要。例如,存储用户配置文件、动态页面的文本内容或博客条目。 我知道使用抽象必须进行权衡,但我的问题更多是关于现有解决方案或技术洞察力,而不是后果。

          【讨论】:

            猜你喜欢
            • 2011-11-29
            • 2011-08-18
            • 2015-04-27
            • 2016-04-13
            • 1970-01-01
            • 2012-08-24
            • 1970-01-01
            • 2013-09-21
            • 1970-01-01
            相关资源
            最近更新 更多