À quel point vaut-il la peine d’utiliser une firebase database?

J’ai une question concernant les bases de données et à quel point il vaut la peine d’y plonger. Je suis principalement un ingénieur embarqué, mais j’écris une application utilisant Qt pour interfacer avec notre contrôleur.

Nous sums à un moment étrange où nous avons suffisamment de données pour mettre en place une firebase database (environ 700 articles et plus) et pour gérer tout, mais je ne suis pas sûr que cela en vaille la peine maintenant. Je n’ai aucun problème à implémenter l’interface graphique avec des fichiers générés à partir d’Excel et analysés, mais cela devient fastidieux et difficile à suivre même avec les scripts VBA. J’ai joué avec la conversion de nos données en quelque chose de plus gérable pour les applications avec Microsoft Access et cela semble fonctionner correctement. Si cela fonctionne, je ne suis qu’à un pas (ou plusieurs) d’utiliser une firebase database SQL et d’utiliser la bibliothèque Qt pour y accéder et la modifier.

Je n’ai pas beaucoup d’expérience dans la gestion des données à ce niveau et je suis curieux de savoir quelle peut être la meilleure façon d’aborder cette question. Quels sont donc les avantages réels de l’utilisation d’une firebase database, le cas échéant? Je me rends compte que cela peut être très spécifique à l’application, mais certaines idées générales et suggestions sur la manière de chevaucher la ligne de programmation intégrée / applicative seraient utiles.

Il ne s’agit pas de mettre une firebase database dans un projet incorporé. Il ne s’agit pas non plus d’une application de type métier dans laquelle des bases de données plus importantes sont couramment utilisées. Je conçois une interface graphique pour un seul utilisateur sur un ordinateur de bureau afin d’interfacer un micro-contrôleur à des fins de surveillance et de configuration.


J’ai décidé de partir avec SQLite. Vous pouvez faire des choses très intéressantes avec des données que je ne considérais pas vraiment comme une option lors du premier démarrage de ce projet.

Une firebase database vaut la peine quand:

  1. Votre application évolue vers une forme d’exécution pilotée par les données.
  2. Votre temps consacré à la conception et au développement de structures de stockage de données externes.
  3. Partage de données entre applications ou organisations (y compris des personnes individuelles)
  4. Les données ne sont plus courtes et simples.
  5. Duplication de données

Évolution vers une exécution pilotée par les données
Lorsque les données changent mais que l’exécution ne l’est pas, ceci est le signe d’un programme piloté par des données ou de parties du programme pilotées par des données. Un ensemble d’options de configuration est un signe d’une fonction pilotée par les données, mais l’application entière peut ne pas être pilotée par les données. Dans tous les cas, une firebase database peut aider à gérer les données. (La bibliothèque ou l’application de la firebase database ne doit pas nécessairement être énorme comme Oracle, mais peut être allégée et moyenne comme SQLite).

Conception et développement de structures de données externes
Publier des questions sur Stack Overflow à propos de la sérialisation ou de la conversion d’arbres et de listes pour utiliser des fichiers est une bonne indication que votre programme est passé à l’utilisation d’une firebase database. En outre, si vous consacrez beaucoup de temps à concevoir des algorithmes pour stocker des données dans un fichier ou si la conception des données dans un fichier est un bon moment pour étudier l’utilisation d’une firebase database.

Partage de données
Que votre application partage des données avec une autre application, une autre organisation ou une autre personne, une firebase database peut vous aider. En utilisant une firebase database, la cohérence des données est plus facile à atteindre. L’un des problèmes majeurs de l’investigation des problèmes est que les équipes n’utilisent pas les mêmes données. Le client peut utiliser un dataset; l’équipe de validation une autre et le développement utilisant un dataset différent. Une firebase database facilite la gestion des données et permet aux entités d’utiliser les mêmes données.

Données complexes
Les programmes commencent par utiliser de petites tables de données codées en dur. Cela évolue en utilisant des données dynamics avec des cartes, des arbres et des listes. Parfois, les données vont de deux colonnes simples à huit ou plus. La théorie des bases de données et les bases de données peuvent simplifier l’organisation des données. Laissez la firebase database s’inquiéter de la gestion des données et libérez votre application et votre temps de développement. Après tout, la gestion des données n’est pas aussi importante que la qualité des données et leur accessibilité.

