Avant de poser la question, permettez-moi d'abord de décrire mes réflexions sur SQLite.
Il se trouve que j'aime les outils petits, rapides et, surtout, qui n'ont que les fonctionnalités vraiment nécessaires. C'est pourquoi j'aime SQLite et j'aime un peu moins MS-SQL.
Par exemple: MS-SQL peut avoir beaucoup plus de fonctionnalités, d'évolutivité, etc., etc., mais il peut également être difficile à installer si vous n'avez pas de chance. Bien sûr, je ne dis pas qu'une installation difficile est une raison pour ne pas choisir une base de données particulière.
Ne me comprenez pas mal: MS-SQL est un produit de haute qualité. Je suis très expérimenté avec MS-SQL; Je comprends très bien le produit en tant que professionnel. Je le préfère juste moins dans certaines circonstances où ce n'est pas vraiment nécessaire (= pas beaucoup d'utilisateurs, <10-15).
Quelle quantité de fonctionnalités d'une base de données utilisez-vous vraiment? D'après mon expérience, c'est souvent juste le SQL normal (SELECT, INSERT et UPDATE).
J'aime SQLite. Est fascinant rapide. Il est extrêmement facile à "installer". Je pense que SQLite peut faire plus que ce qu'il prétend. Pourquoi ne l'utiliser que pour des applications mono-processus / mono-utilisateur? Après tout: peu d'applications accèdent constamment à une base de données.
Par exemple: considérons une application ERP avec, disons, 15 utilisateurs. Pourquoi SQLite ne peut-il pas être utilisé pour cela? Avouons-le: dans mon expérience professionnelle, la plupart du temps, les utilisateurs de ce type d'application accéderont à la base de données pendant environ 5 à 10% du temps total d'utilisation de l'application. Dans les 90 à 95% restants, ils regardent simplement les informations à l'écran, saisissent les données dans une grille / formulaire et lorsqu'ils enregistrent leur entrée, cela ne représente pas plus d'une seconde de temps dans la base de données. Fe: 1,5 minutes de temps d'entrée contre 1 seconde de temps d'économie.
Si le fichier de base de données SQLite est verrouillé pendant le "temps d'économie", les autres utilisateurs qui doivent accéder à la base de données attendent simplement, mais ils ne le remarquent pas car le temps d'attente sera très petit (inaperçu). Dans le code, il suffit de gérer le temps "occupé" possible de la base de données, pour éviter les exceptions, mais ce n'est pas difficile à faire.
Un gars, qui doit penser la même chose que moi, a même construit une solution client-serveur pour SQLite: SQLitening . Cela m'a rendu plus convaincu que je ne me trompais peut-être pas.
Bien sûr, il existe des applications gourmandes en bases de données où SQLite ne convient pas. Mais comme j'y pense maintenant, de nombreuses applications multi-utilisateurs, si elles ne dépassent pas 15 utilisateurs environ, devraient très bien fonctionner avec SQLite.
Beaucoup de nos clients ne dépensent pas beaucoup en matériel, donc je rencontre souvent un serveur unique avec tout (Exchange, SQL (s), clients, etc.) et à cause de cela, ils sont presque "à bout de souffle". Si je pouvais livrer un produit qui n'a pas de configuration système élevée, mon client serait content. SQLite n'ajoute aucun poids (du moins pas beaucoup), MS-SQL le fait. Je ne choisirais donc pas SQLite car il est gratuit, bon marché ou facile à installer. Je le choisirais pour des raisons pratiques / techniques.
FYI: Dans ma profession, nous vendons des produits (personnalisés et standard, principalement liés à l'ERP) à des clients où, en moyenne, pas plus de 5-6 personnes utiliseront le produit. Il existe quelques exceptions, mais pas plus de 10 à 15 utilisateurs.
La question est: ai-je raison de penser que je peux utiliser SQLite pour certaines applications multi-utilisateurs comme l'exemple que je décris? Y a-t-il des inconvénients techniques que je devrais connaître? Quelles sont vos expériences (négatives ou positives) qui m'aideront à faire le bon choix?
Mise à jour: veuillez ne pas voir cela comme un jugement négatif sur d'autres bases de données. Ce sont surtout des produits fins. Je partage juste mes pensées ici et je suis intéressé par vos opinions à ce sujet.