Django的Redshift DB后端

时间:2014-07-17 05:17:26

标签: sql django amazon-redshift

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

但我无法弄清楚如何连接到Redshift和retreive数据。我只有连接本地MySQL服务器和工作的经验。

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

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

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

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

我喜欢Django更有经验的人对我的情况有所了解。非常感谢!

2 个答案:

答案 0 :(得分:10)

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进行优化 - 因此请密切注意您发出的查询数量,因为在单个中不必要地发送了很多次查询观点并不好。

答案 1 :(得分:0)

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

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

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

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