41 votes

Que pensez-vous de l'avenir pour la technologie de base de données?

Le bon vieux Relationnelle Système de Gestion de Base de données (SGBDR) a été autour depuis un certain temps maintenant et il est encore, certainement, à mon avis, qui est le pilier de la majorité des plates-formes de production/applications logicielles.

Récemment, il semble y avoir beaucoup de battage médiatique dans la communauté au sujet relativement jeune de la base de données des technologies telles que le Cloud Services (SQL Azure, Amazon S3, etc.) et comment la virtualisation est en train de changer la manière de voir/le travail avec la technologie de base de données et bien plus encore.

Nous sommes clairement à un moment de pousser de l'avant, à la recherche de façons d'innover et d'améliorer notre utilisation de la technologie de base de données, dans une grande manière.

Que pensez-VOUS de l'avenir de la technologie de base de données en général et que voyez-vous comme certains des obstacles potentiels que nous sommes confrontés dans les années à venir?

EDIT: Certes, il y peut-être pas de "bonne" réponse à cette question, cependant je ferai un bounty et de choisir une "meilleure" réponse en fonction de la qualité des arguments/opinions/idées exposées.

Impatient de vos réponses!

24voto

ehsanul Points 3103

La question est un peu général. Technologie de base de données est en train d'être utilisés dans des applications disparates, à partir de la manipulation de la production de flux de travail et les services bancaires, les applications web de poker et la main sur le logiciel de suivi.

Cela dit, beaucoup de la récente innovation dans les bases de données semble être centrée sur le web. Comme le web consomme de plus en plus de monde, il se pose un besoin de stocker et de récupérer de grandes quantités de données pour les applications web. Il y a une pression énorme pour améliorer le débit et l'évolutivité des technologies de bases de données qui sont alimenter des applications web populaires.

La pression est de plus donné que les développeurs de la demande des bases de données qui sont de "Harder, Better, Faster, Stronger", pour citer les Daft Punk, et ils veulent qu'ils pas cher et facile à travailler avec. La chance vient-il que certains de ces développeurs sont exactement les types de personnes qui peuvent développer ces technologies, et ils le font.

C'est la raison pour laquelle nous voyons beaucoup d'intérêt à clé/valeur, les magasins maintenant, comme l'hyper rapide de Tokyo Cabinet. Mais ceux qui ne sont pas exactement de manière innovante, et sont assez compliqué de travailler avec. Habituellement, ils ne sont même pas adapté pour la tâche que vous pourriez avoir à l'esprit. Mais il y a eu progrès récents autour de ces types de bases de données.

Redis, par exemple, ajoute beaucoup de fonctionnalités qui n'est pas disponible dans la traditionnelle clé/valeur des magasins, ce qui rend beaucoup plus facile de travailler avec. MongoDB, un document de base de données orientée un peu similaire à CouchDB, a encore plus de fonctionnalités tout en conservant les avantages de la rapidité et de l'évolutivité, et ressemble à une très prometteuse projet.

À l'extrême fin, nous voyons aussi très évolutive et tolérante aux pannes des systèmes distribués en cours de création, comme Voldemort qui sont en mesure de fonctionner, même si certaines parties du système sont perturbés. Il y a de plus comme je ne me souviens pas du haut de ma tête.

Mais l'idée générale est que la BASE est de prendre la place de l'ACIDE. De nombreuses applications, en particulier sur le web, n'a pas vraiment besoin de leur base de données afin de se conformer strictement aux principes ACID (contrairement au début de la base de données adossés à des logiciels, que l'on a souvent de la "mission critique"), et en laissant un peu d'inoffensifs incohérence des données peuvent aller un long chemin en faire des bases de données plus souple.

Maintenant, ne vous méprenez pas: SGBDR va certainement y rester un long moment. C'est presque toujours le bon choix pour la moyenne site web back-end, et ça fonctionne. Et il y aura toujours un besoin pour l'ACIDE. Mais les bases de données relationnelles ne sera plus le one-size-fits-all solution qu'il a toujours été.

