Я не выполнял функционально-реляционное сопоставление, как таковое, но я использовал методы функционального программирования для ускорения доступа к РСУБД.
Это обычное дело начать с набора данных, выполнить на нем сложные вычисления и сохранить результаты, в которых, например, результаты являются поднабором оригинала с дополнительными значениями. Настоящий подход требует, чтобы вы сохранили исходный набор данных с дополнительными столбцами NULL, выполнили вычисления и затем обновили записи с вычисленными значениями.
Кажется разумным. Но проблема в том, что это может стать очень медленным.Если вашему вычислению требуется другой оператор SQL помимо самого запроса на обновление или даже нужно сделать в коде приложения, вы буквально должны (повторно) искать записи, которые вы меняете после вычисления, чтобы хранить результаты в правильных строках ,
Вы можете обойти это, просто создав новую таблицу для получения результатов. Таким образом, вы можете просто вставлять вместо обновления. В итоге у вас есть другая таблица, дублирующая ключи, но вам больше не нужно тратить пространство на столбцы, хранящие NULL –, вы сохраняете только то, что у вас есть. Затем вы присоедините свои результаты к окончательному выбору.
I (AB) используется СУБД таким образом, и в конечном итоге написание заявления SQL, которые выглядели в основном как это ...
create table temp_foo_1 as select ...;
create table temp_foo_2 as select ...;
...
create table foo_results as
select * from temp_foo_n inner join temp_foo_1 ... inner join temp_foo_2 ...;
Что это, по существу, делает, создавая кучу неизменных привязок. Хорошая вещь, однако, заключается в том, что вы можете работать сразу с целыми наборами. Вид напоминает вам языки, которые позволяют работать с матрицами, такими как Matlab.
Я предполагаю, что это также облегчит параллелизм.
Дополнительным преимуществом является то, что типы столбцов для таблиц, созданных таким образом, не обязательно должны быть указаны, поскольку они выводятся из выбранных столбцов.
На самом деле, действительно ли это имеет смысл? Функциональное программирование не обеспечивает стандартного способа моделирования данных, которое может быть несколько по сравнению с реляционным или OO-моделированием данных. Поэтому запрос «картирования» ИМХО не является значимым вопросом. Можно спросить, имеет ли смысл добавлять функциональные концепции в СУБД, на самом деле у SQL уже есть некоторые функциональные концепции. – 2012-12-03 12:24:26