首页 > 解决方案 > 保存国家/地区明智的州和城市信息的最佳选择是什么?XML 还是数据库?

问题描述

我正在创建世界上所有国家和主要城市的列表。该列表有大约 7000 个节点,包括国家、州和城市。看起来像这样:

United States - California - Los Angeles

我需要按关键字搜索位置。我创建了一个 XML 文件来存储它们,文件大约 300kb,平均查询时间为 30-40ms。

但是现在我需要通过多种语言搜索位置,所以我必须扩展文件,这是一个问题。我喜欢直接读取 XML 的便利,但我需要数据库的可扩展性。

我想知道我应该使用哪一个来存储这些不经常更改但需要查询的数据?

标签: sqlxmldatabase

解决方案


XML 是一种非常有用的技术,用于在不同数据库之间或数据库与其他程序之间移动数据。但是,它本身并不是数据库。XML 是一种数据交换格式。可以拥有可以使用 XPath 表达式查询 DOM 的 XML 解析库,但这与 DBMS 不同。

我宁愿在 XML 上使用任何 DBMS。

在这里,我发现了另一个关于此问题的 stackoverflow 问题,它有很好的答案:

“XML 不是数据库。它从来都不是数据库。它永远不会成为数据库。关系数据库是经过验证的技术,具有 20 多年的实施经验。它们是坚固、稳定、有用的产品。他们不会消失。XML 是一种非常有用的技术,用于在不同数据库之间或数据库与其他程序之间移动数据。但是,它本身并不是数据库。不要像一个人一样使用它。“</p>

https://stackoverflow.com/questions/201568/when-would-i-use-xml-instead-of-sql#:~:text=XML%20is%20a%20very%20useful,is%20not%20itself%20a %20database.&text=XML%20is%20a%20data%20interchange,same%20thing%20as%20a%20DBMS

您可以创建三个表:

Country (ID int, Name varchar(200));
State (ID int, Name varchar(200), CountryID int);
City (ID int, Name varchar(200), StateID int);

所有三个表的 ID 字段都可以是自动递增的主键列。State 表中的 CountryID 将是 Country 表中 ID 列的外键,City 表中的 StateID 将是 State 表中 ID 列的外键。

您还可以将代码列添加到所有三个表中,以将国家代码、州代码和城市代码添加到您的数据中。


推荐阅读