在 Postgres 中正确存储数百万 Phone 个数字
Proper Storage of Millions of Phone Numbers in Postgres
我正在从事一个专注于 phone 数字元信息的项目。
使用 postgres,我们将用数百万 phone 个数字作为数据库的种子,我很关心存储此信息的最佳方式。
现在我一直在考虑 phones
table,每一行都将 phone 数字表示为一个字符串。然后简单地加入......如下所示:
+-----------------------+ +-----------------------+
| phone_numbers | | phones |
+-----------------------+ +-----------------------+
| id: integer +-------+ | id: integer |
| digits: string | | | |
| | +-----+ phone_number: integer |
| | | |
| | | |
| | | |
+-----------------------+ +-----------------------+
关于 phone 数字的存储,应该如何设计数据库架构?
对于国际 phone 号码,您真正可以遵循的唯一模式是将它们分成三个部分:
- 国际直拨前缀(可能与table关联以查找国家代码:http://en.wikipedia.org/wiki/List_of_country_calling_codes)
- phone 号码本身。
- 分机号码
将它们存储为字符串以保留任何所需的格式空格或前导零,并验证它们是否遵循批准的模式。
选择是否存储国内 phone 号码“0”前缀——最好尽可能坚持 E.123 号码表示:http://en.wikipedia.org/wiki/E.123
我正在从事一个专注于 phone 数字元信息的项目。
使用 postgres,我们将用数百万 phone 个数字作为数据库的种子,我很关心存储此信息的最佳方式。
现在我一直在考虑 phones
table,每一行都将 phone 数字表示为一个字符串。然后简单地加入......如下所示:
+-----------------------+ +-----------------------+
| phone_numbers | | phones |
+-----------------------+ +-----------------------+
| id: integer +-------+ | id: integer |
| digits: string | | | |
| | +-----+ phone_number: integer |
| | | |
| | | |
| | | |
+-----------------------+ +-----------------------+
关于 phone 数字的存储,应该如何设计数据库架构?
对于国际 phone 号码,您真正可以遵循的唯一模式是将它们分成三个部分:
- 国际直拨前缀(可能与table关联以查找国家代码:http://en.wikipedia.org/wiki/List_of_country_calling_codes)
- phone 号码本身。
- 分机号码
将它们存储为字符串以保留任何所需的格式空格或前导零,并验证它们是否遵循批准的模式。
选择是否存储国内 phone 号码“0”前缀——最好尽可能坚持 E.123 号码表示:http://en.wikipedia.org/wiki/E.123