Quel est un exemple de base de données non relationnelle? Où / comment sont-ils utilisés?

StackOverflow https://stackoverflow.com/questions/202819

  •  03-07-2019
  •  | 
  •  

Question

Je travaille avec des bases de données relationnelles depuis quelque temps déjà, mais ce n'est que récemment que j'ai compris qu'il devait exister d'autres types de bases de données non relationnelles.

Quels sont quelques exemples de bases de données non relationnelles et où / comment sont-elles utilisées dans le monde réel? Pourquoi choisiriez-vous d'utiliser une base de données non relationnelle plutôt que des bases de données relationnelles?

Modifier : deux autres questions similaires ont été mentionnées dans les réponses:

Était-ce utile?

La solution

  • Fichier plat
    • CSV ou autres données délimitées
    • feuilles de calcul
    • / etc / passwd
    • fichiers courrier mbox
  • hiérarchique
    • Registre Windows
    • Subversion utilisant le système de fichiers FSFS au lieu de Berkley DB

Autres conseils

Une alternative certes obscure mais intéressante aux types de bases de données mentionnés ici est la base de données associative , telle que Sentences, de Technologie LazySoft . Il existe une version personnelle gratuite que vous pouvez télécharger et essayer par vous-même. L’édition Enterprise est également gratuite, mais nécessite une demande auprès de la société.

Essentiellement, une base de données associative vous permet de stocker des informations de la même manière que le font nos cerveaux: des choses et des associations entre ces choses. Le nom " Sentences " provient de la façon dont cette information peut être représentée dans une syntaxe subject-ver-object :

  • Tom est le frère de Laura
  • San Francisco est situé en Californie
  • Mike a une limite de crédit de 10 000 $

Une phrase peut être le sujet ou l'objet d'une autre phrase:

  • (le bus 570 arrive à à 8h15) le dimanche
  • Mary dit (la tarte a été cuite par William)

Ainsi, tout peut être réduit aux entités et aux associations .

Il y a bien sûr beaucoup plus dans les phrases que ce qui peut être exprimé ici. Je vous recommande de prendre un peu de temps pour en savoir plus à ce sujet dans un livre blanc de LazySoft.

"Le modèle associatif de données" est un livre disponible au format PDF par Simon Williams. , l'un des créateurs de Sentences.

La base de données documentaire non relationnelle que nous étudions actuellement est Apache CouchDB .

  

Apache CouchDB est une base de données orientée document distribuée, tolérante aux pannes et sans schéma, accessible via une API HTTP / JSON RESTful. Entre autres fonctionnalités, il offre une réplication incrémentielle robuste avec détection et résolution de conflit bidirectionnelle, et peut être interrogé et indexé à l’aide d’un moteur de vue orienté table, avec JavaScript agissant comme langage de définition de vue par défaut.

Notre intérêt était de fournir un magasin de préférences utilisateur à accès distribué, insensible aux modifications de forme permettant de sérialiser des objets de préférence depuis Java et d’y accéder tout aussi facilement avec Javascript depuis une application cliente basée sur XULRunner.

Toute base de données prétendant être une "base de données de style Berkley". ou "clé / valeur" La base de données n’est pas relationnelle.

Ces bases de données sont généralement basées sur des algorithmes de hachage complexes et fournissent une recherche très rapide O (1) basée sur une clé, mais laissent toute forme de qualité relationnelle à l'utilisateur final.

Par exemple, dans une base de données relationnelle, vous normalisez votre structure et joignez plusieurs tables pour créer un seul jeu de résultats.

Dans une base de données clé / valeur, vous devez dénormaliser autant que possible, puis utiliser une clé unique pour rechercher des données.

Si vous devez extraire des données de deux sources, vous devrez joindre manuellement le jeu résultant.

À l'origine, toutes les bases de données étaient non relationnelles. Ce n'est qu'avec l'arrivée de DB2 et d'Oracle au milieu des années 1980 qu'elles sont devenues courantes. Avant cela, la plupart des bases de données contenaient des fichiers plats ou hiérarchiques.

