2017-02-07 2 views
1

Je souhaite utiliser le stockage d'image sur DB et non sur URL. Sur mon serveur, j'utilise PostgreSQL et je read here que "bytea" est le format suggéré pour stocker des fichiers. Sur le côté de l'application mobile, la base de données est SQLite. Il semble que le format de stockage de données proposé est "BLOB" as described here.Stockage de données sur DB: PostgreSQL "bytea" sur Serveur vers SQLite "BLOB" sur Mobile App

Je me demande, et je ne pouvais pas trouver clairement jusqu'ici, s'il y a une conversion à faire de "bytea" de PostgreSQL à "BLOB" de SQLite?

+2

Les deux stockent des données opaques. À quel genre de conversion songez-vous? –

Répondre

2

Les deux bytea et BLOB sont des types de données dans la base de données pour stocker des données binaires brutes. Ils ne sont pas des encodages, comme base64 ou similaire, donc il n'y a pas de conversion à faire en soi.

Cependant, en réalité, l'application se chargera de ces données dans au moins 5 formes:

  • une colonne PostgreSQL bytea
  • une variable dans votre application côté serveur (probablement une chaîne ou octet tableau)
  • un flux de données dans l'API qui relie votre serveur à votre client (peut-être encodées sous une forme ASCII de sécurité tels que base64)
  • une variable dans votre application mobile côté client
  • une SQLite BLOB colonne

Les données circuleront dans chacune de ces formes, à leur tour, de sorte que les conversions dont vous avez besoin à vous soucier de ne sont pas PostgreSQL à SQLite, mais PostgreSQL/du langage côté serveur, côté serveur langue vers/depuis l'encodage API, et ainsi de suite. Vous ne devriez pas avoir besoin d'apporter des modifications à votre application mobile si vous changez votre serveur pour utiliser MySQL, ou stockez les données dans des fichiers séparés, ou trouvez un moyen de le créer à la volée; les deux extrémités du processus sont complètement séparées. Il s'agira autant d'utiliser les bonnes fonctions que de comprendre explicitement l'encodage, tout comme stocker le fichier sur le disque pourrait impliquer l'environnement du programme manipulant les données, mais vous écririez simplement file.put(data) ou autre chose.