database - 如何有效地保存和检索城市、地区、国家
问题描述
我需要保存和查找有关Place
我的数据库实体的信息。Place
可以是城市、地区或国家。
我正在寻找最有效的解决方案来保存和检索这些信息,无论是在速度方面还是在开发时间方面。
我确定了两个可行的选择,但都有明显的缺点。
- DYI 方法:填充(并维护)3 张表,一张用于世界城市,一张用于世界地区,一张用于世界国家。城市对地区和地区对国家的外键引用。如果一些国家没有地区,我会简单地将城市直接连接到国家。这种方法的问题在于 Cities 和 Regions 表会很大,而且维护起来根本不切实际。此外,我还没有找到一个很好的资源来填充数据。
- 依赖第三方 API:我想到的另一种方法是依赖 google place API。我可以使用 API 仅搜索城市、地区和国家,结果我得到了以下格式的 JSON:
{
...
"geometry": {
...
},
"icon": "https://icons/geocode-71.png",
"id": "3a4638f694c001b0aa4f710e9b7925bf914e4f56",
"name": "Arco"
}
作为一个选项,我认为我可以将 google place id 保存在我的数据库中。这将使存储信息和在需要时检索所有相关数据变得非常容易。但是,如果 Google 决定更改其 id怎么办?
我还有其他选择吗?你遇到过类似的问题吗?列出的问题是否有解决方法?
解决方案
推荐阅读
- python - 使用 UvicornWorker 时 Gunicorn 不遵守超时
- rest - Rest API Hateoas:API 响应应该有硬编码的标识符还是占位符?
- json.net - 忽略序列化的一些默认值
- c - 用逗号读取输入(使用 sscanf)
- angular6 - 我无法从已存储服务数组的数组中找到元素。在控制台输出中它总是显示未定义的消息
- javascript - 当我按 Enter 时
- python - 如何计算二进制消息之间的距离?
- sharepoint - SharePoint 中的可配置静态选项卡
- simulation - 到达特定补丁后如何让乌龟执行特定任务?
- loops - Ansible with_items loop over groups, defined as a list