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