应该使用啥类型的数据库来存储数百万家餐馆并查询它们[关闭]

     2023-04-18     182

关键词:

【中文标题】应该使用啥类型的数据库来存储数百万家餐馆并查询它们[关闭]【英文标题】:what type of database should be used to store millions of restaurants and query them [closed]应该使用什么类型的数据库来存储数百万家餐馆并查询它们[关闭] 【发布时间】:2015-04-23 12:16:25 【问题描述】:

我正在设计一个系统,它将存储世界上所有可用的餐厅,然后用户应该能够以非常低的延迟对如此大的数据集执行通用搜索。普通的 RDBMS 就足够了,还是我应该选择像 cassandra 这样的大数据框架。我应该使用什么来使通用搜索有效。为每家餐厅存储 cmets 的最佳方式是什么。

【问题讨论】:

很多数据库和技术都适合你描述的问题。但是,Stack Overflow 不是推荐特定软件解决方案的网站。请查看提问指南。这是一个开始的地方:***.com/help/how-to-ask. 我看到的统计数据表明,在全球范围内,平均每 1000 人就有 2 家餐厅。这是一个粗略的概括,因为像俄罗斯这样的国家有一个温和的餐厅文化,而像日本和韩国这样的国家有一个巨大的餐厅文化。然而,如果我们从表面上看这个数字,那么它相当于全球有 14-1500 万家餐厅。允许 20% 的误差幅度,你就有 1800 万家餐厅。通过适当的分区,根据您管理历史数据的方式,普通的 RDBMS 几乎可以应付。 “世界上所有可用的餐厅”...鉴于填充数据集将花费数百万美元,我建议现在留出一些资金来建立一个称职的开发团队并支付适当的设计工作费用。 【参考方案1】:

您可以使用任何 RDBMS 来存储您的数据。但是对于快速搜索,请使用像 lucene 这样的搜索引擎,它提供各种快速搜索和聚合。

直接使用 lucene 可能需要更多的努力,因此您可以使用围绕 lucene 构建的现有工具,例如 solr 和 elasticsearch。

【讨论】:

【参考方案2】:

所以第一个问题是:您认为会有多少数据? 大数据方法更适合数十亿条记录,但当然,如果您没有适当的硬件和数据库设计,例如,几百万条记录可能会导致 MySQL 服务器的性能非常差。

NoSQL 更适合不相关的数据,我认为在你的情况下,表之间会有很多关系(例如,你可以让餐厅表与 restaurant_comments 表有直接关系(例如与外键) .

在这种情况下,使用 MySQL(innoDB 引擎)将非常有用,例如,当您删除一家餐厅时 - 它的所有 cmets 都可以随之删除,从而节省磁盘空间和时间。

如果您计划拥有不超过 100-2 亿家餐厅并配备适当的硬件(专用 MySQL 服务器或具有负载平衡器的多台服务器),并且您将数据库(表、关系、数据类型和索引)设计为好的方法,那么你将有出色的表现。

如果您计划拥有更多数据并且很多用户经常查询这些数据,那么您可能应该考虑使用 Apache Hadoop(使用 HBase 或 Cassandra)。

【讨论】:

我啥时候应该在查询中使用事务?

...1-01-1016:05:37【问题描述】:我正在阅读有关如何将事务与数据库类型和数据库引擎一起使用的非常详细的教程,但我还没有找到指导我何时以及为什么应该使用它们的指南。我知道交易通常用于银行业务,所以当我们处理货币数... 查看详情

我应该使用啥类型的数据结构来保存表行?

...010-08-1812:20:46【问题描述】:我是Java新手,刚刚开始查询数据库。到目前为止,我的结果在ResultSetMetaData中。我认为对于数据集中的每一行,我应该将其添加到某种形式的集合中?谁能告诉我这方面的最佳做 查看详情

概率应该使用啥数据类型? [关闭]

】概率应该使用啥数据类型?[关闭]【英文标题】:Whatdatatypeshouldbeusedforaprobability?[closed]概率应该使用什么数据类型?[关闭]【发布时间】:2018-06-1408:41:32【问题描述】:应该使用什么数据类型来存储概率(因此从0到1)?有没有... 查看详情

我们应该删除存储过程并从java程序运行数据库调用

...我会赞成存储过程。首先,如果您仅使用它们,它们将使数据库的重构变得更加简单,因为您可以使用存储在数据库中的依赖关系来找出将受到更改影响的内容(无论如何,在SQLServer中,不能代表其他数据库))。其次,如果您... 查看详情

html中div里有data-index="6"是啥意思?

