【问题标题】:Separating GEO database from normal database将 GEO 数据库与普通数据库分离
【发布时间】:2013-02-19 06:30:30
【问题描述】:

目前我有 2 个数据库

  1. 主(默认)数据库,包含用户、帖子等所有内容(此数据库在 PostgreSQL wie psycopg2 上运行)
  2. 辅助(地理)数据库,仅包含地理数据(此数据库在 postgis 1.5 上运行)

Django 和 PG 不支持跨数据库关系是有充分理由的,我已经知道了,但是我将我的数据库分开了,因为我担心地理数据库针对地理数据进行了优化,如果我将所有数据混合在一个数据库中整个性能都会受到影响,而且我什至不知道我是否可以在一个数据库地理和普通数据中拥有一切。 但我想将主 (1) 数据库中的数据关联到辅助 (2) 数据库。

这种做法是合理的,还是分拆是完全错误的?

【问题讨论】:

  • 如果你想连接两个表中的数据,它们必须在同一个数据库中,否则将无法工作。
  • @Patashu 我知道。而且我不需要加入仅自定义数据的关系。例如。 A ist 在 (1) 上,B ist 在 (2) 上。 B 是与 A 相关的地理条目。A.get_B() 可以轻松地在数据库 (2) 上发出查询,传递 A 的主键,该主键只是 B 表上的一个 bigint,但已编入索引。

标签: python django postgresql postgis geo


【解决方案1】:

如果您关心性能,显然数据需要在一个数据库中。

空间并不特殊,它只是另一种数据类型。我不明白为什么启用 PostGIS 会损害数据库的性能。但是,使用主数据库的副本对此进行测试并没有什么坏处,特别是对于生产环境。

如果您担心启用 PostGIS 会将数百个函数添加到“公共”架构中,您可以创建一个“postgis”架构并将扩展程序放在那里。 See these details。但是,我不确定 geodjango 将如何应对这种设置。

【讨论】:

  • 该链接非常有趣,我必须升级到 PostGIS 2.0,但我认为这不会是一个大问题。我今天将实施一个测试设置,并在完成后立即发表评论。
  • Here's another resource。我记得 PostGIS 1.5 的类似方法,但不确定它去了哪里。请记住PostGIS 1.5 is supported up to PostgreSQL 9.1(但不是更新的)。
  • 对我来说很好。非常感谢。
猜你喜欢
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 2013-10-17
相关资源
最近更新 更多