base de données vs fichiers plats

la société pour laquelle je travaille essaie de passer d'un produit qui utilise un format de fichier plat à un format de base de données. Nous traitons de gros fichiers de données (c'est-à-dire: 25 Go/fichier) et ils sont mis à jour très rapidement. Nous devons lancer des requêtes qui accèdent au hasard aux données, ainsi que d'une manière contiguë. J'essaie de les convaincre des avantages de l'utilisation d'une base de données, mais certains de mes collègues semblent réticents. Alors je me demandais si vous pouviez m'aider avec quelques raisons ou liens vers les messages de pourquoi nous devrions utiliser des bases de données, ou au moins clarifier pourquoi les fichiers plats sont meilleurs (s'ils le sont).

65
demandé sur noob 2010-03-01 18:28:57

10 réponses

  1. les bases de données peuvent gérer les interrogations tâches, pour ne pas avoir à marcher sur les fichiers manuellement. Les bases de données peuvent gérer des requêtes très compliquées.
  2. les bases de données peuvent gérer les tâches d'indexation, donc si des tâches comme obtenir un enregistrement avec id = x peut être très rapide
  3. Les bases de données
  4. peuvent gérer l'accès multiprocess/multithread.
  5. Les bases de données
  6. peuvent gérer l'accès à partir de réseau
  7. les bases de données peuvent surveiller les données intégrité
  8. les bases de données peuvent mettre à jour les données facilement (voir 1) )
  9. les bases de données sont fiables
  10. les bases de données peuvent traiter les transactions et accès simultané
  11. les bases de données + ORMs vous permettent de manipuler les données à très programmeur de manière conviviale.
80
répondu Andrey 2013-10-18 13:36:41

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

Cela dépend entièrement de la domaine d'application spécifiques aux besoins. Un nombre de fois fichier texte direct / binaire les fichiers d'accès peut être extrêmement rapide, efficace, et vous toutes les possibilités d'accès aux fichiers de le système de fichiers de votre système D'exploitation.

de plus, votre langage de programmation probablement déjà intégré dans module (ou est facile à faire) pour l'analyse spécifique.

si vous avez besoin de plusieurs annexes (INSERTS?) et séquentielle/quelques accès peu / pas de concurrence, les fichiers sont chemin à parcourir.

d'autre part, lorsque votre exigences en matière de concurrence, lecture/écriture non séquentielle, l'atomicité, atomique autorisations, votre les données sont relationnelles par nature, etc., vous serez mieux avec un base de données relationnelle ou OO.

Il y a beaucoup de choses qui peuvent être accompli avec SQLite3 , qui est extrêmement léger (moins de 300kb), acide conforme, écrit en C/C++, et très omniprésente (si elle n'est pas déjà inclus dans votre langage de programmation -par exemple Python -, il y en a sûrement un Disponible). Il peut être utile même sur les fichiers db aussi grand que 140 terabytes, ou 128 tebibytes ( lien à la taille de la base de données ), possible plus.

si votre exigences lorsque plus grandes, il ne serait même pas une discussion, optez pour un RDBMS complet.

comme vous dites dans un commentaire que" le système "est simplement un tas de scripts, alors vous devriez jeter un oeil à pgbash .

36
répondu Esteban Küber 2017-05-23 11:47:26

ne le construisez pas si vous pouvez l'acheter.

j'ai entendu cette citation récemment, et il semble vraiment approprié comme une ligne directrice. Posez-vous cette... Combien de temps a-t-on consacré au traitement des fichiers de votre application? Je soupçonne qu'on a passé beaucoup de temps à optimiser ce code pour la performance. Si vous aviez utilisé une base de données 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 vrai "business" aspect de votre application.

5
répondu G Mastros 2010-03-01 15:41:06

Bases de données tout le chemin.

cependant, si vous avez encore besoin de stocker des fichiers, ne pas avoir la capacité de prendre un nouveau RDBMS (comme Oracle, SQLServer, etc), que de regarder dans XML.

XML est un format de fichier de structure qui vous offre la possibilité de stocker des choses comme un fichier, mais vous donner le pouvoir de requête sur le fichier et les données à l'intérieur de celui-ci. Les fichiers XML sont plus faciles à lire que les fichiers plats et peuvent être facilement transformés appliquer un XSLT pour encore mieux lisibilité humaine. XML est également un excellent moyen de transporter des données si vous le devez.

je suggère fortement un DB, mais si vous ne pouvez pas suivre cette route, XML est un ok second.

5
répondu Scott Root 2010-03-01 15:42:15

ils sont plus rapides; à moins que vous chargiez l'ensemble du fichier plat dans la mémoire, une base de données permettra un accès plus rapide dans presque tous les cas.

ils sont plus sûrs; bases de données sont plus faciles à sauvegarder en toute sécurité; ils ont des mécanismes pour vérifier la corruption de fichiers, qui fichiers plats ne le font pas. Une fois que la corruption dans votre fichier plat migre vers vos sauvegardes, vous êtes fait, et vous pourriez même ne pas le savoir 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 à travailler, une fois qu'ils sont installés.

5
répondu Dean J 2010-03-01 15:49:25

Qu'en est-il d'une base de données non relationnelle (NoSQL) comme la Simplebd D'Amazon, L'armoire Tokio, etc.? J'ai entendu que Google, Facebook, LinkedIn utilisent ces derniers pour stocker leurs énormes ensembles de données.

pouvez-vous nous dire si vos données sont structurées, si votre schéma est corrigé, si vous avez besoin de reproductibilité facile, si les temps d'accès sont importants, etc.?

3
répondu Victor 2010-03-01 15:42:34

quels types de fichiers ne sont pas mentionnés. Si ce sont des fichiers multimédia, allez-y avec des fichiers plats. u probablement juste besoin D'un DB pour tags et une certaine façon d'associer les "BLOBs externes" aux enregistrements dans le DB. 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 base de données complète.

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

3
répondu stillstanding 2010-03-01 15:47:41

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

2
répondu Oded 2010-03-01 15:36:33

sauf si vous chargez les fichiers en mémoire chaque fois que vous démarrez, utilisez une base de données. Simple que cela.

qui suppose que vos collèges ont déjà le programme pour traiter les requêtes vers les fichiers. Si non, alors l'utilisation d'une base de données.

2
répondu Lay González 2013-04-08 06:31:48

différence entre la base de données et les fichiers plats sont donnés ci-dessous:

La base de données
  • offre plus de flexibilité tandis que le fichier plat offre moins de flexibilité.

  • Le système de base de données
  • assure la cohérence des données, tandis que le fichier plat ne permet pas la cohérence des données.

  • La base de données
  • est plus sécurisée sur les fichiers plats.
  • support de base de données DML et DDL alors que les fichiers plats ne peuvent pas soutenir ces.

  • moins de redondance de données dans les bases de données alors que plus de redondance de données dans les fichiers plats.

2
répondu rashedcs 2017-12-25 04:55:52