首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大数据修改标准

大数据修改标准
EN

Stack Overflow用户
提问于 2016-04-09 18:15:00
回答 1查看 57关注 0票数 2

免责声明-这个问题不是工作,也不是学术相关的,它只是为了了解有关大数据的想法和方法。

建议我有一个关于世界各地航班的10倍记录的数据库。每分钟更新10%到20% --更新可能是起飞/到达的变化,也可能是航班的任何其他相关参数。

来自DB的所有数据都被更新到另一台机器中的缓存中(让我们称之为“缓存机”)。

数千个客户端从缓存机请求数据。

我的问题如下:

1.如果数据库每分钟都有更新的数据,那么如何避免缓存机器中陈旧的数据?

2.客户端调用缓存机的最有效方式是什么?缓存机器是否包含大量的数据,多个客户端将同时访问该机器,这是否需要异步方法?

3.我的数据库应该使用RDBMS吗?如果数据保存在这样的DB中,来自不同表的查询可能需要很长时间。

在试图亲自回答这些问题时,我要说:

1.

答:我可以每隔一分钟清除缓存机,然后从数据库中检索所有数据。我的数据将是新鲜的,但这样的查询可能会非常缓慢。

我可以定期检查缓存中每一项的状态,但是它会阻塞我的DB。

2.我可以有一个队列基请求,这样客户端就不会互相干扰。

3.对于这么多的数据,RDBMS并不是一个很好的选择。键/值DB可以用于这类数据。

我不知道该如何回答这些问题,并希望得到任何好的观点或如何处理这种情况的解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 10:11:28

你的问题陈述很短。我试图用一些简单化的假设来澄清(如果我的假设是错的,请纠正我的假设,然后我就可以相应地修改答案):

  1. 缓存更新:
    • 假设您不需要将数据副本保存在缓存中,而只需保存最新访问的数据集,那么任何重复访问都会更快(从而提高平均访问延迟)。查询可以首先搜索缓存,如果找不到,则搜索DB。
    • 假设您需要来自DB的推送,您可以使用带有时间戳的数据推送桶。搜索查询可以从最新的时间桶开始搜索。如果找不到,就转到以前的时间桶。使用布卢姆过滤器检查条目是否不存在于桶中。
    • 您可能需要运行一个后台作业来合并/压缩存储桶、索引、删除多时间线条目的旧条目。

  1. 高速缓存访问:
    • 批处理模式:进入队列。让查询进入一个队列,结果集也可以在另一个队列中供客户端检索。
    • 在线模式:假设只读访问,您可以使用memcached/ radis进行分布式、高性能的缓存(显然,缓存的目的是启用低延迟查询)。您可以在前面插入一个应用程序/web服务器。

  1. DB选择:
    • 假设缓存是查询的访问点,则不需要高性能的db。由于数据是巨大的,我认为需要分布式缓存,也需要分布式数据库。Postgres、Hive/ HBase、MongoDB等分布式DBs较好。
    • 由于我们不知道数据的类型和访问需求,所以您还不能说RDBMS是否好。假设访问是通过使用密钥(可能是组合密钥)的缓存进行的,则基于密钥值的存储(如HBase)是很好的。

很可能这还不够,但是如果您添加更多的细节,我可以相应地修改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36520791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档