Question

page web officiel de sqlite3 il est écrit que je devrais penser à SQLite en remplacement de fopen ( ) fonction.

Que pensez-vous à ce sujet? Est-il toujours une bonne solution pour replece applications de stockage de données interne SQLite? Quels sont les points positifs et les points négatifs de cette solution?

Avez-vous une expérience en elle?

EDIT: Que diriez-vous de votre expérience? Est-il facile à utiliser? Est-ce douloureux ou plutôt joyeux? Avez-vous l'aimez?

Était-ce utile?

La solution

Cela dépend. Il y a des contre-indications:

  • pour les fichiers de configuration, l'utilisation de texte ou XML simple est beaucoup plus facile à déboguer ou de modifier à l'aide d'une base de données relationnelle, même un aussi léger que SQLite.

  • arborescences sont plus faciles à décrire l'utilisation (par exemple) XML qu'en utilisant des tables relationnelles

  • l'API SQLite est assez mal documenté - il n'y a pas assez d'exemples, et le hyperlinking est pauvre. OTOH, l'information est tout ce qu'il ya si vous tenez à creuser pour elle.

  • utilisation de formats binaires spécifiques à l'application directement sera plus rapide que le stockage même format que BLOB dans une base de données

  • corruption de base de données

    peut signifier los tous vos données plutôt que dans un fichier unique mauvais

OTOH, si vos données internes correspond bien avec le modèle relationnel et s'il y a un beaucoup de lui, je le recommande SQLite -. Je l'utilise moi-même pour un de mes projets

En ce qui concerne l'expérience - je l'utilise, il fonctionne bien et est facile à intégrer avec le code existant. Si la documentation était plus facile à naviguer, je lui donnerais 5 étoiles -. Comme il est, je lui donnerais quatre

Autres conseils

Comme toujours, il dépend, il n'y a pas « taille unique » solutions

Si vous avez besoin de stocker des données dans un fichier autonome et vous pouvez tirer parti des capacités de base de données relationnelles d'une base de données SQL que SQLite est grande.

Si vos données ne sont pas un bon moyen pour un modèle relationnel (données hiérarchiques, par exemple) ou si vous voulez que vos données soient lisible par l'homme (fichiers de configuration) ou si vous devez interagir avec un autre système que SQLite ne sera pas très utile et XML pourrait être mieux.

Si d'autre part vous avez besoin d'accéder aux données à partir de plusieurs programmes ou des ordinateurs en même temps que de nouveau SQLite est pas un choix optimal et vous avez besoin d'un serveur de base de données « réel » (MS SQL, Oracle, MySQL, PostgreSQL. ..).

Le atomicité de SQLite est un plus. Sachant que si vous écrivez à mi-chemin des données (peut-être planter au milieu), qu'il ne sera pas corrompre votre fichier de données. Je réalise normalement quelque chose de similaire avec les fichiers de configuration XML en sauvegardant le fichier sur une charge réussie, et de tout autre charge a échoué (indiquant la corruption) restaure automatiquement la dernière sauvegarde. Bien sûr, il est pas aussi granulaire, ni est-il atomique, mais il est suffisant pour mes désirs.

Je trouve SQLite un plaisir de travailler avec, mais je ne considère pas un one-size-fits-all remplacement pour fopen ().

À titre d'exemple, je viens d'écrire un logiciel qui est du téléchargement des images à partir d'un serveur Web et les mettre en cache localement. de les stocker sous forme de fichiers individuels, je peux les regarder dans l'Explorateur Windows, ce qui a certainement des avantages. Mais je dois garder un index qui mappe entre une URL et le fichier d'image afin d'utiliser le cache. de les stocker dans une base de données SQLite, ils sont tous assis dans un petit fichier propre, et je peux y accéder par URL (sélectionnez imgdata de cache où url = ' http:. //foo.bar.jpg ) avec peu d'effort

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