Les fichiers plats sont par nature ennuyeux, mais les bases de données hiérarchiques le sont beaucoup moins, en particulier parce que DB2 a été implémenté en plus d’une implémentation hiérarchique (à savoir VSAM) en premier lieu. Je crois que VSAM est toujours présent sur les systèmes mainframe et qu’il revêt une importance considérable.

DB / 1 (tellement obscure que je ne trouve même pas de lien wikipedia) était la base de données prédécesseur d’IBM sous DB2 (d'où son nom). C'était hiérarchique - en gros, vous aviez un fichier composé d'un nombre quelconque d'enregistrements «racine», généralement directement accessible par une clé. Chaque enregistrement racine pourrait alors avoir un nombre quelconque d'enregistrements enfants, chacun pouvant à son tour avoir ses propres enfants. L'effet net est un fichier d'index ou des enregistrements de racine, chaque racine étant le sommet d'une structure potentiellement arborescente. L'accès aux enregistrements enfants peut s'avérer délicat. L'accès direct étant limité, vous finissiez généralement par parcourir l'arborescence à la recherche de l'enregistrement dont vous aviez besoin. Une "base de données" peut contenir n'importe quel nombre de ces fichiers, généralement liés par des clés.

Cela présentait des inconvénients majeurs, notamment que tout ce qu’il fallait exiger d’un programme complet, équivaut en principe à une journée de travail pour ce que nous pouvons maintenant faire en SQL en quelques minutes. Cependant, la vitesse d’exécution laissait à désirer. À l’époque, un ordinateur central disposait de la puissance de traitement de votre iPhone (même s’il était optimisé pour les E / S de données) et de mauvaises requêtes DB2 pouvaient tuer une installation de plusieurs millions de dollars. Cela n’a jamais été un problème avec DB / 1 et dans un monde où les programmeurs coûtaient moins cher que le temps de calcul, c’était logique.

Banque de données Google App Engine :

  

Le magasin de données App Engine n'est pas une base de données relationnelle. Bien que l’interface de banque de données présente bon nombre des mêmes fonctionnalités que les bases de données traditionnelles, ses caractéristiques uniques impliquent une manière différente de concevoir et de gérer les données pour tirer parti de la possibilité de l’échelle automatiquement.

La base de données d'historique PI de OSIsoft n'est pas relationnelle. Il est uniquement fait pour archiver des données horodatées. Il est très utilisé par l'industrie, notamment comme base de données back-end pour tous ces "tableaux de bord".

Il n’est pas nécessaire d’être relationnel car il n’ya pas de jointures.

Deux autres types de bases de données qui n'ont pas encore été créés:

  1. Les référentiels de contenu sont des bases de données conçues pour le contenu (fichiers, documents, images, etc.). Ils ont généralement des constructions supplémentaires, telles qu'une méthode hiérarchique pour parcourir le contenu, rechercher, transformer entre différents formats, gérer les versions et bien d'autres choses. Exemples - Alfresco, Documentum, JackRabbit, Day, OpenText et de nombreux autres fournisseurs ECM.

  2. Répertoires, c’est-à-dire Active Directory ou LDAP. Il s'agit de bases de données conçues pour des scénarios de faible écriture / forte lecture et hautement distribuées sur des connexions à hautes distances géographiques / à latence élevée. Bien qu'ils soient principalement utilisés pour l'authentification / autorisation, ils ne doivent pas l'être si votre cas d'utilisation correspond aux exigences.

Les bases de données dimensionnelles sont d'excellents exemples de bases de données non relationnelles. Ils sont très couramment utilisés dans les tableaux de bord commerciaux / Business Intelligence pour les indicateurs de performance clés et d'autres types de données globales ou statistiques. Ils sont généralement renseignés à partir de bases de données relationnelles et peuvent offrir de meilleures performances dans certaines situations.

http://en.wikipedia.org/wiki/Dimensional_database

  1. bases de données XML, par exemple. xindice
  2. Bases de données d'objets, par exemple. db4o

Sachez que le concept de base de données relationnelle est très controversé. Des puristes tels que C. J. Date arguerait du fait que de nombreuses bases de données couramment utilisées (telles que Oracle et SQL Server) ne respectent pas suffisamment le modèle relationnel pour être qualifié de "relationnel".

Les bases de données non relationnelles ne répondent tout simplement pas aux exigences de Codd. Cachette intersystèmes & # 233; effectue une réécriture totale / reconfiguration de l’ancienne base de données du système d’exploitation Pick Operating. D'après ce que j'ai lu de Cach & # 233; cela semble être une refonte bien faite. Il permet aux programmes .net d'accéder à la base de données exactement comme le ferait SQL. Cach & ss; exécute les programmes Pick OS sans aucune modification. En important vos fichiers de sélection dans Cach & # 233; vous pouvez toujours utiliser vos anciennes applications avec écran vert, mais aussi écrire de nouveaux programmes en utilisant .net, ce qui vous permet de migrer vers les applications Windows sans abandonner les années de conception des données dans lesquelles vous avez déjà investi. Voici quelques informations sur le modèle Pick DB. Une base de données Pick utilise des enregistrements et des champs de longueur totalement variable. Toutes les tables sont associées à une clé unique et sont accessibles sans lire d'index. Pick a conçu le système pour utiliser un algorithme de hachage qui lit l'élément à partir du disque généralement lors de la 1ère lecture physique (en supposant que la maintenance du système a été effectuée correctement). Les champs de sélection ne sont pas dactylographiés. Toutes les données sont stockées sous forme de chaîne et le choix incombe au programmeur. Les valeurs Null sont stockées sous forme de chaîne vide. Ainsi, une valeur null ne occupe pas d'espace disque comme dans SQL. Il n'y a pas besoin de clés étrangères. Dans le monde relationnel & # 8216; & # 8217; l'administrateur de base de données doit créer une table d'en-tête de commande et une table de postes de commande. Dans le & # 8220; Choisir le modèle & # 8217; il n'y a qu'une seule table. Un exemple serait, & # 8216; Date de commande & # 8217; est un champ qui stockerait un nombre de jours depuis le 13 décembre 1967 & # 8217; (le système de collecte de données a été activé pour la première fois). Les programmeurs de sélection n’ont pas eu de problèmes d’an 2000. Une deuxième colonne serait le numéro de client. La grande différence est que lorsque vous accédez à la colonne Numéro de produit, ce sera & # 8216; Valeurs multiples & # 8217; (la non-conformité de codd). En d’autres termes, la base de données peut gérer 1 à 32 000 produits dans cette colonne. D'autres colonnes telles que Quantité commandée seraient dans une relation de contrôle / dépendance avec le numéro de produit et seraient également à valeurs multiples. Lorsque vous atteignez la quantité expédiée, le choix passe dans une troisième dimension et comporte un champ Sous-valeurs multiples. Vous auriez une colonne de numéro d’envoi, à valeur multiple par élément de ligne et sous-valeur multiple, contenant la quantité d’envoi de cette ligne pour ce numéro d’envoi. Aucune jointure interne n'est requise. Toutes les données de cet ordre sont stockées dans une table et dans un seul enregistrement. Aucune rangée orpheline jamais! Deuxièmement, la définition des données est un peu différente. Nos dictionnaires peuvent contenir des définitions pour des données qui ne sont pas dans cette table ou qui sont manipulées. Quelques exemples sont, Nom du client. Il serait défini comme suit: & # 8216; Utilisez la colonne Numéro de client et renvoyez le champ Nom de la table Clients. Un autre exemple est l’extension d’élément de ligne qui serait définie comme un calcul Quantité * Prix / PrixPer. Je crois avoir lu quelque part Cach & # 233; prétend avoir plus de 100 000 installations.

Je pense qu'une base de données à plat dans Excel n'est pas relationnelle et est utilisée par de nombreuses personnes.

Il s’agit en réalité d’une table de base de données qui ne peut pas être jointe à d’autres tables.

Les bases de données orientées objet constituent un type intéressant de base de données non relationnelle.

Le secteur commercial utilise parfois des bases de données OO car chaque transaction / contrat peut ressembler un peu aux autres de cette catégorie, mais possède également des attributs uniques. TRÈS difficile de le représenter relationnellement.

eXist-db est une base de données XML qui existe depuis très longtemps. Il est particulièrement utile pour xquery sur des tonnes de documents XML.

Tout fichier ou groupe de fichiers contenant des données mais n'exprimant pas de relations au sein de ces données est une base de données non relationnelle.

RRDtool est conçu pour stocker et regrouper les données de journal. Vous configurez un intervalle d'échantillonnage et y introduisez des données, puis les résultats sont renvoyés. Il est optimisé pour le stockage de taille fixe et commence à agréger les résultats passés après un certain temps. Par exemple, supposons que vous disposiez d'une base de données alternée avec un intervalle de temps de 5 minutes. Même si vous lui envoyez des données de température une fois par seconde, il n'enregistre que les résultats par incréments de 5 minutes. Après une semaine, il fait la moyenne de ces résultats en valeurs horaires. Après un mois, les résultats horaires sont moyennés en nombres quotidiens, etc.>

RRDtool est couramment utilisé comme backend pour des outils tels que Cricket et MRTG pour suivre les données relatives au réseau et à l’environnement pendant des mois et des années.

Pour un dbms basé sur un graphique, vous avez neo4j

Pour un système de gestion de hiérarchie hiérarchique, vous avez un système de fichiers standard ou avec " schema " prendre en charge toute implémentation LDAP.

Il existe de nombreuses réponses, mais toutes finissent par appartenir à l'une des deux grandes catégories suivantes:

  1. Navigation. Inclut les bases de données Tree / Hierarchy et Graph.

  2. Les bases de données qui cassent la première forme normale (valeurs multiples). Inclut les bases de données de choix, Lotus Notes et sa progéniture comme CouchDB.

EDIT: Et bien sûr, les magasins de clé / valeur comme BDB ne sont pas relationnels, mais cela va sans dire, n'est-ce pas? Je veux dire, ce ne sont que des magasins de clés / valeur.

dBase. Bien que commercialisé en tant que tel, il ne répond pas aux exigences.

En tant que base de données OO, Intersystems Cach & # 233; vient à l'esprit. Certains systèmes médicaux et de bibliothèques reposent sur ce principe.

  1. Dans mon entreprise, www.smartsgroup.com, nous avons un moteur de base de données propriétaire appelé "base de données du journal des transactions". Il est construit sur des fichiers plats, chaque fichier contenant une séquence d '"événements". ou "messages", au format binaire, plus divers index sur ces données et des algorithmes permettant de reproduire l'état du carnet de commandes d'une bourse. Il est hautement optimisé pour les mises à jour et les accès séquentiels.

  2. Dans les applications scientifiques, il est également courant d'utiliser des moteurs de base de données propriétaires plutôt que des SGBDR. J'ai également travaillé pour une société qui possède la plus grande base de données d'enregistrements cérébraux EEG au monde: www.brainresource.com. Là, nous utilisons une base de données à plat, et cela a bien fonctionné pour nous.

  3. SmartsGroup utilise également une base de données temporelle, qui ressemble à une table de base de données non relationnelle, sauf que nous stockons un historique de toutes les modifications apportées à tous les champs afin de pouvoir reproduire l'état d'une ligne donnée à une date donnée.

La page Wiki pour les bases de données dimensionnelles liées à ci-dessus semble avoir disparu.

Certains systèmes OLAP sont sauvegardés par des bases de données multidimensionnelles (MOLAP), qui sont souvent utilisées dans analyse financière. Ils offrent des clients interactifs qui permettent de naviguer dans les données à différents niveaux d’agrégation.

Dans mon université, un groupe étudie les bases de données déductives .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top