Quelle est la meilleure base de données pour travailler avec des graphiques et des données structurées en arborescence?

dapper database graph hierarchy tree

Question

Je prévois de travailler avec Dapper.NET pour un site familial.

Un grand nombre de données de type arbre seront présentes dans la structure. Quelle base de données fournit les meilleures requêtes pour travailler avec des relations arborescentes / cycliques?

Je veux connaître la comparaison facile et performante des requêtes hiérarchiques. c'est à dire. comme CTE dans SQL Server, Connect By / Start avec Oracle, etc.

Dapper est-il le meilleur choix en tant que Micro ORM pour ce type de données structurées en arborescence?

J'ai besoin d'avis pour choisir la bonne base de données et le bon Micro ORM pour cela.

Désolé pour mon mauvais anglais.

Réponse populaire

Ma question est toujours la même: combien de données attendez-vous?

Mais en dehors de cela, il n’ya pas que le type de base de données que vous choisissez pour vos données, mais aussi la structure des tables. Les arbres hiérarchiques peuvent être stockés de différentes manières en fonction de vos besoins.

Structure de la table

Les structures particulières peuvent être très rapides sur les lectures de traversée, mais lentes sur les insertions / mises à jour (ie les ensembles imbriqués ), d'autres (listes de contiguïté) dans l'autre sens. Pour un ratio lecture / écriture de 99: 1 (la grande majorité des applications d’aujourd’hui lit beaucoup plus que l’écriture), je choisirais probablement une structure de groupe imbriquée modifiée comportant gauche, droite, profondeur et parent. Cela vous donne la meilleure possibilité pour lire des scénarios.

Type de base de données

À moins que vous ne visiez des quantités énormes de données, je vous conseille d'utiliser toutes les bases de données SQL que vous connaissez le mieux (MSSQL, MySQL, Oracle). Mais si votre base de données contient un nombre énorme de noeuds de hiérarchie, flirtez avec une base de données spécialisée orientée graphique peut être une meilleure option.

80 millions de nœuds

Si vous souhaitez être opter pour une solution ensemble imbriqué modifiée (également en utilisant des valeurs négatives, donc nombre de mises à jour sur les moitiés d' insertion / mise à jour) vous auriez table de hiérarchie ayant left . right colonnes right , ID et ParentID qui donneraient une table d'environ 1,2 Go. Mais c'est votre estimation après au moins deux ans d'utilisation.

Ma suggestion

Passez à la vitesse supérieure - N'ingéniez pas trop en utilisant la meilleure base de données possible pour stocker votre hiérarchie s'il s'avère que ce n'est pas nécessaire après tout. Par conséquent, je vous suggère d’utiliser initialement une base de données relationnelle pour pouvoir accéder rapidement au marché, même si la solution commence à se heurter à des millions d’enregistrements. Mais avant que votre base de données commence à se débattre (nous parlons des années ici), vous gagnerez deux choses:

  1. Vous verrez si votre produit décollera en premier lieu (il existe déjà de nombreux services de généalogie) afin que vous n'investissiez pas dans l'apprentissage de nouvelles technologies. Parce que vous utiliseriez une technologie éprouvée et prise en charge, vous accéderiez rapidement au marché
  2. Si votre produit réussit (et j'espère vraiment qu'il le fera), vous aurez tout le temps nécessaire pour apprendre une solution de stockage différente et l'implémenter. avec des couches de code appropriées, il ne devrait pas être difficile de changer de stockage ultérieurement si nécessaire



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi