it-swarm-fr.com

Pourquoi SQL n'est-il pas si répandu dans les grandes applications de bureau?

En tant que développeur de logiciels, j'ai travaillé sur des projets allant de minuscules applications fabriquées à domicile aux applications d'entreprise de taille moyenne. Dans presque tous les projets, j'ai utilisé une base de données ou regretté choisissant de ne pas l'utiliser depuis le début.

Maintenant, je me demande quelques choses sur les bases de données et leur utilisation dans les applications générales:

  • Pourquoi Windows n'utilise-t-il aucune base de données SQL "centrale"? Par exemple:
    • Les erreurs déclarant que les données sont stockées dans un tas de fichiers,
    • Windows Update stocke tout dans des fichiers plats,
    • Les icônes cache sont stockées dans un fichier unique très étrange qui ne semble pas être accessible via SQL, etc.
  • Pourquoi tant de grandes applications évitent-elles d'utiliser des bases de données? Par exemple, Microsoft Outlook gagne-t-il à l'aide d'une bonne base de données au lieu de réinventer la roue en ayant son propre format pour les fichiers .pst et en stockant certaines données dans le registre?

Si la base de données ajoute une couche supplémentaire d'une complexité globale et d'une petite perte de performance, c'est un prix énorme de rendre le code plus simple dans la plupart des circonstances, notamment en ce qui concerne le stockage de petits mordus organisés de données au lieu de grandes binaires. ruisseaux. Alors pourquoi si peu de produits utilisent réellement des bases de données? Probablement la seule application que je connaisse qui utilise réellement la base de données SQLite est Firefox, et peut-être que Microsoft Exchange (mais la dernière n'est pas une application de bureau)?

Aussi, ne serait pas un ensemble d'applications, comme Microsoft Office ou Microsoft Expression, bénéficie d'un unifié SQL Base de données , ce qui facilite la déploiement des applications, pour mettre à jour/mettre à jour les données, partager des données entre ces applications, pour faire des sauvegardes, etc.?

28
Arseni Mourzenko

De nombreuses applications incorporées SQLite . Citant de leur site Web:

SQLite est une bibliothèque logicielle qui implémente un moteur de base de données SQL transactural SQL autonome, Serveral SQL. SQLite est le moteur de base de données SQL le plus largement déployé au monde. Le code source pour SQLite est dans le domaine public. ".

Vous utilisez simplement l'une des API disponibles, créer une base de données, des tables, etc. et le moteur SQL stockera tout dans un fichier binaire que vous pouvez placer n'importe où dans le système de fichiers de l'utilisateur. Le meilleur de tous, c'est la soie dentaire.

29
Rafael Vega

Windows est livré avec et utilise un moteur de base de données nommé moteur de stockage extensible (ESE) .

[~ # ~] ESE [~ # ~ ~] est utilisé par Active Directory, Exchange Server, Windows Mail and Desktop Search, parmi ses autres services et applications Windows.

Pour le développement, des wrappers open source existent:

Avec une expédition ESE avec chaque version moderne de Windows, vous n'avez pas de problèmes de déploiement de la base de données. L'architecture ESE remplit un rôle similaire aux bases de données intégrées telles que SQLite.

23
Ed James

Les bases de données relationnelles ne sont pas la structure de données la plus efficace pour chaque domaine. Beaucoup d'applications de bureau utilisent des bases de données intégrées, vous ne pouvez tout simplement pas vous dire qu'ils le font si tout ce que vous voyez sont quelques fichiers de données.

8
Jeremy

Pourquoi Windows n'utilise-t-elle aucune base de données SQL "centrale"?

En fait, cette idée a été en développement chez Microsoft depuis un certain temps. C'est ce qu'on appelle Winfs . C'est une technologie intriguante et est disponible pour les abonnés de MSDN. Certains jours bientôt, je vais l'installer sur un VM et jouez avec elle.

7
Adam Crossland

Les bases de données offrent une flexibilité et comme chaque fonctionnalité, il y a presque certainement un coût. Si un fichier plat fonctionnera, vous pouvez assumer que personne ne doit pas nécessiter d'interroger les données de manière imprévue, comme dans un rapport ad hoc.

Les bases de données font également un bon travail de manipulation de multiples connexions/entrées. Encore une fois, si ce n'est pas une exigence pour votre application de bureau, pourquoi ajouter la complexité supplémentaire? Outre l'interface utilisateur/l'installation réelle d'Outlook lui-même, combien d'autres applications ou utilisateurs tentent d'écrire dans le fichier Outlook sur votre ordinateur?

Il serait plus facile si toutes les données étaient dans une base de données relationnelle d'un "Je souhaite pouvoir interroger toutes les données de toutes les directions, je vois une langue unique comme une seule langue comme SQL", mais cela est rarement une priorité avec de nombreuses applications.

La plupart des programmeurs l'examineront de:

  • Je sais ce que l'application est supposée faire, c'est tout ce qu'il est supposé faire

  • mon application est la seule entitice qui accédera à ce jour et/ou manipuler ces données

  • une structure de fichiers simple de mon propre design fonctionnera

  • pour au moins une application, j'aimerais éviter de s'appuyer sur le code des autres et avoir un contrôle complet.

6
JeffO