De l'utilisation de SQLite
chaps31
Membre
Bonjour à tous,
Voilà que je vais me remettre à coder, quelle idée ;D Tant d'heure à m'arracher les cheveux à venir mais ::) . Ma question du jour vient d'une découverte sur le net : SQLite n'est pas monoposte ! J'ai toujours cru l'inverse. En fait plusieurs postes peuvent accéder à une base SQLite mais lors d'écriture la base est bloquée donc les autres sont en attente. En pratique on parle de millisecondes, donc mon projet étant pour entre 1 et 5 postes en réseau local je me dis que vraiment pas de soucis, oublié les relation client-serveur !
Revenant dans la programmation je me demandais aujourd'hui qu'utiliser pour pouvoir intégrer une base SQLite à un projet cocoa ? Il me semble que Core Data n'est au final pas la meilleure solution, donc avez-vous des pistes ?
Merci.
Voilà que je vais me remettre à coder, quelle idée ;D Tant d'heure à m'arracher les cheveux à venir mais ::) . Ma question du jour vient d'une découverte sur le net : SQLite n'est pas monoposte ! J'ai toujours cru l'inverse. En fait plusieurs postes peuvent accéder à une base SQLite mais lors d'écriture la base est bloquée donc les autres sont en attente. En pratique on parle de millisecondes, donc mon projet étant pour entre 1 et 5 postes en réseau local je me dis que vraiment pas de soucis, oublié les relation client-serveur !
Revenant dans la programmation je me demandais aujourd'hui qu'utiliser pour pouvoir intégrer une base SQLite à un projet cocoa ? Il me semble que Core Data n'est au final pas la meilleure solution, donc avez-vous des pistes ?
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si tu veux utiliser SQLite, je te conseille le Framework suivant:
https://github.com/ccgus/fmdb
Je l'utilise beaucoup et il est très simple.
Tu veux l'utiliser sur un serveur ou bien dans ton app ?
Mon lien est pour le mettre en local dans ton app.
Je l'ai toujours utilisé avec une seule app donc je n'ai pas de retour sur les multi-accès, ni comment ça marche.
"You are advised to avoid using SQLite on a network filesystem in the first place, since performance will be slow. But if you must use a network filesystem to store SQLite database files, consider using a secondary locking mechanism to prevent simultaneous writes to the same database even if the native filesystem locking mechanism malfunctions."
Maintenant, techniquement, même sur un même poste, c'est très chiant, il faut gérer plein de cas d'erreurs supplémentaires (timeout sur les lecture/écritures) qui n'arrivent jamais quand la base est utilisée par un process exclusif. Je me suis arraché les cheveux dessus (avec derrière moi un boss qui voulait que ce soit fait "pour hier").
C'est fou ça pour gérer en local sur 5 postes une BDD pas le choix... serveur/client...
C'est d'ailleurs pour combler cette lacune que le développeur de fmdb a une branche dédiée sur son github où il utilise un pool de connections, exactement ce que j'avais fait à l'époque (mais c'était en C++ sous Windows & Linux).