我需要处理存储在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更有经验的人对我的情况有所了解。非常感谢!
答案 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将它们关联起来,可以正常工作。接下来,我将尝试利用管理员。
我们可能需要切换到两种数据库体系结构:一种用于元数据,一种用于时间序列数据。