En tant que développeur de logiciels, j'ai travaillé sur des projets allant de minuscules applications maison aux applications d'entreprise de taille moyenne. Dans presque tous les projets, j'ai utilisé une base de données ou j'ai regretté d'avoir choisi de ne pas l'utiliser depuis le début.
Maintenant, je me pose quelques questions sur les bases de données et leur utilisation dans les applications générales:
- Pourquoi Windows lui-même n'utilise aucune base de données SQL "centrale"? Par exemple:
- Les données de rapport d'erreurs sont stockées dans un tas de fichiers,
- Windows Update stocke tout dans des fichiers plats,
- Le cache des icônes est stocké dans un fichier unique très étrange qui ne semble pas être accessible via SQL, etc.
- Pourquoi tant de grandes applications évitent d'utiliser des bases de données? Par exemple, Microsoft Outlook ne gagnerait-il pas à utiliser une vraie 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 perte de performances minime, c'est un énorme avantage de simplifier le code dans la plupart des circonstances, surtout quand il s'agit de stocker de petits morceaux de données organisés au lieu de gros binaires ruisseaux. Alors pourquoi si peu de produits utilisent réellement des bases de données? La seule application que je connaisse qui utilise réellement la base de données Sqlite est probablement Firefox, et peut-être Microsoft Exchange (mais la dernière n'est pas une application de bureau)?
De plus, un ensemble d'applications, comme Microsoft Office ou Microsoft Expression, ne bénéficierait-il pas d'une base de données SQL unifiée , facilitant le déploiement des applications, la mise à jour / mise à niveau des données, le partage de données entre ces applications, la réalisation de sauvegardes , etc.?
Réponses:
1) D'une manière générale, les frais généraux liés à l'exécution d'un SGBDR complet sont trop importants et cela ajouterait une charge inutile au système et à la complexité.
En avoir un installé vous facilite la vie en tant que développeur, mais aggrave la vie du propriétaire de la machine, car sa machine est susceptible de fonctionner plus lentement et avec plus de problèmes. Dans les confrontations développeur / utilisateur, l'utilisateur devrait presque toujours gagner.
2) De nombreux magasins de données ont des besoins spécifiques qui ne sont pas satisfaits par quelque chose comme SQL Server Express.
Par exemple, les journaux d'erreurs doivent être écrits sur la chose la plus simple possible pour maximiser les chances que l'écriture se produise et que les données soient disponibles. SQL Server ne sera jamais aussi simple.
Pour les applications plus complexes, l'argument tend à être plus axé sur l'optimisation pour des cas d'utilisateurs très spécifiques - les fichiers plats peuvent être rapides comme l'éclair.
la source
De nombreuses applications intègrent SQLite . Citant de leur site Web:
Vous utilisez simplement l'une des API disponibles, créez 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 FLOSS.
la source
Windows est fourni avec et utilise un moteur de base de données nommé Extensible Storage Engine (ESE) .
ESE est utilisé par Active Directory, Exchange Server, Windows Mail et Desktop Search parmi de nombreux autres services et applications Windows.
Pour le développement, des wrappers ESE open source existent:
Avec la livraison ESE avec chaque version moderne de Windows, vous n'avez aucun problème de déploiement de base de données. Sur le plan architectural, ESE remplit un rôle similaire aux bases de données intégrées telles que SQLite.
la source
Les bases de données relationnelles ne sont pas la structure de données la plus efficace pour chaque domaine. De nombreuses applications de bureau utilisent des bases de données intégrées, vous ne pouvez pas facilement dire qu'elles le font si vous ne voyez que quelques fichiers de données.
la source
En fait, cette idée est en développement chez Microsoft depuis un certain temps. Il s'appelle WinFS . Il s'agit d'une technologie intrigante et elle est disponible pour les abonnés MSDN. Dans quelques jours, je vais l'installer sur une machine virtuelle et jouer avec.
la source
Les bases de données offrent de la flexibilité et, comme toutes les fonctionnalités, il y a presque certainement un coût. Si un fichier plat fonctionne, vous pouvez supposer que personne n'aura besoin d'interroger les données de manière imprévue, comme dans un rapport ad hoc.
Les bases de données permettent également de gérer plusieurs connexions / entrées. Encore une fois, si ce n'est pas une exigence pour votre application de bureau, pourquoi ajouter une complexité supplémentaire? En dehors de l'interface utilisateur / de l'installation réelle d'Outlook lui-même, combien d'autres applications ou utilisateurs essaient d'écrire dans le fichier Outlook sur votre ordinateur?
Il serait plus facile si toutes les données se trouvaient dans une base de données relationnelle du point de vue "Je veux pouvoir interroger toutes les données comme je l'entends avec une seule langue comme SQL", mais c'est rarement une priorité avec de nombreuses applications.
La plupart des programmeurs l'examineront à partir de:
Je sais ce que l'application est censée faire, c'est tout ce qu'elle est censée faire
mon application est la seule à pouvoir accéder et / ou manipuler ces données
une structure de fichiers simple de ma propre conception fonctionnera
pour au moins une application, j'aimerais éviter de compter sur le code des autres et avoir un contrôle complet.
la source