这是一个采访问题:
假设: 我有100万亿个元素,每个元素的大小从1字节到1万亿字节(0.909 TiB)。 如何存储和访问它们非常有效?
我的想法: 他们希望测试有效处理大量数据的知识。 这不仅仅是一个正确答案的问题。
将它们保存为一些特殊的数据结构?
实际上我对这种开放式问题没有任何想法。
非常感谢任何帮助。
答案 0 :(得分:5)
这实际上取决于所讨论的数据集。我认为关键在于您讨论替代方案并描述各种利弊。
也许你应该回答他们更多问题的问题!
您选择的数据结构取决于您愿意做出哪些权衡取舍。
例如,如果您只需要按顺序遍历集合,也许您可以使用链表,因为它具有相对较小的存储开销。
如果您需要随机访问,您可能需要查看:
TL; DR:这一切都与问题有关。有很多选择。
这与文件系统/数据库面临的问题基本相同。
答案 1 :(得分:2)
我会使用B-tree的分布式形式。 B-tree能够以非常好的访问时间存储大量数据(树通常不是很深,但非常广泛)。由于此属性,它用于关系数据库中的索引。在许多节点(计算机)中分发它也不是很困难。
我认为,这个答案必须足以接受采访......
答案 2 :(得分:2)
最简单和最低成本(至少在你大规模扩展之前)选项是使用像Amazon S3这样的现有服务。
答案 3 :(得分:1)
好吧,我会使用DHT并将其分成8MB的块。然后有一个包含filehash(SHA-1 256),文件名和块的表。
块将存储在3个不同NAS中的块中。拥有1200 TB NAS服务器和负载均衡器,可以获得当时更方便获取的3个副本中的任何一个。