Duplication de données
Souvent, lorsque les données augmentent, les données dupliquées suscitent un intérêt croissant. Les bases de données et la théorie des bases de données peuvent minimiser la duplication des données. Les bases de données peuvent être configurées pour prévenir les doublons.

Passer à l’utilisation d’une firebase database doit tenir compte de nombreux facteurs. Certains incluent, mais ne sont pas limités à: la complexité des données, la duplication des données (y compris des parties des données), les délais du projet, les coûts de développement et les problèmes de licence. Si votre programme peut fonctionner plus efficacement avec une firebase database, faites-le. Une firebase database peut également économiser du temps de développement (et de l’argent). Il existe d’autres tâches que vous et votre application pouvez effectuer que la gestion des données. Laissez la gestion des données aux experts.

Ce que vous décrivez ne ressemble pas à une application métier classique, et beaucoup des réponses déjà postées ici supposent qu’il s’agit du type d’application dont vous parlez, alors laissez-moi vous proposer une perspective différente.

Que vous utilisiez ou non une firebase database pour 700 éléments dépendra beaucoup de la nature des données.

Je dirais qu’environ 90% du temps à cette échelle, vous bénéficierez d’une firebase database légère comme SQLite, à condition que:

  1. Les données peuvent potentiellement augmenter considérablement plus que ce que vous décrivez,
  2. Les données peuvent être partagées par plusieurs utilisateurs,
  3. Vous devrez peut-être exécuter des requêtes sur les données (ce que je ne pense pas que vous faites actuellement), et
  4. Les données peuvent facilement être décrites sous forme de tableau.

L’autre 10% du temps, vos données seront hautement structurées, hiérarchiques, basées sur des objects et ne s’intègrent pas parfaitement dans le modèle de table d’une firebase database ou d’un tableau Excel. Si tel est le cas, envisagez d’utiliser des fichiers XML.

Je sais que les développeurs aiment instinctivement lancer des bases de données sur des problèmes comme celui-ci, mais si vous utilisez actuellement des données Excel pour concevoir des interfaces utilisateur (ou afficher des parameters de configuration), plutôt que d’afficher un enregistrement client. XML est plus expressif que les tables Excel ou de firebase database et peut être facilement manipulé avec un simple éditeur de texte.

Les parsingurs XML et les classeurs de données pour C ++ sont faciles à trouver .

Je vous recommande d’introduire une firebase database dans votre application, votre application gagnera en flexibilité et sera plus facile à maintenir et à améliorer avec de nouvelles fonctionnalités à l’avenir.
Je commencerais avec un fichier léger basé sur db comme Sqlite .
Avec une firebase database bien conçue, vous aurez:

  1. Redondance réduite des données
  2. Plus grande intégrité des données
  3. Amélioration de la sécurité des données

Last but not least, l’utilisation d’une firebase database vous permettra d’économiser de l’ enfer Excel import / update / export !

Je vois pas mal d’exigences bien remplies par les bases de données:

1). Requêtes ad hoc. Retrouvez-moi tous les {X} qui répondent aux critères Y

2). Données avec structure pouvant bénéficier de la normalisation – en intégrant des valeurs communes dans des “tables” distinctes. Vous pouvez économiser de l’espace et réduire les risques d’incohérence de cette manière. Une fois que vous avez fait cela, ces requêtes ad hoc commencent à être vraiment utiles.

3). Grands volumes de données. Les bases de données professionnelles sont très efficaces pour tirer parti des ressources, des options de requêtes intelligentes et des stratégies de radiomessagerie. Essayer d’écrire vous-même ce genre de choses est un véritable défi.

Vous n’avez clairement pas besoin de ce dernier, mais les deux autres s’appliquent peut-être à vous.

Raisons d’utiliser une firebase database:

  • Écrit en même temps. Il est facile de réaliser la concurrence dans les bases de données
  • Interrogation facile Les requêtes SQL ont tendance à être beaucoup plus concises que le code procédural pour rechercher des données. UPDATE, INSERT INTOs peut aussi faire plein de choses avec très peu de code
  • Intégrité. Les contraintes sont très faciles à définir et sont appliquées sans écrire de code. Si vous avez une contrainte non nulle, vous pouvez être assuré que la valeur ne sera pas nulle, vous n’avez pas besoin d’écrire des chèques n’importe où. Si vous avez une contrainte de clé étrangère en place, vous n’aurez pas de “références en suspens”.
  • Performances sur de grands ensembles de données. L’indexation est très simple à append à une firebase database SQL

