大数据改造明星
Big Data modification stardegies
免责声明-此问题与工作无关,也与学术无关,只是了解有关大数据的想法和方法。
建议我有一个数据库,其中包含 100 亿条关于世界各地航班的记录。每分钟更新 10% 到 20% - 更新可以是 departure/arrival 或航班的任何其他相关参数的更改。
数据库中的所有数据都被更新到另一台机器的缓存中,(我们称之为:"The Cache Machine")。
数以千计的客户端向缓存机器请求数据。
我的问题如下:
1.How 如果数据库每分钟更新一次数据,我可以避免缓存机器上的陈旧数据吗?
2.What 是客户端调用缓存机器的最有效方式吗?缓存机器保存大量数据并且多个客户端将同时访问机器的事实是否需要异步方法?
3.Should 我的数据库使用 RDBMS 吗?如果数据保存在这样的数据库中,来自不同表的查询可能需要很长时间。
尝试自己回答这些问题,我会说:
1.
a.I可以每隔一分钟清除一次缓存机器,然后从数据库中检索所有数据。我的数据将是最新的,但这样的查询可能会非常慢。
或
b.I 可以定期检查缓存中每个项目的状态,但是它可能会阻塞我的数据库。
2.I 可以有一个队列基础请求,这样客户端就不会互相干扰。
3.RDBMS 对于这种数据量来说不是一个好的选择。 Key/Value 数据库可以处理这种数据。
我不确定应该如何回答这些问题,如果有任何好的观点或对如何处理这种情况的解释,我将不胜感激。
你的问题陈述很短。我试图用一些简单的假设来澄清(如果错误请更正我的假设,然后我可以相应地调整答案):
- 缓存更新:
- 假设您不需要在缓存中保留数据副本,而只需保留最新访问的数据集,以便任何重复访问更快(从而改善平均访问延迟)。查询可以先搜索缓存,没有找到再搜索DB。
- 假设您需要来自数据库的推送,您可以拥有带有数据推送时间戳的存储桶。搜索查询可以从最近的时间段开始搜索。如果没有找到,则转到上一个时间段。使用布隆过滤器检查存储桶中是否不存在该条目。
- 您可能需要 运行 后台作业来合并/压缩存储桶、索引、删除多时间线条目的旧条目
- 缓存访问:
- 批处理模式:去排队。让查询进入一个队列,结果集也可以在另一个队列中供客户端检索。
- online-mode:假设只读访问,你可以使用memcached/radis 进行分布式、高性能缓存(显然缓存的目的是启用低延迟查询)。可以在前面插一个app/web服务器
- 数据库选择:
- 假设您的缓存是查询的访问点,您不需要高性能的数据库。由于数据巨大,我认为需要分布式缓存和分布式数据库。 Postgres、Hive/HBase、MongoDB 等分布式数据库会很好。
- 你还不能说 RDBMS 好不好,因为我们不知道数据的类型和访问要求。假设访问是通过缓存使用键(可能是复合键),基于键值的存储(如 HBase)是好的。
很可能这还不够,但如果您添加更多细节,我可以相应地进行修改。
免责声明-此问题与工作无关,也与学术无关,只是了解有关大数据的想法和方法。
建议我有一个数据库,其中包含 100 亿条关于世界各地航班的记录。每分钟更新 10% 到 20% - 更新可以是 departure/arrival 或航班的任何其他相关参数的更改。
数据库中的所有数据都被更新到另一台机器的缓存中,(我们称之为:"The Cache Machine")。
数以千计的客户端向缓存机器请求数据。
我的问题如下:
1.How 如果数据库每分钟更新一次数据,我可以避免缓存机器上的陈旧数据吗?
2.What 是客户端调用缓存机器的最有效方式吗?缓存机器保存大量数据并且多个客户端将同时访问机器的事实是否需要异步方法?
3.Should 我的数据库使用 RDBMS 吗?如果数据保存在这样的数据库中,来自不同表的查询可能需要很长时间。
尝试自己回答这些问题,我会说:
1.
a.I可以每隔一分钟清除一次缓存机器,然后从数据库中检索所有数据。我的数据将是最新的,但这样的查询可能会非常慢。
或
b.I 可以定期检查缓存中每个项目的状态,但是它可能会阻塞我的数据库。
2.I 可以有一个队列基础请求,这样客户端就不会互相干扰。
3.RDBMS 对于这种数据量来说不是一个好的选择。 Key/Value 数据库可以处理这种数据。
我不确定应该如何回答这些问题,如果有任何好的观点或对如何处理这种情况的解释,我将不胜感激。
你的问题陈述很短。我试图用一些简单的假设来澄清(如果错误请更正我的假设,然后我可以相应地调整答案):
- 缓存更新:
- 假设您不需要在缓存中保留数据副本,而只需保留最新访问的数据集,以便任何重复访问更快(从而改善平均访问延迟)。查询可以先搜索缓存,没有找到再搜索DB。
- 假设您需要来自数据库的推送,您可以拥有带有数据推送时间戳的存储桶。搜索查询可以从最近的时间段开始搜索。如果没有找到,则转到上一个时间段。使用布隆过滤器检查存储桶中是否不存在该条目。
- 您可能需要 运行 后台作业来合并/压缩存储桶、索引、删除多时间线条目的旧条目
- 缓存访问:
- 批处理模式:去排队。让查询进入一个队列,结果集也可以在另一个队列中供客户端检索。
- online-mode:假设只读访问,你可以使用memcached/radis 进行分布式、高性能缓存(显然缓存的目的是启用低延迟查询)。可以在前面插一个app/web服务器
- 数据库选择:
- 假设您的缓存是查询的访问点,您不需要高性能的数据库。由于数据巨大,我认为需要分布式缓存和分布式数据库。 Postgres、Hive/HBase、MongoDB 等分布式数据库会很好。
- 你还不能说 RDBMS 好不好,因为我们不知道数据的类型和访问要求。假设访问是通过缓存使用键(可能是复合键),基于键值的存储(如 HBase)是好的。
很可能这还不够,但如果您添加更多细节,我可以相应地进行修改。