DataStore

功能簡介


  • 上傳至資料庫的資料內容,可提供 資料預覽外掛 使用。
  • 提供 DataStore API 可供開發者以 RESTful API 取得 JSON 格式資料。

系統需求


  • CKAN (>=2.1)
  • PostgreSQL (>=9.0)
註解
若依照本文件的教學安裝 CKAN,你應該已經滿足所有套件需求

設定


  • 啟用 DataStore: 修改 CKAN 設定檔(一般位於 /etc/ckan/default/),因於 CKAN 佈署之「設定開機自動執行」中 Script 用 production.ini,所以接下來需用 production.ini 進行修改,若是為測試用則可以用 development.ini,在 ckan.plugins 最後加上:

    ckan.plugins = datastore
    
  • 新增 DataStore 使用之 PostgreSQL 使用者:

    $ sudo -u postgres createuser -S -D -R -P -l datastore_default
    
  • 新增 DataStore 使用之資料庫:

    $ sudo -u postgres createdb -O ckan_default datastore_default -E utf-8
    
  • DataStore 資料庫連線設定:
    修改 CKAN 設定檔,搜尋下面字串,並將帳號密碼與 db 名稱依照上一步所新增的 db 設定:

    ckan.datastore.write_url = postgresql://ckan_default:password@localhost/datastore_default
    ckan.datastore.read_url = postgresql://datastore_default:password@localhost/datastore_default
    
註解
write_url 的第一個 ckan_default 是 CKAN 資料庫使用者名稱,pass 請填寫 db 密碼,最後的 datastore_default 填入 db 名稱,read_url 同理。
  • DataStore 資料庫權限設定:

    (pyenv) $ paster --plugin=ckan datastore set-permissions -c /etc/ckan/default/production.ini
    
  • 重新啟動 CKAN

  • 測試 DataStore,可輸入以下指令:

    $ curl -X GET "http://127.0.0.1/api/3/action/datastore_search?resource_id=_table_metadata"
    

    可能得到結果如下

    {"help": "http://127.0.0.1:5000/api/3/action/help_show?name=datastore_search", "success": true, "result": {"resource_id": "_table_metadata", "fields": [{"type": "text", "id": "_id"}, {"type": "name", "id": "name"}, {"type": "oid", "id": "oid"}, {"type": "name", "id": "alias_of"}], "records": [{"_id": "1fab8662e5772995", "alias_of": "pg_views", "name": "_table_metadata", "oid": 18106}, {"_id": "21b5fe766665b205", "alias_of": "pg_tables", "name": "_table_metadata", "oid": 18106}], "_links": {"start": "/api/3/action/datastore_search?resource_id=_table_metadata", "next": "/api/3/action/datastore_search?offset=100&resource_id=_table_metadata"}, "total": 2}}
    

修正 Data Explorer 中 MapQuest 問題


  • 修改 ckanext/reclineview/theme/public/vendor/recline/recline.js 檔案 (因 datastore 是透過 plugin recline_view 來達成 map view 功能)
 // ...

  _setupMap: function(){
    var self = this;
    this.map = new L.Map(this.$map.get(0));

    //var mapUrl = "//otile{s}-s.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png";
    var mapUrl = "//api.tiles.mapbox.com/v4/<your id>/{z}/{x}/{y}.png?access_token=<your token>";
    var osmAttribution = 'Mapbox &copy; OpenStreetMap';

  // ...

results matching ""

    No results matching ""