-1

晚上好。

所以,我必须存储不同地方的信息。每个地方都有不同的信息,包括标题、类别和位置。问题是我将有大约 5000 万个地点,我必须按标题、类别和位置(包括街道、国家等)来搜索它们。

我已经安装了 MySql 和 mongoDB,但也接受了其他替代方案。此外,服务器现在只有 2GB(稍后会增加 - 更多 RAM 甚至可能是集群......但稍后),我不确定它是否足够。硬盘空间应该绰绰有余。

我的一些想法是为每个地方创建标签,并按标签搜索(标签将是我用于搜索和索引的字段),但我不确定这是否是一个好主意以及如何更好地实施.

关于如何更好地实施它有什么建议吗?我将只用所有信息填写一次,然后仅将其用于搜索。

PS:在当前的测试版本中,我使用的是来自 JAVA 的 MySql 数据库和 JDBC(虽然它比 JPA 解决方案更快)。

4

1 回答 1

1

我会考虑 5000 万行中等大小。当然不是“大”,并且在 MySQL 或 Mongo DB 的处理能力范围内。

SQL(例如 MySQL)与 NoSQL(例如 Mongo DB)的选择应该由一系列广泛的考虑因素驱动,包括性能要求、查询模式、分片要求(Mongo DB 在这里很强大)和团队的经验。对于您不熟悉的数据库,要完成所有操作任务需要相当长的学习曲线。

您必须拥有的 RAM 数量由工作集决定……通常是全天访问的记录数。如果某些记录被大量访问(加利福尼亚州洛杉矶)而其他记录很少被访问(加利福尼亚州洛斯巴诺斯),则与以相同可能性访问所有记录相比,您需要更少的内存来获得良好的整体性能。在流程中尽早进行性能测量,以便您可以计划所需的 RAM 量。

通过地理搜索,如果您允许自由文本输入,用户通常会提供不完整的信息或部分不正确的信息。标签对此并没有真正的帮助。

如果您以结构化方式(例如下拉菜单)呈现位置选择,您可以只使用位置的主键作为“标签”。

于 2013-03-19T21:19:49.643 回答