Dans l'avenir, je pense que ce que nous allons voir est l'apparition d'une grande quantité de spécialisation dans les bases de données. Il y aura de la diversité dans les types de bases de données disponibles, mais chacune spécialisée dans son propre chemin, de sorte que vous pouvez en trouver un qui convient vraiment à vos besoins. C'est assez excitant de voir comment le champ est en progression, qui aurait pensé que ce serait une zone active de développement? Encore une fois, je crois que cela a été provoqué par les besoins créés par le world wide web.

Vous pouvez également consulter ces deux liens intéressants:
http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/
http://delicious.com/ehsanul_g3/database

15voto

Miles D Points 3583

Bases de données relationnelles et SQL sera autour pendant un temps très long - si il y en a parmi vous aussi vieux que moi, alors vous vous souvenez peut-il a fallu de nombreuses institutions telles que les banques ans pour bouger à nouveau ultramodernes bases de données relationnelles, à partir de l'unité principale hiérarchique des bases de données.

Ce que je pense est l'amélioration de tous les temps est le moyen par lequel ces bases de données sont accessibles, et la façon dont il est plus facile de code contre eux.

Il ne fait aucun doute qu'il existe une place pour toutes sortes de solutions de rechange, mais je serais surpris si les goûts de SQL Server, Oracle, MySQL et DB2 perdre beaucoup de parts de marché à d'autres services dans les 10 prochaines années.

13voto

onupdatecascade Points 2049

Le succès de bases de données relationnelles (et ils sont partout aujourd'hui, c'est difficile de trouver une entreprise sans l'un, ni même des dizaines ou des centaines d'entre eux) est basé à l'origine de la perspicacité que les principaux penseurs au début avait CHEMIN du retour:

  1. Les entreprises ont besoin que leurs données soient facilement accessibles (duh) pas enterrés à l'intérieur d'une propriété, des données hiérarchiques magasin où il faut un programme et développeur juste pour interroger les données. Ces premiers ingénieurs savaient ce à partir d'une expérience durement acquise. Un premier aperçu a été un "aplatissement" les données dans les tables. Il semble démodé maintenant, mais une composante de la réussite de SGBDR était le fait qu'il n'est PAS hiérarchique, et il est simple de requête et de recombiner vos données de la façon dont vous avez besoin pour. En fait, ces premiers SGBDR gars ont travaillé incroyablement dur, avec l'intention, à la suppression de la hiérarchie et d'imbrication de stockage de données. Les graphes d'objets tendance (tendance) à être assez fixe dans un typique OO programme, et si cette fixité porte jusqu'à la disposition du stockage vous pouvez ajouter la commodité pour le développeur, mais vous venez de créer tracas et les frais dans les ad-hoc sur l'utilisation de ces données.
  2. La suite sur cette notion, les entreprises ont besoin d'un simple et normalisé d'accès (requête!) leurs données. Lorsque rien n'existait, SQL a été une révélation. Il est difficile d'imaginer comment révolutionnaire, c'est quand nous le prenons pour acquis maintenant. Assurez-vous de SQL est rouillé et fatigué, mais s'arrêter et de vraiment imaginer ce que serait votre vie comme de codage par rapport à des milliers de différentes imbriquées, peut-être que le fichier binaire systèmes de stockage dans un monde sans SQL.

Ainsi, les données libérées de la hiérarchie, plus une commune de la méthode d'accès/query language = killer application d'entreprise. Ces deux principes sont toujours valables. Je suis d'accord avec les posts des autres sur certains défauts de SQL et les SGBDR aujourd'hui -- codage C/++/#/java avec base de texte des requêtes à la main pour le moteur de base de données est absurde et anachronique. J'aimerais enfin avoir un moyen de passer directement une requête "arbre" comme un objet-friendly structure de données vers/depuis le SGBD au lieu de texte de la requête. (MS a eu ça pendant un moment mais il abandonne.) Mais IL nous est, paradoxalement, les prisonniers de tout ce qui a été réussi dans le passé récent.