...储有关餐馆提供的食物类型或访问者距离的信息,您可以使用HTML class属性。如果您还需要存储餐厅id以查看用户想要访问的特定餐厅,该怎么办?为了摆脱这些问题,HTML5引入了自定义数据属性。名称以元素开头的元素的所... 查看详情

我应该使用啥列类型/长度将 Bcrypt 散列密码存储在数据库中?

】我应该使用啥列类型/长度将Bcrypt散列密码存储在数据库中?【英文标题】:Whatcolumntype/lengthshouldIuseforstoringaBcrypthashedpasswordinaDatabase?我应该使用什么列类型/长度将Bcrypt散列密码存储在数据库中?【发布时间】:2011-08-1809:06:10... 查看详情

我应该使用啥来提高性能。查看/查询/临时表

】我应该使用啥来提高性能。查看/查询/临时表【英文标题】:WhatshouldIusetoincreaseperformance.View/Query/TemporaryTable我应该使用什么来提高性能。查看/查询/临时表【发布时间】:2010-06-1007:53:57【问题描述】:我想知道在存储过程中使... 查看详情

对于只接受少数值的列,应该在 Google 大查询中使用啥数据类型?

】对于只接受少数值的列,应该在Google大查询中使用啥数据类型?【英文标题】:whatdatatypeshouldbeusedinGooglebigqueryforacolumnthatonlyacceptfewvalues?对于只接受少数值的列,应该在Google大查询中使用什么数据类型?【发布时间】:2021-03-30... 查看详情

在 Scala 中使用啥类型来存储内存中的可变数据表?

】在Scala中使用啥类型来存储内存中的可变数据表?【英文标题】:Whattypetousetostoreanin-memorymutabledatatableinScala?在Scala中使用什么类型来存储内存中的可变数据表?【发布时间】:2011-04-0803:16:45【问题描述】:每次调用函数时,如... 查看详情

mysql数据表中要存储密码要用啥类型

...码在HTML如果设为password则为*,用户就不会看到.那么在MYSQL数据库中应该设置什么类型让操纵数据库人员看不到真正的密码呢?html。那个pasword为*是可以输出来的,如果要在mysql里面存储密码,可以考虑用字符串类型char(32)32位,然后... 查看详情

iOS - 我应该使用啥来保存数据

】iOS-我应该使用啥来保存数据【英文标题】:iOS-whatshouldIuseforsavingdataiOS-我应该使用什么来保存数据【发布时间】:2011-08-0408:06:05【问题描述】:假设您有一个项目列表,它是按日期排序的对象数组(字段:标题、描述、日期)... 查看详情

SQLAlchemy 中使用啥类型来存储字节字符串?

...】:我正在尝试使用SQLAlchemy将字节字符串存储在PostgreSQL数据库中。我的模型如下所示:classUserAccount(db.Model):id=db.C 查看详情

geohash算法

...提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL、oracle、PostgreSQL等)都在使用B树。B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一... 查看详情

应该使用哪种数据类型来存储哈希?

】应该使用哪种数据类型来存储哈希?【英文标题】:Whatkindofdatatypeshouldoneusetostorehashes?【发布时间】:2013-02-0605:36:09【问题描述】:我了解哈希值会根据SQLServer中的不同数据类型而有所不同。一个支持Unicode,另一个不支持....... 查看详情

使用数据类型“文本”存储字符串有啥缺点吗?

】使用数据类型“文本”存储字符串有啥缺点吗?【英文标题】:Anydownsidesofusingdatatype"text"forstoringstrings?使用数据类型“文本”存储字符串有什么缺点吗?【发布时间】:2013-12-1801:52:37【问题描述】:根据PostgreSQLDocumentat... 查看详情

我应该使用啥校验和算法?

】我应该使用啥校验和算法?【英文标题】:WhatchecksumalgorithmshouldIuse?我应该使用什么校验和算法?【发布时间】:2011-05-1302:21:24【问题描述】:我正在构建一个系统,该系统需要能够查找字节块是否已更新。我认为我应该计算... 查看详情

javafx 中的 Long 和 Object 值应该使用啥类型的字段

...:06:04【问题描述】:我想将使用javafx创建的表的值存储在数据库中。一些值是Long类型,而其他值是object类型。例如:有三个表:“Good 查看详情

mvc架构是啥意思?

参考技术AMVC架构是交互式应用中广泛使用的架构。它将对象按功能进行划分,尽可能地最小化对象之间的耦合度。MVC架构与传统的应用程序架构—输入,处理,输出给用户接口的模型相对应。它们也与基于域的多层企业级WEB应... 查看详情