大数据修改stardegies

时间:2016-04-09 18:15:00

标签: caching rdbms bigdata nosql

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

建议我拥有一个包含10Bil全球航班记录的数据库。每分钟更新10%到20% - 更新可以是出发/到达的更改或航班的任何其他相关参数。

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

成千上万的客户从缓存机器请求数据。

我的问题如下:

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

2.客户端调用缓存机器的最有效方法是什么?事实上,缓存机器拥有大量数据,而多个客户机将同时访问机器,需要采用异步方法吗?

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

我自己试图回答这些问题:

1

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

OR

b。我可以定期检查缓存中每个项目的状态,但是它可能会阻塞我的数据库。

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

3.RDBMS不是这个数据量的好选择。键/值DB可以用于此类数据。

我不确定我该如何回答这些问题,并希望对如何处理这种情况有任何好处或解释。

1 个答案:

答案 0 :(得分:1)

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

  1. 缓存更新:
    • 假设您不需要在缓存中保留数据副本,而只需要保留最新访问的数据集,以便任何重复访问都更快(从而改善平均访问延迟)。查询可以先搜索缓存,如果没有找到,则搜索数据库。
    • 假设您需要从数据库推送,您可以使用带有数据推送时间戳的存储桶。搜索查询可以从最新的时间段开始搜索。如果没有找到,请转到上一个时间段。使用bloom过滤器检查条目中是否存在该条目。
    • 您可能必须运行后台作业来合并/压缩存储桶,索引,删除多时间线条目的旧条目
  2. 缓存访问:
    • batch-mode:去队列。让查询进入队列,结果集也可以在另一个队列中供客户端检索。
    • online-mode:假设只读访问,您可以使用memcached / radis进行分布式高性能缓存(显然,缓存的目的是启用低延迟查询)。您可以在前面插入应用程序/ Web服务器。
  3. 数据库选择:
    • 假设您的缓存是查询的访问点,您不需要高性能的数据库。由于数据量巨大,我认为需要分布式缓存,还需要分布式数据库。 Postgres,Hive / HBase,MongoDB等分布式数据库将会很好。
    • 您还不能说RDBMS是否可以好,因为我们不知道数据的类型和访问要求。假设使用密钥(可能是复合密钥)通过缓存进行访问,基于键值的存储(例如HBase)是好的。
  4. 最有可能这还不够,但如果你添加更多细节,我可以相应修改。