Je crois fermement que rien ne va supplanter les SGBDR à un autre système répond à ces exigences ET obtient une grande partie du marché: 1. Une banque de données que vous pouvez librement de requêtes ad-hoc et de modifier sans égard à ou besoin d'une application finale. Les entreprises veulent voir, l'utilisation, et d'interroger leurs données indépendamment de l'application. 2. Une interface normalisée pour l'activité qui est simple à apprendre et à utiliser pour quelqu'un comme un analyste d'affaires. 3. De l'ACIDE.

Si nous avons obtenu ces choses à partir d'un objet de base de données, et c'était vraiment rapide, alors il serait certainement en concurrence. Personne ne se soucie trop en dehors de cette cercle des geeks :-), comment les bits sont déplacés sous le capot.

Je pense que le passé va influencer l'avenir de du SGBDR. Ils vont le soldat, même si elles ne sont pas glamour, parce qu'ils sont toujours la seule solution qui a ces trois propriétés. Je ne pense que nous allons voir l'innovation à l'interface entre le SGBD et les applications; SQL pourriez même avoir pris sa retraite de la le domaine des programmes de communication avec les moteurs de données, et bon débarras. ORM, je l'espère, deviendra de moins de un band-aid pour automatiser l'écriture SQL et plus d'un remplacement pour SQL. Les Techniques de mise à l'échelle au lieu de la place sera sans doute la maturité, et ils semblent prometteuses.

11voto

Meep3D Points 2061

La réputation de l'appât edit:

Moi et un autre développeur à mon travail avait un tableau blanc avec un "Technologies de qui doit mourir" section, nous aimerions ajouter à. Mime courriel a été là-bas, comme ce fut SQL. Le problème avec ancrée technologies telles que la ces est qu'il est difficile de voir un monde sans eux, il est facile de voir un monde sans eux, mais il est difficile de visualiser un monde avec quelque chose de vraiment mieux.

SQL est un de ces reliques. Il a été initialement conçu pour être tapé dans une base de données à l'aide de requêtes conçu par un homme - d'où le pseudo-anglais structure de celle-ci. Les Machines n'étaient pas destinés à faire des commandes SQL, c'est juste que maintenant que la programmation, notamment avec le web, a une forte dépendance à l'égard des bases de données et SQL est ce qui est l'interface standard pour les bases de données.

Une chose que je suis sûr, c'est que l'obtention d'un langage de programmation pour faire un homme-chaîne de langue qui est transmis à une base de données qui a pour décoder dans un ordinateur format de langue pour comprendre qu'il est à la fois inefficace et dangereux. Le mélange des données et des commandes est quelque chose que vous ne voulez pas faire, comme il est demander de problèmes. Même aujourd'CPU contient un bit NX pour signaler les zones de mémoire de données de sorte qu'ils ne seront pas accidentellement run - causant un crash ou un exploit. SQL injection questions sont légion, et sont le symptôme pas de (seulement) de mauvais programmeurs, mais d'une mauvaise technologie. Nous avons beaucoup de haut niveau de langues (ci-dessus C), de sorte que les dépassements de mémoire tampon n'est plus un problème, mais sont coincés avec un C niveau de langage de base de données conçu au début des années 70.

Vous avez juste besoin de regarder n'importe quel semi-expérimenté en PHP (ou de n'importe quelle langue) du programmeur code. Sans aucun doute, ils utilisent tous une certaine forme d'abstraction SQL bibliothèque à prendre les risques de complications et de loin de l'utiliser. Par exemple, si je veux extraire le contenu d'une ligne, je vais utiliser quelque chose comme ce qui suit:

$row = CMS_SQL::get_row ('pets_table', 'bob', 'name');

Qui va tirer la ligne à partir de pets_table avec le nom de " bob " - en supposant que le nom est unique dans le schéma. À l'aide de véritables SQL que vous avez à faire...

