Я строю реляционный язык/библиотеку, которая похожа на j/kdb +/tutorialD в духе.Как реализовать реляционный JOIN в чистом F #?
Идея заключается в том, что конечный пользователь будет: загружать данные (в памяти, из любого места), выполнять запросы, делать соединения, агрегировать и т. Д. Таким образом, похоже, что LINQ везде, as a first-class citizen языка ,
Отношение состоит из:
1- заголовок со списком пары имя * типа 2- Тело со списком строк, где каждая строка должна соответствовать с заголовком
Итак, как таблица.
Что-то вроде этого:
type ExprC =
| BoolC of bool
| DecC of decimal
| Str16C of string #And others!
and
ColumnC = {name:string; colType:ExprC}
and
HeaderC = ColumnC array
and
RelC = {header:array<string>; data:array<array<ExprC>>}
Итак, мне нужно реализовать в полной мере реляционные операторы. ПРОЕКЦИЯ (выберите) & ОГРАНИЧЕНИЕ (где) легко, но JOIN выглядит сложным. Это потому, что мне нужно пройти оба столбца (и упорядочить их?), Чтобы вычислить соединение, а затем удалить дубликат столбца, который используется для соединения, а затем дать результат.
Делайте каждую вещь отдельно, это легко, но я думаю, что много отходов. Я обнаружил, что заявлено, что merge-sort-join - это путь, но не знаю, как применить к этой ситуации, когда я интерпретирую.
Я могу что-то изменить в настоящее время .. Мое единственное требование заключается в том, что решение не мешает плохому исполнению полной реляционной модели, а производительность - «хорошо».
Wow ... Wonderfull ресурс. Это займет много времени, чтобы переварить, но, человек, все есть! – mamcx
Желаю удачи в вашей библиотеке. Если вы сделаете это с открытым исходным кодом, дайте мне знать. –