亚马逊AWS官方博客
使用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,如下图所示:
按照Aurora数据库手册创建Aurora数据库(Create an Aurora PostgreSQL DB Cluster)。
2. 在创建好的Aurora数据库上启动PostGIS,Hstore等相关组件。PostGIS 是一个 PostgreSQL 扩展,用于存储和管理空间信息。步骤如下:
首先,使用创建数据库实例的主用户名连接到数据库实例;
然后加载PostGIS扩展,使用CREAT EXTENSION语句加载扩展。
运行下面语句:
结果如下:
运行下面语句:
结果如下:
运行下面语句:
结果如下:
运行下面语句:
结果如下:
运行下面语句:
结果如下:
最后使用 ALTER SCHEMA 语句将所有权移交给 rds_superuser 角色。
运行下面语句:
结果如下:
运行下面语句:
结果如下:
运行下面语句:
结果如下:
3. 下载中国的OSM(open street map)数据文件, 下载链接
为了把中国的OSM数据导入Aurora数据库,我们需要使用osm2pgsql工具,在本文中,我们 使用一台EC2 linux服务器运行osm2pgsql工具导入地理信息数据。
首先我们下载osm2pgsql源文件,
git clone git://github.com/openstreetmap/osm2pgsql.git
然后安装osm2pgsql需要的依赖库
最后编译osm2pgsql工具
运行结果如下:
4. 导入中国OSM数据
其中文件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信息
你可以看到查询结果如下:
通过上面六步操作,我们把中国的OSM数据导入到了Aurora 数据库,并且可以使用SQL语句查询地理信息。使用Aurora 数据库后,地理信息数据库可以支持更大的并发量和更快的查询速度,获得更好的可用性。同时,利用Aurora完全托管的特性,数据库管理员可以省去许多繁琐的操作,例如硬件预置以及数据库设置、修补和备份。我们既得到了高端商用数据库的性能和可用性,又有开源数据库的简单性和成本效益。