Raisons de ne pas utiliser une firebase database:

  • Cela a tendance à être une dépendance supplémentaire (bien qu’il existe des bases de données très légères, j’aime H2 pour Java, par exemple)
  • Données mal adaptées à un schéma relationnel. Des choses qui sont essentiellement des cartes de clé / valeur. XML (bien que les bases de données prennent souvent en charge XPath, etc.).
  • Parfois, les fichiers sont plus pratiques. Ils peuvent être différenciés, fusionnés, édités avec un éditeur de texte brut, etc. Parfois, les feuilles de calcul peuvent être plus pratiques (vous n’avez pas besoin de créer un éditeur, vous pouvez utiliser un tableur).
  • Vos données sont déjà ailleurs

Lorsque vous avez beaucoup de données, vous ne savez pas comment elles seront exploitées à l’avenir.

Par exemple, vous voudrez peut-être append une firebase database SQLite dans une application intégrée qui doit enregistrer des statistiques dont vous ne savez pas comment utiliser les statistiques. Plus tard, vous envoyez la firebase database complète pour l’injection dans un plus grand s’exécutant sur un serveur central et ces données peuvent facilement être exploitées, en utilisant des requêtes.

En fait, si l’objective de votre application est de “rassembler des données”, une firebase database est indispensable.

N’oubliez pas que la firebase database appropriée peut être très différente selon vos besoins (et n’oubliez pas qu’un fichier texte peut être utilisé comme firebase database si vos besoins sont suffisamment simples – par exemple, les fichiers de configuration ne sont qu’un fichier spécifique). type de firebase database). Ces parameters peuvent être:

  • nombre d’enregistrements
  • taille des éléments de données
  • la firebase database doit-elle être partagée avec d’autres appareils? En même temps?
  • la complexité des relations entre les différentes données
  • la firebase database est-elle en lecture seule (créée au moment de la construction et non modifiée, par exemple)?
  • la firebase database doit-elle être mise à jour par plusieurs entités simultanément?
  • avez-vous besoin de prendre en charge des requêtes complexes?

Pour une firebase database avec 700 entrées, un tableau sortingé en mémoire, chargé à partir d’un fichier texte, pourrait être approprié. Mais je pouvais également voir la nécessité d’une firebase database SQL embarquée ou peut-être que le contrôleur demande des données à partir de la firebase database via une connexion réseau en fonction des différentes exigences (et des limitations de ressources).

Il n’y a pas de point spécifique pour lequel une firebase database en vaut la peine. Au lieu de cela, je pose généralement les questions suivantes:

  • La quantité de données utilisée / créée par l’application augmente-t-elle?
  • La limite supérieure de la croissance de ces données est-elle inconnue (ou peu claire)?
  • L’application devra-t-elle agréger ou filtrer ces données?
  • Pourrait-il y avoir des utilisations futures des données qui pourraient ne pas être évidentes en ce moment?
  • Les performances de récupération et / ou de stockage des données sont-elles importantes?
  • Existe-t-il (ou pourrait-il y avoir) plusieurs utilisateurs de l’application qui partagent des données?

Si je réponds “Oui” à la plupart de ces questions, je choisis presque toujours une firebase database (par opposition à d’autres options telles que XML / ini / CSV / Excel / fichiers texte ou le système de fichiers).

De plus, si l’application a de nombreux utilisateurs pouvant accéder aux données simultanément, je me tournerai vers un serveur de firebase database complet (MySQL, SQl Server, Oracle, etc.).

Mais souvent, dans une situation mono-utilisateur (ou petite concurrence), une firebase database locale telle que SQLite ne peut être battue pour la portabilité et la facilité de déploiement.

Pour append un négatif: ne convient pas au traitement en temps réel, en raison d’une latence non déterministe. Cependant, il serait tout à fait suffisant pour rechercher et définir des parameters de fonctionnement, par exemple lors du démarrage. Je ne mettrais pas les access à la firebase database sur les chemins temporels critiques.

