【问题标题】:Redshift DB backend for Django用于 Django 的 Redshift 数据库后端
【发布时间】:2014-09-07 20:15:17
【问题描述】:

我需要处理存储在 Amazon Redshift 服务器中的一些数据。由于我最熟悉 Django,我正在考虑在应用程序层使用它。

但我不知道如何连接到 Redshift 并检索数据。我只有连接到本地 MySQL 服务器和工作的经验。

所以这似乎是我唯一的选择:

https://github.com/binarydud/django-redshift :用于 django 的 Redshift 数据库后端。但我不确定它的稳定性,我不想以后遇到严重的问题,所以我对此有点怀疑。

另一个选项可能是(如果我错了,请纠正我),我使用这个: https://github.com/lionheart/django-pyodbc/

由于 Redshift 支持 ODBC 连接,这应该可以正常工作吗? Django ORM 会正常工作吗?有什么可以预见的问题吗?

我很想请一些对 Django 更有经验的人来了解我的情况。非常感谢!

【问题讨论】:

    标签: sql django amazon-redshift


    【解决方案1】:

    我在玩https://github.com/jazzband/django-redshift-backend,还有其他人吗?

    我的计划是将 ORM 用于元数据类型的表(系统、制造商等),这些表具有少量数据并全部分配,然后将原始 sql 用于时间序列表上的任何聚合函数和/或使用用于更密集活动的缓存表。

    到目前为止,我已经创建了几个模型,使用 ForeignKey 将它们关联起来,它正在工作。接下来,我将尝试利用 admin。

    我们可能需要切换到两种数据库架构:一种用于元数据,一种用于时间序列数据。

    【讨论】:

      【解决方案2】:

      Redshift 的界面是为理解 PostgreSQL 8.0.2 而构建的:http://docs.aws.amazon.com/redshift/latest/dg/c_redshift-and-postgres-sql.html

      因此,为了从 Redshift Django 的 PostgreSQL 读取数据,我正在处理的当前项目仅使用 Django 'psycopg2' 后端。这是来自设置:

      DATABASES = {
          'default': {
              'NAME': '[cluster name]',
              'ENGINE': 'django.db.backends.postgresql_psycopg2',
              'USER': '[your user]',
              'PASSWORD': '[your pw]',
              'HOST': '[path to your cluster].redshift.amazonaws.com',
              'PORT': 5439,
          },
      }
      

      有关连接的更多信息在这里 - http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-in-code.html - 但目前仅适用于 Java 和 .NET。

      ORM 应该对大多数查询正常工作,尽管它们不会针对 Redshift 进行优化 - 因此请注意您发出的查询数量,因为在单个视图中不必要地多次发送慢速查询并不是不错。

      【讨论】:

      • 我使用 PYGRESQL,到目前为止它一直很好。这是一个示例用法 def getConnection(): con = pg.connect("database_name", "host", int(port), "opt ", "tty", "user", "password") 返回 con
      • 这个答案已经有 4 年历史了,虽然仍然正确(我能够从 Django 连接到 Redshift),但 Django 同时放弃了对 PostgreSQL 8 的支持,因此这里的不兼容数量使它相当使用不切实际(所以关于 ORM 正常工作的部分不再正确,可能只是用于简单查询)。有谁知道如何阻止 Django 使用 PostgreSQL 9 中的至少一些功能?
      猜你喜欢
      • 1970-01-01
      • 2013-09-21
      • 2015-09-01
      • 1970-01-01
      • 2017-04-15
      • 2014-02-28
      • 2015-12-11
      • 1970-01-01
      • 2019-07-16
      相关资源
      最近更新 更多