Joh*_*ren 6 sql-server couchdb sql-server-2005 mapreduce
我目前正在调查使用MapReduce来维护SQL Server中的增量视图构建的可能性.
基本上,使用MapReduce创建物化视图.
我有点卡住了.考虑如何划分我的map
输出.现在,我并没有真正的BigData情况,最大约50 GB,但我有很多复杂性和各种隐含的性能问题.我想看看我的MapReduce/NoSQL方法是否会出现问题.
关于MapReduce的事我现在遇到的问题是分区.由于我使用SQL Server作为数据源,因此数据局部性并不是我的问题,因此我不需要在整个地方发送数据,而是每个工作者都应该能够检索数据的分区基于map
定义.
我打算通过使用LINQ来完全映射数据,也许像实体框架一样,只是为了提供一个熟悉的界面,这在某种程度上除了这一点,但它是我正在探索的当前路线.
现在,我如何拆分数据?我有一个主键,我map
和reduce
在表达式目录树(AST的,如果你不熟悉LINQ)的术语的定义.
首先,我如何设计一种方法来分割整个输入并对初始问题进行分区(我认为我应该能够利用SQL Server中的窗口聚合,例如ROW_NUMBER
和TILE
).
其次,更重要的是,我如何确保逐步增加?也就是说,如果我添加或更改原始问题,我该如何有效地确保最小化需要进行的重新计算量?
我一直在寻找CouchDB的灵感,他们似乎有办法做到这一点,但我如何利用SQL Server利用这些优点呢?
小智 1
我面临着类似的事情。我认为你应该忘记窗口函数,因为它使你的进程序列化。换句话说,所有工作人员都将等待查询。
我们已经测试过并且它的“工作”是将数据分区到更多表中(每个月都有 x 个表)并在这些分区上运行单独的分析线程。在Reduce之后标记已处理/未处理/可能坏的/等数据。
对一个分区表的测试带来了锁定升级问题。
您肯定会为当前的解决方案增加一点复杂性。