Какая база данных лучше всего подходит для работы с графиками и структурированными данными дерева?

dapper database graph hierarchy tree

Вопрос

Я планирую работать с Dapper.NET для семейного сайта.

В структуре будет присутствовать множество данных, похожих на дерево. Какая база данных предоставляет лучшие запросы для работы с циклическими / ациклическими отношениями дерева?

Я хочу знать простоту и сравнение производительности иерархических запросов. то есть. как CTE в SQL Server, Connect By / Start с Oracle и т. д.

Является ли dapper лучшим выбором в качестве Micro ORM для такого рода структурированных данных дерева?

Мне нужно мнение в выборе правильной базы данных и права Micro ORM для этого.

Извините за мой плохой английский.

Популярные ответы

Мой вопрос все еще стоит: Сколько данных вы ожидаете?

Но кроме того, это не просто тип базы данных, которую вы выбираете для своих данных, это также структура таблицы. Деревья иерархии могут храниться различными способами в зависимости от ваших потребностей.

Структура таблицы

Конкретные структуры могут быть очень быстрыми при чтении, но медленнее на вставках / обновлениях (т. Е. Вложенных наборах ), другие (списки смежности) наоборот. Для коэффициента чтения: 99: 1 (подавляющее большинство сегодняшних приложений читается гораздо больше, чем запись). Я бы выбрал модифицированную вложенную структуру набора, у которой есть левая, правая, глубина и родительская. Это дает вам наилучшую возможность для чтения сценариев.

Тип базы данных

Если вы не нацелены на огромное количество данных, я предлагаю вам обратиться к любой из SQL-баз данных, которые вам известны лучше всего (MSSQL, MySQL, Oracle). Но если ваша база данных будет содержать огромное количество узлов иерархии, то флиртом с специализированной графоподобной базой данных может быть лучший вариант.

80 миллионов узлов

Если вы выбрали модифицированное решение вложенного набора (также используя отрицательные значения, поэтому количество обновлений в половинах вставки / обновления), у вас будет таблица иерархии, left . right , ID и ParentID что приведет к таблице около 1,2 ГБ. Но это ваша лучшая оценка после по крайней мере двух лет использования.

Мое предложение

Идите быстро и пойдите свет - Не переучитесь, используя наилучшую возможную базу данных для хранения вашей иерархии, если окажется, что она не нужна в конце концов. Поэтому я бы предложил вам сначала использовать реляционную БД, чтобы вы могли быстро выйти на рынок, хотя решение начнет бороться после нескольких миллионов записей. Но прежде чем ваша база данных начнет бороться (мы говорим здесь лет), вы получите две вещи:

  1. Вы увидите, будет ли ваш продукт взят в первую очередь (уже есть много родословных услуг), поэтому вы не будете инвестировать в изучение новых технологий; Поскольку вы будете использовать проверенные и поддерживаемые технологии, вы быстро сможете выйти на рынок
  2. Если ваш продукт преуспеет (и я искренне надеюсь, что это так), он все равно даст вам достаточно времени, чтобы изучить другое решение для хранения и реализовать его; с надлежащими слоями кода не должно быть трудно переключать хранилище позже, когда это необходимо


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow