如何将外部远程数据库复制到本地数据库? (CouchDB / MongoDB)

时间:2012-04-23 15:42:23

标签: json mongodb couchdb database-replication database-mirroring

我想扩展通过web service interface提供的远程数据库的数据模型。可以通过HTTP GET请求数据,并以JSON(example request)的形式提供。其他格式也受支持。

// URL of the example request.
http://data.wien.gv.at/daten/wfs?service=WFS&request=GetFeature&version=1.1.0&typeName=ogdwien:BAUMOGD&srsName=EPSG:4326&outputFormat=json&maxfeatures=5

JSON答案的第一个对象。

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
       "id": "BAUMOGD.3390628",
       "geometry": {
          "type": "Point",
          "coordinates": [
             16.352910973544105,
             48.143425569989326
          ]
       },
       "geometry_name": "SHAPE",
       "properties": {
          "BAUMNUMMER": "1022 ",
          "GEBIET": "Strassen",
          "STRASSE": "Jochen-Rindt-Strasse",
          "ART": "Gleditsia triacanthos (Lederhülsenbaum)",
          "PFLANZJAHR": 1995,
          "STAMMUMFANG": 94,
          "KRONENDURCHMESSER": 9,
          "BAUMHOEHE": 11
       }
    },
...

我的想法是在我自己的服务器上扩展数据模型(例如添加文本字段),从而以某种方式镜像数据库。我偶然发现了CouchDB及其基于文档的架构,它感觉适合处理上述JSON对象。现在,我要求就如何复制外国数据库最初以及定期的基础提出建议。

您认为CouchDB是一个不错的选择吗?我还想过MongoDB。如果可能的话,我想避免构建完整的Rails后端来设置复制。你推荐什么?

1 个答案:

答案 0 :(得分:0)

如果远程数据库是静态的(数据没有改变),那么它可以工作。您只需要找到一种迭代所有记录的方法。一旦你想出来,剩下的就像馅饼一样简单:1)查询数据; 2)将响应存储在本地数据库中; 3)根据需要进行修改。

如果远程数据发生变化,你会遇到很多麻烦(你必须每隔一段时间以相同的方式重新同步)。我要做的是创建一个只包含新字段和对原始数据的引用的本地数据库。也就是说,当您从远程服务请求数据时,您还会查看本地数据库中是否有某些内容并在处理最终结果之前合并这两个数据。