MapReduce使用SQL Server作为数据源

时间:2011-10-26 14:37:38

标签: sql-server sql-server-2005 couchdb mapreduce

我目前正在调查使用MapReduce维护SQL Server中的增量视图构建的可能性。

基本上,使用MapReduce创建物化视图。

我有点卡住了。考虑如何划分我的map输出。现在,我并没有真正的BigData情况,大约50 GB是最大的,但我有很多复杂性和各种隐含的性能问题。我想看看我的MapReduce / NoSQL方法是否可能成功。

关于MapReduce的事情我目前遇到的问题是分区。由于我使用SQL Server作为数据源,因此数据局部性并不是我的问题,因此我不需要在整个地方发送数据,而是每个工作者都应该能够检索数据的分区基于map定义。

我打算通过使用LINQ来完全映射数据,也许就像实体框架一样,只是为了提供一个熟悉的界面,这在某种程度上除了这一点,但它是我正在探索的当前路线。

现在,我该如何拆分数据?我有一个主键,我在表达式树(ASTs,如果你不熟悉LINQ)方面有mapreduce定义。

  • 首先,我如何设计一种方法来分割整个输入并对初始问题进行分区(我认为我应该能够利用SQL Server中的窗口聚合,例如ROW_NUMBERTILE)。

  • 其次,更重要的是,我如何确保逐步增加?也就是说,如果我添加或更改原始问题,我该如何有效地确保最小化需要进行的重新计算量?

我一直在寻找CouchDB的灵感,他们似乎有办法做到这一点,但我如何利用SQL Server利用其中的一些好处?

1 个答案:

答案 0 :(得分:1)

我面对类似的事情。我认为你应该忘记窗口函数,因为它会使你的进程序列化。换句话说,所有工人都在等待查询。

我们测试过的并且“工作”是将数据分成更多的表(每个月都有x表)并在这些分区上运行单独的分析线程。在Reduce之后标记已处理/未处理/可能不良/等数据。

将一个分区表测试作为锁定升级问题..

您肯定会为当前的解决方案增加一点复杂性。