Recommandation nécessaire pour une bonne base de données pour L'application bureautique Delphi
je crée une application de bureau écrite en Delphi et Je cherche une base de données pour mon application.
je suis un peu débordé par le nombre d'options disponibles. J'apprécierais vraiment des recommandations et des idées d'autres développeurs basés sur leurs expériences.
facteurs Critiques
faible ou pas de coût d'achat.
Pas de frais de distribution.
facile à manipuler jusqu'à 35.000 enregistrements sans problème, idéalement jusqu'à 100k.
Supporte plusieurs tables (dans ce cas jusqu'à 10)
support Blob (objets binaires, images, etc.)
Peut être distribué dans le cadre de l'application d'installation. C'est-à-dire que L'utilisateur n'a pas besoin du site Web de quelqu'un d'autre pour télécharger l'installateur de base de données.
Peut être installé et configuré par l'installation avec un minimum d'utilisateur interaction. Ma cible userbase n'est pas techniquement inclinée.
performance raisonnablement rapide.
prise en charge des instructions SQL standard (ou quelque chose de raisonnablement proche)
prise en charge des index multiples
Moins critique
- Taille de l'installation de la base de données
- Taille de la base de données une fois installée sur le système de l'utilisateur.
Non critique, mais bien si disponible
- support Multi-utilisateur
- de Cryptage
- Évolutivité
18 réponses
Firebird est un excellent choix. Il répond à toutes vos exigences, Il y a d'excellents outils administratifs disponibles (IBExpert, même la version gratuite est le meilleur outil que j'ai utilisé pour une base de données), et vous pouvez écrire vos propres fonctions définies par L'utilisateur dans Delphi pour des exigences spéciales que votre application pourrait avoir. Le groupe de soutien de Yahoo groups semble sauter sur toutes les demandes de soutien que quiconque soumet. Dans l'ensemble, pour mon application de bureau, je ne pense pas que je pourrais faire mieux.
Une bonne option serait d'utiliser Sqlite. Il y a un wrapper pour Delphi 2009.
il va gérer cette taille de DB très, très bien, et est complètement libre d'utiliser et de distribuer, stable, robuste, et prend en charge à peu près tous vos besoins.
Drôle, personne n'a mentionné cela, mais SQL Server Express (gratuit) ferait tout ce que vous voulez. L'édition Express a une limite de taille de base de données de 4 Go. Vous pouvez utiliser Devart de SQL Server Accès Direct Composants (CCDD) de communiquer avec elle dans votre application Delphi.
aussi, il pourrait être intéressant de regarder le édition 2005 d'autant plus que ses exigences d'installation ne sont pas aussi lourdes (2008 nécessite .NET 3.0).
ElevateDB est un SQL intégré moteur de base de données qui peut être compilé directement dans votre application et offre des services locaux à un et à plusieurs utilisateurs accès (partage de fichiers) et accès client-serveur avec le ElevateDB adhère à un sous-ensemble de la Norme SQL 2003 (ANSI/ISO 9075).
voici quelques-unes des caractéristiques standard D'ElevateDB:
- petite empreinte
- Multi-thread
- ANSI / Unicode
- les Classements
- sauvegarde en Ligne
- transactions avec numéro de série
- Contraintes
- Déclenche
- Vues
- Emplois
+100 pour Firebird SQL Intégré, d'un SGBDR à un 5-6MO DLL. Prend en charge tous vos requerimets et beaucoup plus
j'ai eu de la chance avec ComponentAce est Base De Données Absolue. Il compile dans votre application de sorte que vous simplement avec votre programme et le fichier de base de données. Il est compatible SQL 92 avec les blobs, ne gonfle pas trop votre code, dispose d'une option multi-utilisateurs et est disponible à partir d'environ 100 euros. Le code Source et les options multi-utilisateurs coûtent environ 350 euros, pas cher mais pas de licence de distribution.
MySQL est toujours un choix évident. Vous pouvez intégrer dans votre application pour que vous n'ayez pas besoin d'un serveur (vous avez juste besoin d'inclure libmysqld.dll pour obtenir la pleine fonctionnalité de base de données).
c'est puissant, rapide, assez léger, et quand c'est nécessaire, vous pouvez simplement passer à un serveur MySQL "normal" sans avoir à changer votre code ou vos requêtes.
Aucune installation n'est nécessaire.
il y a une profusion d'Exemples gratuits, de documentation, outils et pilotes disponibles pour MySQL en général, mais aussi en combinaison avec Delphi.
...........
Voici la liste:
faible ou pas de coût d'achat. il a 2 licences: GPL (libre) et une commerciale
Pas de frais de distribution. autant Que je sache, vous pouvez le redistribuer librement
gérer facilement jusqu'à 35 000 enregistrements sans problèmes, idéalement jusqu'à à 100k. je l'utilise avec des tables qui ont jusqu'à 30.000.000 dossiers, et il fonctionne sans transpirer (si vous réfléchissez bien à vos requêtes de cours)
Supporte plusieurs tables (dans ce cas jusqu'à 10) case
support Blob (objets binaires, images, etc.) case
Peut être distribué dans le cadre de l'application d'installation. I. E. l'Utilisateur n'a pas à site Web de quelqu'un d'autre pour télécharger l'installateur de base de données. il suffit d'ajouter libmysqld.dll, et c'est tout
peut être installé et configuré par install set avec une interaction utilisateur minimale. Ma cible userbase n'est pas techniquement inclinée. aucune installation nécessaire. Il intègre dans votre application
performance raisonnablement rapide. C'est très rapide, je peux vous dire
pour le Support standard SQL déclarations (ou quelque chose d'assez proche) case
prise en charge des index multiples case
Taille de l'installation de la base de données LibMySqlD.dll est un couple de mégaoctets
Taille de la base de données une fois installée sur le système de l'utilisateur. dépend de votre base de données bien sûr. Il n'est pas compressé
support Multi-utilisateur Pas de support multi-utilisateurs dans la version embarquée à ma connaissance
de Cryptage les fichiers de données cryptés ne sont pas supportés nativement, mais des solutions tierces existent
Évolutivité si votre serveur intégré ne peut pas gérer des choses, passer à un serveur "normal" ou externe peut être fait sans changer de code ou de requêtes
...........
Limitations:
vous il n'y a pas de réplication ou d'événements, il n'y a qu'un seul thread InnoDB, il n'y a pas de mécanisme d'authentification ou d'autorisation, et seule votre application peut accéder à la base de données (logique pour une base de données intégrée).
PostgreSQL est un excellent serveur de base de données. Il a une empreinte très légère, et vous pouvez personnaliser l'installation très facilement. Il pèse à ou < 10 Mo à expédier, et peut être configuré de nombreuses façons différentes pour optimiser les performances ou l'utilisation du système.
Il y a une interface delphi: http://dbslim.berlios.de/
une chose à propos de PostgreSQL est qu'il s'adapte très bien (des très petits déploiements aux grands).) Je suis à l'aide de quelques des projets, et j'en ai été très satisfait.
DiSqlLite (un autre wrapper autour de SQLLIte) est un bon choix. Il ya beaucoup de gestion utilitaires pour vous aider à obtenir les choses ont commencé. Le déploiement est très simple. Je l'ai utilisé dans un projet multi-utilisateurs en écrivant un serveur Delphin-Tier qui a exécuté tout l'accès à la base de données.
regardez NexusDB. Nous l'avons trouvé solide et rapide et il a une bonne communauté autour de lui.
j'ai eu beaucoup de chance avec DBISAM. Il a été remplacé par ElevateDB, que j'utiliserais pour de nouveaux projets.
j'aime aussi que je peux faire un XCopy installer.
encore une fois, les résultats semblent accablants puisque chaque réponse concerne une base de données différente.
mon vote va à SQLite.
cependant... on dirait qu'une base de données vous irait bien aussi. Zero installer nécessaire, juste Windows, et ADO ou similaire, et vous êtes bon à aller.
Voici un lien sur les restrictions d'Accès.
http://www.databasedev.co.uk/access_specifications.html
John
pourquoi personne n'a encore mentionné une base de données MS Access? Les pilotes requis (ADO / Jet) sont préinstallés avec chaque version récente de Windows (XP, Vista)...), prend en charge multiuseur, cryptage, Blobs et SQL et est raisonnablement rapide. L'esprit de la taille maximale de la base.
edit: Je ne comprends pas vraiment pourquoi cette réponse a été rejetée. J'ai utilisé MS access dbs avec Delphi plusieurs fois et cela a bien fonctionné. Il n'est pas conçu pour les installations multi-utilisateurs lourdes, bien sûr et il ce n'est pas le plus rapide, mais ce n'était pas une condition dans la question.
mon autre option est Dbase IV, format V avec full-multi user support auto edit refresh stuff. J'ai recommandé topaze de www.softsci.com
Je l'utilise pour les applications multi-utilisateurs et de bureau. La base de données ne craque jamais et ne traite pas moins de millions d'enregistrements en un clin d'œil.
Vitisan
en utilisant MySQL embedded (libmysqld.dll) est facile et pratique.
Mais vous n'avez PAS le droit de redistribuer libmysqld.dll avec votre application, à moins que vous:
- ouvrez votre code source app au monde entier (licence GPL) ou
- acheter la licence commerciale de MySQL (maintenant SUN) – il n'est pas clair combien il coûte
comme Steve, je suis aussi intéressé par un outil de base de données facile à utiliser. Je n'ai pas beaucoup programmé à Delphi depuis 5 ou 6 ans. J'ai commencé avec Turbo Pascal 3.0, je suis allé à TP5 a acheté TP6 appelé Borland le lendemain et rétrogradé à TP5.5. J'ai acheté Delphi 3 Professionnel, mis à niveau à Delphi 5 entreprise et c'est ce que j'ai actuellement. Je viens de télécharger une version d'essai de Delphi 2010.
J'ai été frustré par le manque de facile à utiliser et facile à déployer bases de données avec lesquelles Delphi interagit. J'aime SQL et je veux que mon code SQL pour être stockées à l'intérieur de procesures. Je veux pouvoir tester mon code SQL et valider mes données tant à l'intérieur qu'à l'extérieur de mon application.
Je viens de passer les 2,5 dernières heures à regarder ElevateDB et la lecture de l' Forums. Je suis très impressionné par la façon dont ils répondent aux questions des utilisateurs. J'espère que ce produit va fonctionner de la même manière Je pense que ça va. Je viens de m'inscrire pour un essai de téléchargement.
Si NexusDB trop cher, vous pouvez essayer FlashFiler, qui est une base de données libre en open source écrite dans Delphi. Je pense que C'est un ancêtre de NexusDB. Il a eu très peu d'entretien depuis qu'il est devenu open source, mais il est bien documenté et répond à toutes vos exigences.
FlashFiler est libre, supporte les blobs, un très grand nombre de disques, index et tables. Il peut être intégré dans un programme exécutable simple (sans DLLs requis), ou exécuté comme une base de données client-serveur multi-utilisateurs. Il est rapide et fournit à la fois SQL et l'accès de niveau record. Il y a un cryptage intégré léger ou vous pouvez ajouter vos propres routines.
par exemple, j'ai un programme avec il intégré comme une base de données mono-utilisateur et l'exécutable est 3MB et il ne nécessite pas de DLLs. Cela accède très facilement à 50 tables de taille totale 15 Mo. (J'utilise aussi FlashFiler avec des bases de Données client-Serveur beaucoup plus grandes.)