晚上好。
所以,我必须存储有关不同地方的信息。每个地方都有不同的信息,包括标题,类别和位置。问题是我将有大约5000万个地方,我将不得不按标题,类别和位置(包括街道,国家等)搜索它们。
我已经安装了MySql和mongoDB,但也接受了其他替代方案。此外,服务器现在只有2GB(稍后会增加 - 更多内存,甚至可能是集群......但后来),我不确定它是否足够。硬盘空间应该足够了。
我的一些想法是为每个地方创建标签,并按标签搜索(标签将是我用于搜索和索引的字段),但我不确定它是否是一个好主意,它是如何做的更好地实施。
有没有关于如何实施它的建议?我将仅使用所有信息填写一次,然后仅将其用于搜索。
P.S。:在当前的测试版本中,我正在使用JAVA的MySql数据库,使用JDBC(虽然它比JPA解决方案更快)。
答案 0 :(得分:1)
我会考虑5000万行中型。当然不是“大”,并且在MySQL或Mongo DB的处理能力范围内。
SQL(例如MySQL)与NoSQL(例如Mongo DB)的选择应该受到一系列考虑因素的驱动,包括性能要求,查询模式,分片要求(Mongo DB在这里很强大)以及团队的经验。对于您不熟悉的数据库来说,所有操作任务都是正确的学习曲线。
您必须拥有的RAM数量取决于工作集...通常在一天中访问的记录数。如果一些记录(洛杉矶,加利福尼亚州)和其他记录很少(加利福尼亚州洛斯巴诺斯),你需要更少的内存以获得良好的整体性能,而不是以相同的可能性访问所有记录。在此过程中尽早进行性能测量,以便计划所需的RAM量。
如果允许自由文本输入,通过地理搜索,用户通常会提供不完整的信息或部分不正确的信息。标签对此无济于事。
如果您以结构化方式显示位置选项(例如下拉菜单),则只需使用该位置的主键作为“标记”。