跳转到主要内容

标签: GIS

  • Git for Data: 瞬间克隆PG数据库

    冯若航 发布于 PGSQL 3518 字 8 分钟

    冯若航PostgreSQLPG开发GIS

    Git for Data: 瞬间克隆PG数据库

    每个程序员都用过 git clone。敲下回车,几秒钟后,一个完整的代码仓库就躺在硬盘上了。 但数据库呢? 想给测试环境搞一份生产数据的副本?传统方案是 pg_dump + pg_restore。一个 100GB 的库,喝杯咖啡回来可能还没完。想做并行测试?再等一轮。想给 AI Agent 一个可以随便折腾的沙盒?那得准备好足够的磁盘和耐心。 最近一堆数据库公司都在卷 “Git for Data”,理由是:有了数据版本控制,Agent 就可以放心在数据库里乱搞,坏了随时回滚。 但这玩意 …

    每个程序员都用过 git clone。敲下回车,几秒钟后,一个完整的代码仓库就躺在硬盘上了。 但数据库呢? 想给测试环境搞一份生产数据的副本?传统方案是 pg_dump + pg_restore。一个 100GB 的库,喝杯咖啡回来可能还没完。想做并行测试?再等一轮。想给 AI Agent 一个可以随便折腾的沙盒?那得准备好足够的磁盘和耐心。 最近一堆数据库公司都在卷 “Git for Data”,理由是:有了数据版本控制,Agent 就可以放心在数据库里乱搞,坏了随时回滚。 但这玩意 …

  • GeoIP 地理逆查询优化

    冯若航 发布于 PGSQL 2902 字 6 分钟

    冯若航PostgreSQLPG开发扩展GIS

    GeoIP 地理逆查询优化

    IP归属地查询的高效实现 在应用开发中,一个‘很常见’的需求就是GeoIP转换。将请求的来源IP转换为相应的地理坐标,或者行政区划(国家-省-市-县-乡-镇)。这种功能有很多用途,譬如分析网站流量的地理来源,或者干一些坏事。使用PostgreSQL可以多快好省,优雅高效地实现这一需求。 0x01 思路方法 通常网上的IP地理数据库的形式都是:start_ip, stop_ip , longitude, latitude,再缀上一些国家代码,城市代码,邮编之类的属性字段。大概长这样: …

    IP归属地查询的高效实现 在应用开发中,一个‘很常见’的需求就是GeoIP转换。将请求的来源IP转换为相应的地理坐标,或者行政区划(国家-省-市-县-乡-镇)。这种功能有很多用途,譬如分析网站流量的地理来源,或者干一些坏事。使用PostgreSQL可以多快好省,优雅高效地实现这一需求。 0x01 思路方法 通常网上的IP地理数据库的形式都是:start_ip, stop_ip , longitude, latitude,再缀上一些国家代码,城市代码,邮编之类的属性字段。大概长这样: …

  • PostGIS高效解决行政区划归属查询

    冯若航 发布于 PGSQL 4305 字 9 分钟

    冯若航PostgreSQLPG开发GIS

    PostGIS高效解决行政区划归属查询

    微信公众号原文 在应用开发中,很多时候我们需要解决这样一个问题:根据用户的经纬度坐标,定位用户的行政区划。 我们收集到的是诸如 28°00'00"N 100°00'00.000"E 这样的经纬度坐标,但实际感兴趣的是这个点所属的行政区划:(中华人民共和国,云南省,迪庆藏族自治州,香格里拉市)。这种将地理坐标映射到某条记录的操作就称为 地理编码(GeoEncode)。高效实现地理编码是一个很有趣的问题。 本文介绍了该问题的解决与优化方案:能在确保正确性的前提下,能用几兆的空间,110μs的执行时 …

    微信公众号原文 在应用开发中,很多时候我们需要解决这样一个问题:根据用户的经纬度坐标,定位用户的行政区划。 我们收集到的是诸如 28°00'00"N 100°00'00.000"E 这样的经纬度坐标,但实际感兴趣的是这个点所属的行政区划:(中华人民共和国,云南省,迪庆藏族自治州,香格里拉市)。这种将地理坐标映射到某条记录的操作就称为 地理编码(GeoEncode)。高效实现地理编码是一个很有趣的问题。 本文介绍了该问题的解决与优化方案:能在确保正确性的前提下,能用几兆的空间,110μs的执行时 …

  • KNN极致优化:从RDS到PostGIS

    冯若航 发布于 PGSQL 8223 字 17 分钟

    冯若航PostgreSQLPG开发机器学习GIS

    KNN极致优化:从RDS到PostGIS

    灵活应用数据库的功能,可以轻松实现 GIS 圈选场景下三万倍的性能提升。 Level 方法 性能/耗时(ms) 可维护性/可靠性 备注 1 暴力扫表 30,000 - 形式简单 2 经纬索引 35 复杂度/魔数问题 额外复杂度 3 联合索引 10 复杂度/魔数问题 额外复杂度 4 GIST 4 最简表达,完全精确 形式简单,距离更精确,PostgreSQL限定 5 btree_gist 联合索引 1 最简表达,完全精确 形式简单,距离更精确,PostgreSQL限定 场景 互联网中的很多业务都涉 …

    灵活应用数据库的功能,可以轻松实现 GIS 圈选场景下三万倍的性能提升。 Level 方法 性能/耗时(ms) 可维护性/可靠性 备注 1 暴力扫表 30,000 - 形式简单 2 经纬索引 35 复杂度/魔数问题 额外复杂度 3 联合索引 10 复杂度/魔数问题 额外复杂度 4 GIST 4 最简表达,完全精确 形式简单,距离更精确,PostgreSQL限定 5 btree_gist 联合索引 1 最简表达,完全精确 形式简单,距离更精确,PostgreSQL限定 场景 互联网中的很多业务都涉 …