2017-10-19 16 views
0

L'objectif principal de la question est d'identifier quoi/comment les applications non basées sur le Web, aka un fichier exécutable, stockent des informations.Comment les données sont-elles stockées dans une application non basée sur le Web?

Certes, les applications Web utilisent des bases de données. Est-ce qu'une application non basée sur le Web stocke des informations dans un compilateur d'un module de base de données? Par exemple, si nous avons postgres, compilerions-nous la source postgres et l'utiliserions-nous avec un pilote pour stocker des informations localement?

Sinon, comment les informations sont-elles stockées? Les bases de données sont-elles uniquement destinées aux applications Web? Pourquoi quelqu'un compilerait/construirait/fabriquerait la source d'une DB?

TLDR: Un exemple de situation;

Nous avons un jeu non basé sur le Web, où stockez-vous exactement les statistiques de personnage, les progrès, les rencontres, etc. Utilisez-vous une base de données pour cela? Si non comment?

Répondre

1

Il y a beaucoup d'options:

  • fichiers statiques (JSON, YAML, xml, .ini, formats de texte personnalisé, ...) lire en mémoire, modifié et écrit périodiquement et/ou à la sortie. Prenez soin d'écrire le nouveau fichier, puis renommez-le pour remplacer l'ancien.

  • Embarqués bases de données SQL comme SQLite, Firebird, JET Microsoft, HSQLDB, Derby, etc

  • Embarqués magasins clé/valeur comme Berkely DB

  • standlone bases de données SQL, livré avec le programme d'installation de l'application, comme PostgreSQL, MySQL, MS-SQL, etc. Ou les mêmes DB installés séparément par l'utilisateur, où l'application est ensuite configurée pour utiliser une base de données existante.

  • Base de données de configuration du système comme le registre Windows. Ne convient pas pour stocker des données qui changent beaucoup, sont mises à jour fréquemment ou pour stocker beaucoup de données. Ne fais pas ça s'il te plait.

  • Plate-forme et installations spécifiques au langage telles que la sérialisation d'objets Java ou Swift. Mieux vaut éviter, mais ils ont leur place.

  • Divers formats farfelus personnalisés et des systèmes

Il est sans aucun rapport si vous compilez les sources, etc. La plupart des bases de données embarquées sont disponibles en tant que bibliothèque partagée (DLL, dylib, etc.) avec les en-têtes. Vous pouvez les lier à votre programme au moment de la compilation, mais seulement de la même manière que vous liez les pilotes de base de données de certains autres DB (ou des cadres de pilotes comme ODBC) dans votre application.

Quelle que soit la méthode utilisée, la plupart du temps, les données sont stockées dans le profil de l'utilisateur de bureau ou dans le sandbox du magasin de données de l'application mobile. La principale exception est les serveurs DB

+0

puis-je savoir pourquoi quelqu'un compilerait une source de base de données? Lorsque vous dites que les bases de données autonomes utilisent une base de données existante, cela signifie-t-il qu'il y aura par exemple un serveur postgres hébergé pendant que l'application est en cours d'exécution pour que les interactions aient lieu? – Nothingness

+0

Vous le compileriez si vous vouliez que des paramètres/options non standard ne soient pas disponibles sans recompilation. Ou si vous utilisez une plateforme de niche où les paquets binaires ne sont pas facilement disponibles ou pas du tout utilisés. Ou vous êtes un control-monstre.Ou vous testez des versions de développement. –

+0

Correct autonome. Il peut fonctionner comme un service qui reste actif, que l'application soit en cours d'exécution ou non. Ou il pourrait être géré par l'application et a commencé et arrêté à la demande. Voir par exemple https://stackoverflow.com/q/24625490/398670,https://stackoverflow.com/q/25269274/398670 –