Vous n’avez pas besoin d’une firebase database si vous avez quelques milliers de lignes dans une ou deux tables à gérer dans une application utilisateur unique (pour le point incorporé).

Si c’est pour plusieurs utilisateurs (access simultané, locking) ou la nécessité de transactions, vous devez absolument envisager une firebase database. Manipuler des structures de données complexes dans des tables normalisées et en conserver l’intégrité, ou une quantité énorme de données, serait une autre indication que vous devez utiliser une firebase database.

Il semble que votre application s’exécute sur un ordinateur de bureau et communique simplement avec le périphérique intégré.

En tant que tel, l’utilisation d’une firebase database est beaucoup plus faisable. En utiliser un sur une plate-forme intégrée est un problème beaucoup plus complexe.

En ce qui concerne les postes de travail, j’utilise une firebase database lorsqu’il est nécessaire de stocker de nouvelles informations en continu et qu’il est nécessaire d’extraire ces informations de manière relationnelle. Ce pour quoi je n’utilise pas de bases de données stocke des informations statiques, des informations que je lis une fois en charge et c’est tout. L’exception est lorsque l’application a beaucoup d’utilisateurs et qu’il est nécessaire de stocker ces informations pour chaque utilisateur.

Il me semble que vous souhaitez collecter des informations à partir de votre périphérique intégré, les stocker d’une manière ou d’une autre, puis les utiliser ultérieurement pour les afficher via une interface graphique.

C’est un bon exemple d’utilisation d’une firebase database, surtout si vous pouvez concevoir le système de telle sorte qu’il existe un démon de collecte de données qui gère la communication continue avec le périphérique intégré. Cette application peut ensuite simplement écrire les données dans la firebase database. Lorsque l’interface graphique est lancée, elle peut extraire les données pour les afficher.

L’utilisation de la firebase database facilitera également le développement de votre interface graphique si vous avez besoin d’afficher différentes vues, telles que “affichez-moi toutes les entrées entre deux dates”. Avec une firebase database, il vous suffit de demander les valeurs correctes à afficher avec une requête SQL correcte et l’interface graphique affiche tout ce qui vous permet de découpler une grande partie du code “logique métier” de l’interface graphique.

Nous sums également confrontés à une situation similaire. Nous avons un dataset provenant de différentes configurations de test et qui sont en train d’être transférées dans des feuilles Excel, traitées avec Perl ou VBA.

Nous avons découvert que cette méthode avait beaucoup de problèmes:

je. La gestion des données à l’aide de feuilles Excel est assez lourde. Après un certain temps, vous disposez d’un grand nombre de feuilles Excel et il n’existe aucun moyen facile de récupérer les données requirejses.

ii. Les gens commencent à envoyer les feuilles Excel pour les commentaires et les commentaires par e-mail. Le courrier électronique devient le principal mode de gestion des commentaires liés aux données. Ces commentaires sont perdus ultérieurement et il est impossible de les récupérer.

iii. Plusieurs copies des fichiers sont créées et les modifications apscopes à une copie ne sont pas reflétées dans l’autre. Il n’y a pas de version.

C’est pour les mêmes raisons que nous avons décidé de passer à une solution basée sur une firebase database et que nous y travaillons actuellement. Laissez-moi résumer ce que nous essayons de faire:

je. La firebase database se trouve sur un serveur central accessible par PC dans toutes les configurations de test.

ii. Toutes les données vont dans un emplacement temporaire (disque dur local dans les fichiers) dès qu’elles sont générées. À partir des fichiers, il est inséré dans la firebase database par un processus exécuté en arrière-plan (par conséquent, même en cas de problème réseau, des données seront présentes dans le système de fichiers local).

iii. Nous avons une application Web qui permet aux utilisateurs de se connecter et d’accéder aux données dans le format qu’ils souhaitent. Le portail leur permettra d’append des commentaires, de générer différents types de rapports, de les partager avec d’autres utilisateurs après examen, etc. Il sera également capable d’exporter des données dans Excel, au cas où vous en auriez besoin.

Faites savoir si cela peut être mieux mis en œuvre.

“A quel point vaut-il la peine d’utiliser une firebase database?”

Si et quand avez-vous des données à gérer?