sql-server - 使用 SQL Server 作为数据源的 MapReduce

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

我目前正在研究使用 MapReduce 在 SQL Server 中维护增量 View 构建的可能性。

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

我的自动提款机有点卡住了。考虑如何对我的 map 输出进行分区。现在,我并没有真正遇到大数据情况,最大大约为 50 GB,但我有很多复杂性和隐含的性能问题。我想看看我的这种 MapReduce/NoSQL 方法是否会成功。

我目前遇到的关于 MapReduce 的问题是分区。由于我使用 SQL Server 作为数据源,数据局部性并不是我真正的问题,因此我不需要将数据发送到各处,相反,每个工作人员应该能够检索数据的一个分区基于map定义。

我打算通过使用LINQ或者 Entity Framework 之类的东西来完全映射数据,只是为了提供一个熟悉的界面,这有点离题,但这是我当前正在探索的路线。

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

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

  • 其次,更重要的是,我如何确保逐步执行此操作?也就是说,如果我添加或更改原始问题,如何有效地确保最大限度地减少需要进行的重新计算量?

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

最佳答案

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

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

使用一个分区表进行测试会带来锁定升级问题..

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

关于sql-server - 使用 SQL Server 作为数据源的 MapReduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904266/

相关文章:

c# - "pre-computed"map-reduce 索引(RavenDB/CouchDB)可以用于这种算法吗?

node.js - CouchDB/Cradle 如何反转默认排序?

Ubuntu 20.04 中 MSSQL 的 PHP 驱动程序

c# - SQL Server 2005 SQL 身份验证连接字符串

mysql - 从多个数据库引擎创建 SQL 服务器 View ?

SQL:将具有开始/结束的行扩展为单独的行

mysql - 如何将单个 MSSQL 表导出到 MySQL?

sql - 计算 SQL Server 2005 中天数之间的周数

c# - SqlException:System.Data.SqlClient.SqlException (0x80131904)

couchdb - 我可以从本地 pouchDB 删除数据而不将删除复制到 couchDB