firebase database vs fichiers plats

La société pour laquelle je travaille essaie de convertir un produit utilisant un format de fichier plat en un format de firebase database. Nous traitons de gros fichiers de données (ex: 25 Go / fichier) et ils sont mis à jour très rapidement. Nous devons exécuter des requêtes qui accèdent de manière aléatoire aux données, ainsi que de manière contiguë. J’essaie de les convaincre des avantages de l’utilisation d’une firebase database, mais certains de mes collègues semblent réticents à cela. Je me demandais donc si vous pouviez m’aider ici avec des raisons ou des liens vers des messages expliquant pourquoi nous devrions utiliser des bases de données, ou du moins clarifier pourquoi les fichiers plats sont meilleurs (s’ils le sont).

  1. Les bases de données peuvent gérer des tâches d’interrogation, de sorte que vous n’avez pas à parcourir les fichiers manuellement. Les bases de données peuvent gérer des requêtes très complexes.
  2. Les bases de données peuvent gérer les tâches d’indexation, donc si les tâches comme get record with id = x peuvent être TRÈS rapides
  3. Les bases de données peuvent gérer un access multiprocessus / multithread.
  4. Les bases de données peuvent gérer l’access depuis le réseau
  5. Les bases de données peuvent surveiller l’intégrité des données
  6. Les bases de données peuvent facilement mettre à jour les données (voir 1))
  7. Les bases de données sont fiables
  8. Les bases de données peuvent gérer les transactions et les access simultanés
  9. Les bases de données + ORM vous permettent de manipuler les données de manière très conviviale pour les programmeurs.

C’est une réponse que j’ai déjà donnée il y a quelques temps:

Cela dépend entièrement des besoins des applications spécifiques au domaine. L’access direct à des fichiers texte / binarys peut être extrêmement rapide, efficace et vous fournir toutes les fonctionnalités d’access aux fichiers du système de fichiers de votre système d’exploitation.

En outre, votre langage de programmation possède probablement déjà un module intégré (ou est facile à créer) pour une parsing spécifique.

Si ce dont vous avez besoin est de nombreux ajouts (INSERTS?) Et séquentiels / peu d’access peu ou pas de simultanéité, les fichiers sont la voie à suivre.

D’un autre côté, lorsque vos besoins en concurrence, lecture / écriture non séquentielle, atomicité, permissions atomiques, vos données sont relationnelles par nature, etc., vous serez mieux avec une firebase database relationnelle ou OO.

Il y a beaucoup à faire avec SQLite3 , qui est extrêmement léger (moins de 300kb), compatible ACID, écrit en C / C ++ et très répandu (s’il n’est pas déjà inclus dans votre langage de programmation – par exemple Python-, il y en a sûrement un disponible). Cela peut même être utile, même sur des fichiers de db allant jusqu’à 140 téraoctets, ou 128 tbb ( lien vers la taille de la firebase database ).

Si vos exigences étaient plus grandes, il n’y aurait même pas de discussion, optez pour un SGBDR complet.

Comme vous le dites dans un commentaire que “le système” est simplement un tas de scripts, alors vous devriez jeter un coup d’oeil à pgbash .

Ne le construisez pas si vous pouvez l’acheter.

J’ai entendu cette citation récemment et cela semble vraiment convenir comme guide. Demandez-vous ceci … Combien de temps a été consacré à la partie traitement de fichiers de votre application? Je soupçonne qu’une bonne partie du temps a été consacrée à l’optimisation de ce code pour les performances. Si vous utilisiez une firebase database relationnelle depuis le début, vous auriez passé beaucoup moins de temps à gérer cette partie de votre application. Vous auriez eu plus de temps pour le véritable aspect “business” de votre application.

Les bases de données tout le chemin

Toutefois, si vous avez encore besoin de stocker des fichiers, n’avez pas la capacité d’adopter un nouveau SGBDR (comme Oracle, SQLServer, etc.), plutôt que d’examiner le XML.

XML est un format de fichier de structure qui vous permet de stocker des éléments sous la forme d’un fichier, mais vous donne la possibilité d’interroger le fichier et les données qu’il contient. Les fichiers XML sont plus faciles à lire que les fichiers plats et peuvent être facilement transformés en appliquant un XSLT pour une lisibilité encore meilleure. XML est également un excellent moyen de transporter des données si vous le souhaitez.

Je suggère fortement une firebase database, mais si vous ne pouvez pas suivre cette voie, XML est une seconde acceptable.

Ils sont plus rapides À moins que vous ne chargiez la totalité du fichier plat en mémoire, une firebase database permettra un access plus rapide dans presque tous les cas.

Ils sont plus en sécurité les bases de données sont plus faciles à sauvegarder en toute sécurité; ils ont des mécanismes pour vérifier la corruption de fichiers, ce que ne font pas les fichiers plats. Une fois que la corruption de votre fichier plat migre vers vos sauvegardes, vous avez terminé et vous ne le savez peut-être même pas encore.

Ils ont plus de fonctionnalités; les bases de données peuvent permettre à de nombreux utilisateurs de lire / écrire en même temps.

Ils sont beaucoup moins complexes à utiliser une fois qu’ils sont configurés.

Qu’en est-il d’une firebase database non relationnelle (NoSQL) telle que SimpleDB, Tokio Cabinet, etc. d’Amazon? J’ai entendu dire que Google, Facebook et LinkedIn les utilisent pour stocker leurs énormes ensembles de données.

Pouvez-vous nous dire si vos données sont structurées, si votre schéma est fixe, si vous avez besoin d’une réplicabilité facile, si les temps d’access sont importants, etc.?

quels types de fichiers ne sont pas mentionnés. Si ce sont des fichiers multimédias, continuez avec des fichiers plats. Vous avez probablement besoin d’un DB pour les balises et d’un moyen d’associer les “BLOB externes” aux enregistrements de la firebase database. mais si la recherche en texte intégral est quelque chose dont vous avez besoin, il n’y a pas d’autre solution que de migrer vers une firebase database complète.

autre chose, votre système de fichiers pourrait fournir le plafond en ce qui concerne le nombre de fichiers physiques.

Les capacités de requête SQL ad hoc sont une raison suffisante pour moi. Avec un bon schéma et une bonne indexation sur les tables, cela est rapide et efficace et aura de bonnes performances.

À moins que vous ne chargiez les fichiers en mémoire chaque fois que vous démarrez, utilisez une firebase database. Aussi simple que cela.

Cela suppose que vos collèges disposent déjà du programme pour gérer les requêtes dans les fichiers. Sinon, utilisez une firebase database.

La différence entre la firebase database et les fichiers plats est donnée ci-dessous:

  • La firebase database offre plus de flexibilité, tandis que les fichiers plats offrent moins de flexibilité.

  • Le système de firebase database assure la cohérence des données, tandis que le fichier plat ne peut pas assurer la cohérence des données.

  • La firebase database est plus sécurisée sur les fichiers plats.
  • Les bases de données supportent DML et DDL alors que les fichiers plats ne peuvent pas les supporter.

  • Moins de redondance de données dans la firebase database alors que plus de redondance de données dans les fichiers plats.