mysql 存储地理信息_使用Amazon Aurora存储和处理地理信息数据
地理信息是一種特定的空間信息,無論在科學研究還是日常生活中都有廣泛應用。我們通常使用計算機和相關軟件對地理信息進行儲存、管理、運算、分析、顯示等操作。
我們對地理信息最常見的使用是導航,對地理信息最有前景的使用場景是自動駕駛。這兩種場景都對地理信息的存儲和使用有許多新的需求,這些需求包括對地理信息的實時更新、并發讀寫、版本控制、高可用和高可靠等。
當前,地理信息存儲和處理方式,無論是傳統方法把地理信息存放在二進制文件中, 還是把地理信息存放在傳統的關系數據庫里,都無法滿足上面提到的新需求。而使用Amazon Aurora可以更好的滿足這些新的需求。
Amazon Aurora 是一種與 MySQL 和 PostgreSQL 兼容的關系數據庫,專為云而打造,既具有高端商用數據庫的性能和可用性,又具有開源數據庫的簡單性和成本效益。
Aurora 的速度最高可以達到標準 MySQL 數據庫的五倍、標準 PostgreSQL 數據庫的三倍。它可以實現商用數據庫的安全性、可用性和可靠性,而成本只有商用數據庫的 1/10。Aurora 由 Amazon Relational Database Service (RDS) 完全托管,而 RDS 可以自動執行各種耗時的管理任務,例如硬件預置以及數據庫設置、修補和備份。
下面,我們將逐步演示如何把OSM(Open Street Map)數據導入Amazon Aurora 數據庫,并對地理數據做查詢操作。
1. 創建Aurora數據庫。
為了支持PostGIS 1.5+, 在創建Aurora數據庫時,選擇PostgreSQL-compatible,如下圖所示:
2. 在創建好的Aurora數據庫上啟動PostGIS,Hstore等相關組件。PostGIS 是一個 PostgreSQL 擴展,用于存儲和管理空間信息。步驟如下:
首先,使用創建數據庫實例的主用戶名連接到數據庫實例;
然后加載PostGIS擴展,使用CREAT EXTENSION語句加載擴展。
運行下面語句:
CREATE EXTENSION hstore;
結果如下:
運行下面語句:
CREATE EXTENSION postgis;
結果如下:
運行下面語句:
CREATE EXTENSION fuzzystrmatch;
結果如下:
運行下面語句:
CREATE EXTENSION postgis_tiger_geocoder;
結果如下:
運行下面語句:
CREATE EXTENSION postgis_topology;
結果如下:
最后使用 ALTER SCHEMA 語句將所有權移交給 rds_superuser 角色。
運行下面語句:
ALTER SCHEMA tiger owner to rds_superuser;
結果如下:
運行下面語句:
ALTER SCHEMA tiger_data owner to rds_superuser;
結果如下:
運行下面語句:
ALTER SCHEMA topology owner to rds_superuser;
結果如下:
3. 下載中國的OSM(open street map)數據文件, 下載鏈接
為了把中國的OSM數據導入Aurora數據庫,我們需要使用osm2pgsql工具,在本文中,我們 使用一臺EC2 linux服務器運行osm2pgsql工具導入地理信息數據。
首先我們下載osm2pgsql源文件,
git clone git://github.com/openstreetmap/osm2pgsql.git
然后安裝osm2pgsql需要的依賴庫
yum install cmake gcc-c++ boost-devel expat-devel zlib-devel bzip2-devel postgresql-devel geos-devel proj-devel proj-epsg lua-devel -y
最后編譯osm2pgsql工具
cd osm2pgsql-master
mkdir build && cd build
cmake .. && make && make install
運行結果如下:
4.? 導入中國OSM數據
osm2pgsql ./china-latest.osm.bz2 -d OSMChina -U root -P 5432 -S ./default.style --hstore -H giscluster.cluster-ccnfhuymduul.rds.cn-northwest-1.amazonaws.com.cn? -W
其中文件china-latest.osm.bz2是步驟2下載的中國OSM數據
-d 指定了Aurora中數據庫的名字
-S ./default.style是樣式文件,在osm2pgsql的源文件目錄里。
其他是連接數據庫需要的參數,比如數據庫的endpoint和用戶名密碼下圖是osm2pgsql的導入過程截圖:
我們可以看到,導入全部中國OSM數據用了603s
5.? 檢查Aurora中導入的中國OSM數據
數據導入成功后,數據庫中會有3個新的表, 如下圖:
planet_osm_point: 包含PoI(Point of Interet)信息;
planet_osm_lines: 包含道路和街道信息;
planet_osm_polygons: 包含湖泊,建筑,行政區等信息。
6.? 查詢在Aurora里存儲的中國OSM信息
SELECT name, ST_AsText(ST_Transform(way,4326)) AS pt_lonlattext -- tags
FROM? planet_osm_point
WHERE tags @> 'cuisine=>sushi'::hstore;
你可以看到查詢結果如下:
通過上面六步操作,我們把中國的OSM數據導入到了Aurora 數據庫,并且可以使用SQL語句查詢地理信息。使用Aurora 數據庫后,地理信息數據庫可以支持更大的并發量和更快的查詢速度,獲得更好的可用性。同時,利用Aurora完全托管的特性,數據庫管理員可以省去許多繁瑣的操作,例如硬件預置以及數據庫設置、修補和備份。我們既得到了高端商用數據庫的性能和可用性,又有開源數據庫的簡單性和成本效益。
本篇作者
AWS解決方案架構師,負責企業級客戶的架構和云上遷移等工作。
總結
以上是生活随笔為你收集整理的mysql 存储地理信息_使用Amazon Aurora存储和处理地理信息数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql md_MySQL主从.md
- 下一篇: mysql数据库对时间的函数吗_mysq