gpt4 book ai didi

sql - 处理来自非常大的数据库表的数据的架构

转载 作者:可可西里 更新时间:2023-11-01 16:33:18 25 4
gpt4 key购买 nike

我有一个问题要解决,我想知道我是否正确地使用像 Hadoop 这样的东西来解决这个问题,将它分布在多个节点上,或者使用其他东西..

问题:

我有一个非常大的数据库表,其中可能包含大量记录,每条记录都有关联的元数据字段(表示为表中的一列)和值。我想要实现的是:

给定特定条件,例如搜索具有元数据字段 X 和值 Y 的记录,我想检索一些记录,但更重要的是,我想就下一步要搜索的内容向用户提出一些明智的建议,以便他们可以也许会发现一些他们不知道的有趣记录。我计划这样做的方式是检查所有匹配的记录元数据字段和值,并向用户提供有趣的选择以继续进一步过滤(确定有趣的任务与这个问题无关)。

现在,如果我的表有大量记录,并且初始“过滤器”与大量记录匹配,那么检索所有记录然后扫描其他列以获取建议可能会花费很长时间,如果都是在一个查询中完成的,甚至是迭代查询以增量获取越来越多的记录。

我在想这个问题可以通过将任务分配给多个节点来搜索不同的记录来解决。我的问题是,我应该为此研究 Hadoop 之类的东西(分配负载),还是有人可以建议一些其他方法来完成这项任务?

谢谢

丹尼尔

最佳答案

恕我直言,Hadoop 本身无法解决您的问题。首先,Hadoop(准确地说是 HDFS)是一个 FS,不提供您可以在其中查询特定字段的列式存储。 HDFS 中的数据存储为平面文件,您必须遍历数据才能到达感兴趣的数据所在的位置。

话虽如此,还是有一些解决方法,比如使用 Hive 。 Hive 是 Hadoop 家族的另一个成员,它在您现有的 Hadoop 集群之上提供仓储功能。它允许我们将 HDFS 文件映射为可以方便查询的 Hive 表。此外,它还提供了一个类似 SQL 的接口(interface)来查询这些表。但是,如果您有实时需求,Hive 就不适合了。

我觉得有点像 Imapala 将对您更有用,它允许查询我们的大数据,同时牢记实时性。

我上面提到的原因是您的用例需要的不仅仅是 Hadoop 提供的可伸缩性。除了分配负载的能力外,您的解决方案还应该能够满足您在上面指定的需求。它不仅仅是将您的数据分布在一组机器上并对其运行原始查询。您的用户需要实时响应以及您在问题中提到的智能建议功能。

您实际上需要一个比 Hadoop 集群更智能的系统。看看 Apache Mahout 。这是一个非常棒的工具,提供了推荐挖掘的功能,并且可以很容易地与Hadoop一起使用。你可以在它的主页上找到更多。我一定会帮助您将智能建议功能添加到您的系统中。

您可能想看看 Hadoop 家族的另一个工具, HBase ,这是一个分布式、可扩展的大数据存储。它就像一个数据库,但它不是关系数据库。它还在现有的 Hadoop 集群上运行,并提供实时随机读/写功能。阅读一些相关内容,看看它是否适合某个地方。

最后但同样重要的是,这完全取决于您的需求。只有尝试不同的事物并进行比较研究才能做出准确的决定。我们只能根据我们的经验向您提出建议,但只有在测试了一些工具并找到最适合您的要求后才能做出公平的决定:)

关于sql - 处理来自非常大的数据库表的数据的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com