В настоящее время я изучаю возможность использования MapReduce для поддержки инкрементных сборок представлений в SQL Server.
По сути, используйте MapReduce для создания материализованных представлений.
Я немного застрял. думать о том, как разделить мои map
выходы. Сейчас у меня нет ситуации с BigData, с максимальным объемом около 50 ГБ, но у меня много сложностей и проблем с производительностью. Я хочу посмотреть, удастся ли мне применить этот подход MapReduce / NoSQL.
В MapReduce у меня сейчас проблемы с разделением. Поскольку я использую SQL Server в качестве источника данных, локальность данных на самом деле не является моей проблемой, и поэтому мне не нужно отправлять данные повсеместно, скорее, каждый работник должен иметь возможность извлекать раздел данных основываться на определении map
.
Я намерен полностью отобразить данные с помощью LINQ и, может быть, что-то вроде Entity Framework, просто чтобы предоставить знакомый интерфейс, это несколько не в этом дело, но я изучаю текущий маршрут.
Теперь, как мне разделить мои данные? У меня есть первичный ключ, у меня есть определения map
и reduce
в терминах деревьев выражений (AST, если вы не знакомы с LINQ).
Во-первых, как мне найти способ разделить весь ввод и разбить начальную проблему (я думаю, что я должен иметь возможность использовать агрегаты окон в SQL Server, такие как ROW_NUMBER
и TILE
).
Во-вторых, и что более важно, как я могу сделать это постепенно? То есть, если я добавлю или внесу изменение в исходную проблему, как эффективно обеспечить минимизацию количества повторных вычислений, которое необходимо выполнить?
Я искал вдохновение в CouchDB, и у них, похоже, есть способ сделать это, но как мне использовать некоторые из этих достоинств, используя SQL Server?