Cette question a fait l'objet de nombreuses discussions: quelles technologies de base de données les gros moteurs de recherche utilisent-ils?
Tant de discussions que cela m'a rendu confus. Alors ... qu'est-ce qu'une base de données, de toute façon? Les bases de données relationnelles ne sont-elles que des "bases de données"? Les bases de données orientées objet sont-elles des "bases de données"? Existe-t-il un système qui me permet de stocker et de récupérer des informations (comme une carte, une liste, etc.) dans une base de données?
Ou une base de données doit-elle stocker / récupérer des informations et possède également des fonctionnalités d'administration comme les utilisateurs et les privilèges? DBase III plus était-il une base de données, car ce n'était pas vraiment relationnel?
la source
Réponses:
C'est une excellente question et un ensemble de bonnes réponses. Je pense qu'une chose qui manque à la discussion est une réponse qui plonge dans la distinction entre une base de données et un système de gestion de base de données (SGBD). J'aime la définition de base de données fournie par Shark dans dictionary.com. Je pense que cela montre vraiment la nécessité de faire la distinction entre la base de données et le SGBD. La base de données est "une collection complète de données connexes organisées pour un accès pratique". La deuxième partie de cette définition, qui dit «généralement dans un ordinateur», c'est là que réside la distinction. S'il est stocké sur un ordinateur, il peut ou non être stocké dans un SGBD. Il peut être stocké dans un système de fichiers OS. Il peut être stocké dans un système de fichiers propriétaire. Je suis donc d'accord avec FrustratedWithFormsDesigner qu'un catalogue de cartes est une "base de données" (enfin peut-être - est-ce complet et connexe? Plus à ce sujet plus tard). Il se trouve simplement qu'il est stocké dans une armoire à fichiers. Dans le monde d'aujourd'hui, la plupart des «collections complètes de données connexes organisées pour un accès pratiquesont stockés sur un ordinateur, donc je ne suis pas d'accord avec Shark qu'il est dommage que Dictionary.com ait ajouté cette partie. Je pense que c'est tout à fait correct - comme définition de "base de données".
Alors, comment définissons-nous le SGBD? Je suis retourné sur dictionary.com et j'ai trouvé ceci :
"Une suite de programmes qui gèrent généralement de grands ensembles structurés de données persistantes, offrant des fonctionnalités de requête ad hoc à de nombreux utilisateurs. Ils sont largement utilisés dans les applications d'entreprise."
La définition continue et est assez longue. Il décrit les fonctionnalités communes fournies par un SGBD, telles que la sécurité, l'intégrité des données, la gestion des transactions, le contrôle des accès concurrents et, plus important encore, l'indépendance des données. Un SGBD fournit une vue externe des données extraites de la façon dont elles sont stockées physiquement.
En utilisant cette définition, je pense qu'il est clair qu'un SGBD doit fournir un modèle de données , c'est ainsi que les données sont organisées pour être présentées à l'utilisateur. Les trois modèles courants sont hiérarchiques (IMS), réseau (IDMS) et relationnels (DB2, Oracle, SQL-Server, etc.). Il existe également le modèle OO (OODBMS). Seul le modèle relationnel a aujourd'hui une large applicabilité. Les autres modèles sont toujours utilisés, mais uniquement dans des situations de niche. Le SGBD doit également fournir les autres fonctionnalités mentionnées. Je les qualifierais collectivement de fonctionnalités ou de capacités de gestion des données.
Par conséquent, les produits logiciels qui fournissent des fonctionnalités de gestion des données sont des SGBD, tandis que les produits qui ne les fournissent pas ne sont pas des SGBD. Les produits NoSQL ne sont pas des SGBD. Cela ne veut pas dire qu'ils ne sont pas utiles, et nonpour dire qu'ils ne stockent pas de "bases de données". J'aime à penser que le SGBD, comme le dit la définition, résout une classe de problèmes liés aux applications commerciales comme la comptabilité, la paie, la facturation, la gestion de la relation client, les ventes, etc. Les produits NoSQL, bien que non SGBD, sont excellents pour résoudre un classe de problèmes qui ne sont pas liés aux applications commerciales traditionnelles, mais qui existent maintenant en raison de l'énorme quantité de stockage et de la technologie informatique de bande passante est capable aujourd'hui. Ce sont des applications comme la recherche sur Internet, comme les enchères en ligne, comme Twitter et comme Facebook. Le SGBD n'est pas un bon moyen de résoudre ces problèmes, car le SGBD contient des fonctionnalités de gestion des données qui, bien que d'une nécessité absolue pour une application métier, ne sont pas utiles pour résoudre le stockage et la récupération de Craig. liste des publicités ou des flux twitter (enfin en général, c'est une autre discussion pour une autre fois :-)). Ces problèmes nécessitent une mise à l'échelle massive et une réponse extrêmement rapide et le SGBD, avec ses fonctionnalités gonflées, ne convient pas.
Un professionnel des données doit comprendre tous ces outils pour stocker les données et quelle classe de problèmes ils sont aptes à résoudre afin de choisir le bon outil pour le travail, tout comme un entrepreneur général doit savoir lequel de ses outils de construction est le bon outil pour le travail. Aucun outil n'est bon ou mauvais en soi. C'est bon si c'est un bon moyen de résoudre un problème important.
Je conclurai en notant deux autres distinctions clés dans la définition de la base de données et du SGBD qui pourraient être négligées jusqu'à présent dans la discussion. La définition de la base de données comprend « la collecte complète de données connexes ». La définition du SGBD comprend «gérer de grandes structuresd mieux utiliser MS Access ou un autre SGBD relationnel. Donc, peut-être qu'un catalogue de cartes n'est pas une base de données après tout, bien qu'il soit complet (il contient un enregistrement de tous les livres de la bibliothèque), il n'est pas lié car il ne contient que des informations sur les livres, pas des informations connexes complètes sur les auteurs, les éditeurs, etc.
Deuxièmement, un SGBD excelle dans le stockage de données "structurées". Il est entièrement basé sur un schéma défini d'éléments de données discrets avec des types structurés. Un produit NoSQL, par exemple un magasin de valeurs clés dépourvu de schéma, excelle dans le stockage de données non structurées. Ce produit NoSQL ne répond donc pas à la définition d'un SGBD. Mais si le problème que vous essayez de résoudre est le stockage de données non structurées (ce que nous n'avons même pas tenté de faire lorsque le SGBD a été développé pour la première fois), et vous n'avez pas besoin de fonctionnalités de gestion des données indépendantes de l'application sur laquelle vous allez écrire traiter les données non structurées, le produit NoSQL est un outil parfait.
J'espère que cette réponse ajoute de la valeur aux autres bonnes réponses publiées ici. J'attends avec impatience tous les commentaires et points de discussion que quiconque pourrait avoir qui nous aideront tous à élargir notre compréhension des bases de données et des classes de technologie qui résolvent les problèmes liés aux données.
la source
Je citerai Dictionary.com , car je prends cela comme le sens de la base de données:
Selon cette définition, vous pouvez considérer une base de données comme un RDBMS à part entière (SQL Server, Oracle, etc.) ou un fichier plat de base. S'il stocke des données, il peut techniquement être considéré comme une base de données.
Maintenant, comme la plupart des choses dans notre monde moderne, il y a la signification acceptée d'un nom. Et dans le cas de la base de données , cela variera d'une personne à l'autre. Beaucoup de gens considèrent une base de données uniquement comme une entité gérée par un système de données.
Il convient de noter le commentaire de @ FrustratedWithFormsDesigner:
Je suis d'accord avec cette affirmation et je ne pense pas nécessairement qu'une base de données doive vivre dans un "ordinateur" ou tout autre appareil électronique. Un catalogue de cartes est un parfait exemple d'une base de données non informatisée.
la source
Pour moi, une base de données est une chose qui existe pour stocker et récupérer des données. Nous appelons Access une base de données, même si ce n'est vraiment qu'une jolie interface pour une collection de fichiers. Outlook (au moins sur Mac) appelle sa banque de messages une base de données. Certaines personnes appellent même Excel une base de données (mais cela me fait renifler - donc il y a une ligne quelque part).
Je pense que la définition a évolué au fil du temps, et la comparaison de dictionary.com, à wiki, à des articles de divers professionnels de bases de données au cours des 30 dernières années, donnera une variété de définitions. Et la définition continuera également d'évoluer.
Si vous parlez d'une sorte de source de données que vous ou vos applications utilisez pour stocker ou récupérer des données, qu'elles soient relationnelles ou non, je n'ai aucun problème avec le fait que vous l'appeliez une base de données. S'il s'agit d'un fichier texte, vous pourriez avoir des sourcils levés, mais je ne suis pas sûr de comprendre la nécessité de déterminer la définition de manière si finie que les gens se mettent en colère à ce sujet.
Certaines personnes obtiennent assez d'apparence, apparemment, si vous venez même de suggérer que BigTable (ou NoSQL ou hadoop) est une "base de données", et prétendez que l'appeler en tant que tel donnera - en particulier aux débutants - une grande promesse de performances infinies, d'immortalité et licornes. Alors que d'habitude, vous voulez simplement dire que c'est un endroit où les données sont stockées et récupérées, sans aucune garantie sur ce que fait la mise en œuvre réelle, qu'elle soit relationnelle ou non, ou si vous pourriez produire une telle chose vous-même lorsque vous vous ennuyez un dimanche après-midi.
J'admettrai que je grincer des dents quand les gens parlent d'une base de données relationnelle et appellent des lignes «enregistrements» ou des colonnes «champs». Mais même si cela me contrarie un peu, je ne me fâche pas et je ne fais pas tout mon possible pour les corriger - à quoi ça sert? J'ai compris ce qu'ils signifiaient, même s'ils n'étaient pas précis à 100%.
la source
Cela peut être très général, juste une collection de données et de structures. Le système de gestion d'une base de données peut être aussi simple qu'un système de fichiers ou aussi complexe qu'un système fédéré comme DNS.
Généralement dans un usage moderne, quand on dit base de données, on implique à la fois le stockage des données et les structures et un système de gestion de base de données qui l'accompagne, et comme tant de travaux théoriques ont été effectués sur les fondements des bases de données relationnelles, ce sont toujours les plus populaires donc que souvent quand on dit base de données, on sous-entend souvent une base de données relationnelle.
Avec l'essor des bases de données NoSQL / non relationnelles, le terme base de données est redevenu plus général et potentiellement plus ambigu, car un modèle partagé pour comprendre les données ne peut pas être supposé.
Avant la fondation de la théorie relationnelle, la modélisation des données dans d'autres systèmes variait d'un système à l'autre et n'avait pas de principes directeurs communs comme le modèle relationnel - d'autres types de bases de données telles que des bases de données hiérarchiques et des bases de données réseau ont été utilisées.
la source
J'ai travaillé pour Ashton-Tate pendant le développement de dBASE Direct / 36 et dBASE IV, en utilisant mes connaissances dBASE III Plus pour coder un petit programme pour aider à tester dBASE Direct / 36 (interface avec un mini-ordinateur IBM System / 36). Nous avons dû effectuer des instructions binaires de chargement et d'appel dans les tables SQL System / 36, ce qui a nécessité de taper répétitivement les mêmes instructions 'load' et 'call' tout en changeant les noms de table et les noms de champ lors de la soumission pour obtenir les données de chaque enregistrement ou groupe de plusieurs enregistrements selon l'étendue de la requête. dBASE III Plus, un langage de programmation de base de données, m'a permis de créer, 'dbldot.prg' qui a changé l'invite de point unique en double point car j'ai conçu pour être un indicateur que le système était en mode de récupération SQL, ainsi que le texte sous la ligne de commande qui disait: "
À l'époque, dBASE était un langage de programmation de base de données, ou plus précisément, un langage de programme qui permettait la manipulation d'enregistrements de données. Un enregistrement était un groupe de champs contenant des données pour un élément individuel, comme une personne LAST_NAME, FIRST_NAME, ADDRESS, CITY, ST, ZIP, PLUS_FOUR, SSN, etc. Ces structures ont ensuite été représentées dans des tableaux et organisées en lignes et colonnes, une ligne étant un enregistrement individuel et une colonne les données d'une série d'enregistrements pour chaque nom de champ. De cette façon, un utilisateur pourrait facilement trier par nom de champ pour trier et regrouper les enregistrements par champs communs spécifiques, tels que CITY, ST, ZIP, etc.
Le langage dBASE a permis à l'utilisateur ou au programmeur de manipuler des données, d'effectuer des tris, d'afficher des tableaux, des enregistrements et d'effectuer des calculs (Y2K était loin mais les dates devaient être converties en YYYYMMDD pour trier les données MM-DD-YYYY entrées, ce qui pourrait être fait avec DtoC et CtoD (date à caractère, caractère à date)). Sans le langage dBASE, les fichiers de données seraient simplement une série d'enregistrements (lignes) avec des champs communs (colonnes).
Base de données relationnelle - c'était le terme utilisé pour croiser plus d'une base de données (table) avec une autre qui contenait des informations différentes mais contenait un ou plusieurs champs communs. Par exemple, une base de données intitulée «Adresses» contient «LNAME», «FNAME», «ADDRESS», «CITY», «ST», «ZIP», «SSN». Une autre base de données intitulée "CHECKING" contient "ACCOUNT_NO", "ROUTING_NO", "CUSTLAST", "CUSTFIRST", "DOB", "SSNO", "CUST_NO". Bien que les noms de champs soient différents, plusieurs d'entre eux contiennent les mêmes informations qui peuvent être liées les unes aux autres pour lier les données d'une base de données à celles de l'autre pour, par exemple, envoyer des relevés aux clients de la banque, utiliser les champs de prénom et de nom et les numéros SS pour relier les données, extraire l'adresse du client d'une base de données et les informations de compte à placer dans le relevé de l'autre. Ensuite, à plus grande échelle, une fonction de fusion et publipostage peut avoir lieu pour effectuer ces actions sur chaque client individuel dans la base de données ADRESSE, extraire les informations de compte associées de chaque client, personnaliser le relevé, l'imprimer et l'adresser avant de passer au suivant enregistrement, ou client, dans la base de données.
Donc, quelque chose comme MS ACCESS pourrait être plus un SGBD, mais au niveau de base, dBASE était un langage pour créer des interfaces utilisateur frontales et effectuer toutes les manipulations de données entre les bases de données pour créer une relation entre elles et renvoyer les données résultantes pour nous sommes de simples humains à utiliser.
Beaucoup de choses ont changé depuis lors, mais la fondation reste la même. Les données sont toujours contenues dans des enregistrements contenant une série de champs de différents types de données et doivent être croisées et fusionnées avec celles d'autres bases de données au moyen d'un ou de plusieurs points de données communs, ce qui nous permet d'utiliser des cartes de crédit, de créer des comptes sur le Web en utilisant nos identifiants Google, Facebook, Twitter, suivre nos historiques d'achat, etc. Nos vies ne sont qu'une série de nombreuses bases de données relationnelles qui se chevauchent, que nous parcourons tous les jours sans penser à tous les bits et octets qui interagissent pour nous apporter les plaisirs et l'évolution continue de la facilité dans nos vies d'aujourd'hui.
Au bail, c'est comme ça que j'ai toujours compris ces nombreuses années de tests logiciels et matériels qui ont commencé avec dBASE II en 1984.
la source
Le document fondateur de Codd était intitulé Un modèle relationnel de données pour les grandes banques de données partagées . Ce qu'il a appelé une «banque de données», nous l'appellerions une base de données.
J'aime son imagerie, cependant. Cela implique un endroit où les données peuvent être stockées, sachant qu'elles seront conservées en sécurité, correctement comptabilisées et rendues uniquement à ceux qui peuvent prouver qu'elles ont le droit d'y accéder. Si notre succursale est cambriolée, nous avons l'assurance que la société bancaire dispose d'une sauvegarde adéquate pour garantir que nos précieuses ressources ne sont pas irrévocablement perdues.
la source
D'après Fundamentals of Database Design 7th Ed. (p. 5),
Ils continuent en disant que l'usage commun est plus restreint,
En aucune définition, une base de données n'est explicitement "relationnelle" dans quelque sens que ce soit, même si elle est souvent supposée parce que l'industrie est saturée de DBA d'un type spécifique et sans doute le logiciel SGBD le plus avancé est tout relationnel. À partir du dictionnaire de la base de données relationnelle
Ce dernier point est quelque peu important, et j'aime aussi la distinction entre le SGBD / SGBDR et la base de données elle-même.
la source