$name = mysql_real_escape_string ($name);
$result = mysql_query ("SELECT * FROM `pets_table` WHERE `name`='{$name}' LIMIT 1");
$row = mysql_fetch_assoc ($result);

Ce qui est assez horrible, surtout si vous devez répéter la même chose beaucoup. Aussi prenons mise à jour des lignes. Le code ci-dessous utilise mon abstraction SQL classe pour modifier le nom du chat de bob à bobby.

$row['name'] = 'bobby'; # Change pet name to bobby
CMS_SQL::update_array ($row, 'pets_table');

Remarque: update_array utilise la clé primaire id si elle est disponible pour suivre la ligne, c'est pourquoi je ne semble pas l'indiquer. Le code SQL de la ci-dessus est bien pire.

Et enfin, d'obtenir une valeur unique à partir d'une base de données:

$cat_colour = CMS_SQL::get_element ('pets_table', 'colour', 'bob', 'name');

Et dans (dangereux) SQL:

$sql = "SELECT `colour` FROM `pets_table` WHERE `name`='bob' LIMIT 1";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
    list ($cat_colour) = mysql_fetch_array ($result);
}
else
{
    $cat_colour = false;
}

Comme je l'ai dit, il est très difficile d'envisager une technologie de remplacement pour quelque chose - quelque chose de nouveau a généralement quelques bonnes idées qui ne fonctionnent pas, et il est évident idées qui sont en quelque sorte manqué, mais j'ai vraiment le faire voir à un éventuel abandon de SQL et de se tourner vers le traitement des bases de données comme si elles étaient effectivement des ressources physiques - avec php par exemple éventuellement traiter l'ensemble de la chose en tant que natif de tableau associatif. Je vois aussi des références d'être traités comme des pointeurs de manière transparente: par exemple, si vous êtes de faire un système de commentaire et d'avoir une table appelée "posts" et "utilisateurs" et vous avez un poster colonne sur la table posts qui fait référence à une entrée unique dans les utilisateurs puis la colonne de postes.poster allait être la bonne ligne sur les utilisateurs. La mise à jour, il serait de mise à jour de la ligne des utilisateurs. Pas de jointures, sous-sélectionne ou toute non-sens.

Avec le tout étant traité comme un natif de la structure de données, il permet d'utiliser un langage spécial pour être exécuté le serveur de base de données, ou même du code natif si le compilateur a été particulièrement intelligent, qui vous permet de l'utiliser en natif des conditions plutôt que là OÙ, comme l'ensemble de la OÙ var='val' ET var2='val2', c'est la programmation conditionnelles (comme si l') simplement représenté dans lisible par l'homme SQL.

Il va probablement être un projet open source comme PostgreSQL ou MySQL ou une autre base de données qui permettra d'offrir une classe native pour traiter avec des données non-SQL format pour un site web en langue tels que Ruby, Python, PHP, etc. qui apportera la facilité de traiter avec les indigènes de données et la puissance d'un dédié à SQL server en un seul. Une fois qu'il est standardisé, stable, natif alternative je peux entrevoir ce remplacement SQL pour 99% de la bas de gamme de plates-formes de stockage de données, SQL relégué à haute performance ultra-d'énormes bases de données et les systèmes existants (avant d'être finalement totalement supplanté).

La raison SQL est si répandue, c'est que les gens pensent en termes de SQL lors d'activités - dès que quelque chose vient le long qui permet aux gens de visualiser mentalement le stockage de données et des requêtes en d'autres termes, je pense que c'est jours sont comptés.

Edit: wow, je ne savais pas combien je détestais SQL jusqu'à ce point :)

7voto

Shane Castle Points 1252

Je pense que l'avenir est le stockage d'objets natif. Si vous regardez le travail que Microsoft fait avec Entity Framework, l’évolution logique consiste à déplacer le mappage d’entités dans la base de données. En stockant les objets dans leur format natif, le mappage objet / relationnel serait éliminé.

Entity SQL (eSQL: http://msdn.microsoft.com/en-us/library/bb387118.aspx ) indique déjà le chemin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X