应该使用什么类型的数据库来存储数百万家餐厅并进行查询
what type of database should be used to store millions of restaurants and query them
我正在设计一个系统,它将存储世界上所有可用的餐厅,然后用户应该能够以非常低的延迟对如此大的数据集执行通用搜索。普通的 RDBMS 是否足以解决这个问题,还是我应该选择像 cassandra 这样的大数据框架。我应该使用什么来提高通用搜索的效率。为每家餐厅存储评论的最佳方式是什么。
您可以使用任何 RDBMS 来存储您的数据。但是要进行快速搜索,请使用像 lucene 这样的搜索引擎,它提供各种快速搜索和聚合。
直接使用 lucene 可能需要更多的努力,因此您可以使用已经可用的围绕 lucene 构建的工具,例如 solr and elasticsearch。
所以第一个问题是:您认为会有多少数据?
大数据方法更合适 table 可以说数十亿条记录,但当然,如果您没有适当的硬件和数据库设计,几百万条记录可能会导致 MySQL 上的性能非常差服务器,例如。
NoSQL 更适合 table 对于不相关的相关数据,我认为在你的情况下 table 之间会有很多关系(例如你可以有餐馆 table 与 restaurant_comments
table.
有直接关系(例如外键)
在这种情况下,使用 MySQL(innoDB 引擎)将非常有用,例如当您删除一家餐厅时 - 它的所有评论都可以用它删除,并节省光盘 space 和时间。
如果您计划拥有不超过 100-2 亿家配备适当硬件(专用 MySQL 服务器或带有负载平衡器的多台服务器)的餐厅,并且您设计数据库 (table s, relations, data types and indexes) 以一种好的方式,那么你将有出色的性能。
如果您计划拥有更多数据并且许多用户会大量查询该数据,那么您可能应该考虑使用 Apache Hadoop(与 HBase 或 Cassandra)。
我正在设计一个系统,它将存储世界上所有可用的餐厅,然后用户应该能够以非常低的延迟对如此大的数据集执行通用搜索。普通的 RDBMS 是否足以解决这个问题,还是我应该选择像 cassandra 这样的大数据框架。我应该使用什么来提高通用搜索的效率。为每家餐厅存储评论的最佳方式是什么。
您可以使用任何 RDBMS 来存储您的数据。但是要进行快速搜索,请使用像 lucene 这样的搜索引擎,它提供各种快速搜索和聚合。
直接使用 lucene 可能需要更多的努力,因此您可以使用已经可用的围绕 lucene 构建的工具,例如 solr and elasticsearch。
所以第一个问题是:您认为会有多少数据? 大数据方法更合适 table 可以说数十亿条记录,但当然,如果您没有适当的硬件和数据库设计,几百万条记录可能会导致 MySQL 上的性能非常差服务器,例如。
NoSQL 更适合 table 对于不相关的相关数据,我认为在你的情况下 table 之间会有很多关系(例如你可以有餐馆 table 与 restaurant_comments
table.
在这种情况下,使用 MySQL(innoDB 引擎)将非常有用,例如当您删除一家餐厅时 - 它的所有评论都可以用它删除,并节省光盘 space 和时间。
如果您计划拥有不超过 100-2 亿家配备适当硬件(专用 MySQL 服务器或带有负载平衡器的多台服务器)的餐厅,并且您设计数据库 (table s, relations, data types and indexes) 以一种好的方式,那么你将有出色的性能。
如果您计划拥有更多数据并且许多用户会大量查询该数据,那么您可能应该考虑使用 Apache Hadoop(与 HBase 或 Cassandra)。