gpt4 book ai didi

postgresql - 为什么开放街道 map (OSM) 使用 PostgreSQL 数据库?

转载 作者:行者123 更新时间:2023-12-02 16:34:08 28 4
gpt4 key购买 nike

在过去的几个月里,我一直在使用 GitHub (link here) 上的 openstreetmap-tile-server 从 Docker 容器渲染 OSM tiles。切片服务器使用 PostgreSQL 数据库来存储其数据。通过对创建我自己的 OSM 切片和我自己的切片服务器进行更多研究,很多教程都提到了使用 PostgreSQL 数据库。

这是为什么?为什么不使用 MySQL 等 SQL 数据库呢?对于 openstreetmap 数据等数据集,使用 PostgreSQL 而不是不同的 SQL 数据库可以获得/获得什么?


编辑:编辑问题,表明我正在将 Postgres 与其他 SQL 数据库进行比较。

最佳答案

最初 MySQL 实际上用于存储实际 OSM 数据的主要内部 OSM 数据库,并通过 OSM API 查询和修改。不过,出于图 block 渲染和其他目的,从未使用过内部原始格式,而是将 OSM 数据导出为压缩 XML 或更紧凑的二进制 PBF 格式,并将其导入到更适合进一步处理的数据库模式中。

通常这是使用“imposm”或“osm2pgsql”工具完成的,使用 PostgreSQL/PostGIS 组合作为 RDBMS 的选择,因为它提供了最强大的 GIS 功能集,至少在免费和开源中是这样世界。

OSM 主数据库是一个异常(exception),因为对它的任何查询总是只检索矩形区域的数据,因此实际上不需要 GIS 扩展,在这种情况下将坐标存储为简单的数字数据就足够了。最终决定也将其切换到 PostgreSQL,以减少在 openstreetmap.org 站点设置中维护的不同组件的数量。

理论上,您也可以使用其他支持 GIS 的 RDBMS,例如SQLite 或 MariaDB/MySQL 的 SpatiaLite 变体,但与 PostgreSQL/PostGIS 设置相比,它们有其缺点:

例如SpatiaLite 只有在只有一个线程访问数据时才有用,并发访问时它根本无法很好地扩展。

而 MariaDB 和 MySQL 只真正或多或少地实现了 OpenGIS SQL 规范的最低限度,甚至在过去几年才真正实现。在功能方面,两者至少仍落后于 PostGIS 十多年。

免责声明:即使是我,虽然在 MariaDB Corp 工作,并且之前曾在 MySQL AB 工作过,总共十多年,但一直建议在 GIS 应用程序中使用 PostGIS 而不是 MariaDB 或 MySQL,除非有人绑定(bind)到 MariaDB 或 MySQL已经出于其他原因。

关于postgresql - 为什么开放街道 map (OSM) 使用 PostgreSQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63020402/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com