1

我目前正在制定一项增量更新用户数据的策略。我们假设我们的数据库中有 100_000_000 条记录,其中每个工作流更新大约 1_000_000 条记录。

这个想法是更新 MapReduce 作业中的记录。使用索引存储(例如 Cassandra)能够随机访问当前记录是否有用?还是最好从 HDFS 检索数据并将新信息加入现有记录。

记录大小为 O(200 字节)。用户数据具有固定长度,但应该是可扩展的。日志事件具有相似但不相等的结构。用户记录的数量可能会增加。近实时更新是可取的,即。3小时的时间间隔是不可接受的,几分钟就可以了。

您是否对这些策略和这种规模的数据有任何经验?pig JOIN 速度够快吗?总是读取所有记录是瓶颈吗?Cassandra 是否能够有效地保存这么多数据?哪种解决方案是可扩展的?系统的复杂性如何?

4

1 回答 1

1

您需要先定义您的需求。您的记录量不是问题,但您没有给出记录长度。它们是固定长度、固定字段编号、可能随时间改变格式吗?我们说的是 100 字节记录还是 100,000 字节记录?如果您希望按该字段/列查询,则需要在该字段/列上建立索引,除非您使用 map/reduce 完成所有工作。用户记录的数量会保持在 100mill(1 台服务器可能就足够了)还是会以每年 100% 的速度增长(可能随着时间的推移,多台服务器会添加新的服务器)。

您如何访问记录以进行更新取决于您是否需要实时更新它们,或者您是否可以运行批处理作业。更新是每分钟、每小时还是每月?

我强烈建议你做一些实验。你已经做过任何测试了吗?这将为您的问题提供一个背景,这将导致更客观的问题和答案。您不太可能根据您的问题“白板”解决方案。

于 2012-08-22T23:03:36.343 回答