【发布时间】:2015-06-28 08:12:14
【问题描述】:
我即将构建一个存储多达 5 亿条域名记录的应用程序。 我将索引“.net”或“.com”部分并在开头去掉“www”。 所以我相信表格应该是这样的:
domain_id | domain_name | domain_ext
----------+--------------+-----------
1 | dropbox | 2
2 | digitalocean | 2
domain_ext = 2 表示它是一个“.com”域。
我将要执行的查询::
- 我需要能够轻松插入新域。
- 我还需要确保我没有插入重复项(每个域应该只有 1 条记录),所以我认为将
domain_name + domain_ext设为唯一索引(使用 MySQL - InnoDB)。 - 批量查询域名。例如:
SELECT * FROM tbl_domains LIMIT 300000, 600;
你怎么看?该表会保存数亿条记录吗? 按域名的第一个字母分区怎么样,这样好吗? 让我知道你的建议,我很开放。
【问题讨论】:
-
您是否考虑过使用更好的数据库来使用“全文搜索”?看看“cassandra db”、“solr”或其他性能良好的数据库,如“orient db”。
-
就像我说的,我思想开放。经过一番思考,我认为我不需要全文搜索,因为我可以使用 MySQL 的唯一索引。
-
那么,我推荐你orientdb,因为你每秒可以做很多操作,非常快:orientdb.com
-
所以 mail.somedomain.com 和 www.somedomain.com 是否满足您的需求?像 co.uk 或 tv 这样的扩展呢?另外,.net 指向与 .com 扩展名相同的网站的地址呢?是否应该将它们视为 2 个不同的域?
-
@ZoharPeled ,我确实关心子域 (mail.somedomain.com)。像 co.uk 这样的扩展名会有不同的 extension_id。哦,而且...我不在乎两个域是否指向同一个网站。
标签: mysql database-design