Suggestion de base de données de fichiers avec prise en charge de plusieurs utilisateurs simultanés

StackOverflow https://stackoverflow.com/questions/35017

Question

J'ai besoin d'une base de données qui pourrait être stockée sur un lecteur réseau et permettrait à plusieurs utilisateurs (jusqu'à 20) de l'utiliser sans aucun logiciel serveur.

J'envisage MS Access ou Berkeley DB.

Pouvez-vous partager votre expérience avec les bases de données de fichiers ?
Lequel as-tu utilisé, as-tu rencontré des problèmes avec ?

Était-ce utile?

La solution

je voudrais suggerer SQLite car la base de données entière est stockée dans un seul fichier et gère en toute sécurité plusieurs utilisateurs qui y accèdent en même temps.Il existe plusieurs bibliothèques différentes que vous pouvez utiliser pour votre application client et aucun logiciel serveur n'est nécessaire.

L'un de ses points forts est qu'il imite si fidèlement les serveurs SQL que si vous devez passer d'un fichier de base de données à un serveur SQL à part entière, la plupart de vos requêtes dans votre client n'auront pas besoin d'être modifiées.Vous aurez simplement besoin de migrer les données vers la nouvelle base de données du serveur (ce qui ne serait pas surpris s'il existe des programmes permettant de convertir les bases de données SQLite en bases de données MySQL, par exemple.)

Autres conseils

Je ne pense vraiment pas que les bases de données basées sur des fichiers puissent dépasser une demi-douzaine d'utilisateurs.La dernière fois que j'ai eu une base de données Access (c'était il y a bien longtemps), j'ai dû travailler très dur pour la faire fonctionner pour 8 à 9 personnes.

Il est vraiment beaucoup plus facile d'installer Ubuntu sur un vieil ordinateur indésirable avec PostgreSQL ou MySQL.C'est ce que j'ai dû faire même en gardant mon frontal Access.

Méfiez-vous des bases de données basées sur des fichiers, elles risquent toutes de rencontrer les mêmes problèmes.Votre situation nécessite vraiment une solution Client/Serveur.

De la FAQ SQLite

Une bonne règle de base est que vous devez éviter d'utiliser SQLite dans des situations où la même base de données sera accessible simultanément à partir de nombreux ordinateurs sur un système de fichiers réseau.

http://www.sqlite.org/whentouse.html

L'accès peut être une garce.J'ai été dans la position où je devais faire le tour et dire à 20 à 50 personnes de fermer l'accès afin que je puisse passer en "mode conception" pour modifier la conception des formulaires et peut-être une colonne.Pas amusant du tout.(Ancien accès, et il se peut qu'il s'agisse simplement d'une mauvaise configuration)

Ayendé a récemment essayé de prendre une décision similaire et a essayé un tas de bases de données dites intégrées.Espérons que son observations peut vous aider.

J'utilise Access depuis un certain temps et dans diverses situations, notamment en ligne.J'ai constaté qu'Access fonctionne bien s'il est correctement configuré conformément aux des lignes directrices.L’un des avantages d’Access est qu’il inclut tout dans un seul package :Formulaires, création de requêtes, rapports, gestion de bases de données et VBA.De plus, il fonctionne bien avec toutes les autres applications Office.Le runtime Access 2007 peut être obtenu gratuitement à partir de ici, ce qui rend la distribution moins coûteuse.L'accès est certes inadapté aux grandes opérations, mais il devrait tout à fait convenir à une vingtaine d'utilisateurs.MODIFIER: Microsoft évalue le nombre d'utilisateurs simultanés à 255.

Access peut-il être configuré pour prendre en charge 10 à 20 utilisateurs ?Oui.Cependant, ainsi que toutes les bases de données basées sur des fichiers, elles utilisent le système de fichiers pour le verrouillage et le contrôle de la concurrence.Et les fichiers de données Access sont plus susceptibles d’être corrompus que les serveurs de bases de données.Et, même si vous pouvez le configurer pour cela, vous DEVEZ, comme David Fenton le mentionne ci-dessus, suivre les meilleures pratiques si vous voulez obtenir un système fiable.

Personnellement, je trouve que, étant donné les obstacles que vous devez franchir pour garantir qu'une solution Access est raisonnablement sans problème, il est beaucoup moins difficile d'implémenter une instance de MSDE/SQL Server Express ou postgreSql.

Berkeley DB prend en charge un degré élevé de concurrence (bien plus de 20), mais il le fait principalement en utilisant la mémoire partagée et les mutex (éventuellement même la réplication) - des fonctionnalités qui ne fonctionnent pas bien lorsque BDB est déployé en tant que serveur. fichier stocké sur un lecteur réseau.

Afin de profiter des capacités de concurrence DBD, vous devrez créer une application autour de celles-ci.

La question initiale n'a aucun sens pour moi, dans la mesure où les options ne vont pas ensemble.BerkeleyDB est un moteur de base de données uniquement, tandis qu'Access est un outil de développement d'applications livré avec un moteur de base de données par défaut basé sur des fichiers (c'est-à-dire non-serveur) (Jet).En associant Access à Berkeley, il semble évident que ce qui est nécessaire est seulement un moteur de base de données, et aucune application du tout, mais comment les utilisateurs finaux utilisent Berkeley DB sans frontal, je ne sais pas (je ne l'ai utilisé qu'à partir de la ligne de commande).

Ceux qui ne peuvent pas exécuter un Jet MDB avec 20 utilisateurs simultanés ne sont tout simplement pas compétents pour donner des conseils sur l'utilisation de Jet comme magasin de données.C’est tout à fait réalisable à condition de suivre les meilleures pratiques.Je recommanderais en plus de la page Web des meilleures pratiques de Microsoft, Les meilleures pratiques de Tony Toews, et FAQ sur la corruption de Tony (c'est-à-dire les choses que vous voulez éviter de faire pour avoir une application stable).

Je doute fortement que l'auteur de la question initiale ne construise aucune application frontale, mais comme il n'indique pas quel type de frontal est impliqué, il est difficile de recommander un back-end qui l'accompagnera.Access a l’avantage de vous offrir les deux parties de l’équation et, lorsqu’il est utilisé correctement, il est parfaitement fiable pour plusieurs utilisateurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top