Base de données nosql et réplication

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je suis en train de développer une application javascript et voici l'heure de choisir un SGDB, jusqu'à présent j'ai développer sans car dans l'absolu je pouvais créer la logique de mon application sans avoir besoin de faire appel à la base de données, mais il est tout doucement temps de s'y mettre.

L'application que je fais est un programme de caisse enregistreuse (écran tactile), j'ai une partie front (angular) et une partie backend (nodejs).
Le front fourni l'interface à l'utilisateur final, le backend permet de gérer la base de données ainsi que le matériel.

Les clients peuvent avoir une ou plusieurs caisse enregistreuse. Le problème se pose à partir du moment où il y en a plusieurs. Une première approche consisterai à mettre la base de données sur une des machine qui serai appelée maître, cependant si cette machine tombe en panne les autres caisses ne fonctionneront plus.

J'ai fais une rapide recherche et je vois que le SGDB noSQL conseillé est mongoDB, j'ai remarqué qu'il proposait un système de réplication. Le problème étant que je n'ai absolument pas compris comment l'application devais s'y connecter lorsque l'on active la réplication… je veux dire dans l'application on va faire quelque chose du genre mongoose.connect('mongodb://192.168.1.15/test'); mais si la machine est en panne, jamais il n'y aura de réponse et comment l'application va t'elle savoir où doit-elle se connecter dans ce cas ?

Par ailleurs, je voudrai également pouvoir permettre au client de proposer une sauvegarde vers un site extérieur (mon serveur par exemple) afin que si pour une raison x ou y la/les machine(s) sur place tombe en panne sans possibilité de récupérer les données, qu'il y aie toujours moyen de les récupérer. Sauf que à nouveau j'ignore comment faire.

Bref, je souhaite savoir quel SGDB vous me conseiller dans mon cas, et si possible m'expliquer comment faire pour parvenir aux fonctionnalités que je souhaite.

Merci d'avance pour votre aide.
Cordialement, La source.

+0 -0
Staff

Si tu n'est pas familier avec l'administration d'une base de donnée NoSQL te lancer dans MongoDB dès le départ comme ça risque d'être un peu chaud. Je t'aurais plutot conseillé un Elasticsearch qui est un peu plus simple à Administrer. Cependant je vais tout de même répondre a quelques unes de tes interrogations.

j'ai remarqué qu'il proposait un système de réplication. Le problème étant que je n'ai absolument pas compris comment l'application devais s'y connecter lorsque l'on active la réplication…

La source

Pour éviter le phénomène de SPOF (un seul point d'entrée) tu te doutes bien qu'il va te falloir plus d'un serveur. Malheureusement avec MongoDB tu as besoin d'un nombre impairs de machine pour faire un cluster avec réplication. Donc il te faudra 3 adresse IP différentes.

Sur tes serveurs, tu dois avoir ton service mongod (celui qui gère tes données) et ton service mongos (celui qui fait office de router) de lancés.

Quand tu démarre ton router (aka mongos) tu dois lui passer en paramètre la liste des machines qu'il clusterise au travers d'une chaine de connexion qui ressemble à configdb=ipmachineA:port,ipmachineB:port,ipmachineC:port.

C'est donc cette même chaine que tu devras rentrer depuis ton application Javascript : mongoose.connect('mongodb://ipmachineA:port,ipmachineB:port,ipmachineC:port', { mongos: true }, cb);

Par ailleurs, je voudrai également pouvoir permettre au client de proposer une sauvegarde vers un site extérieur (mon serveur par exemple) afin que si pour une raison x ou y la/les machine(s) sur place tombe en panne sans possibilité de récupérer les données, qu'il y aie toujours moyen de les récupérer.

La source

Les sauvegarde MongoDB ne sont pas les plus simple à mettre en place non plus pour la simple et bonne raison que quand tu réplique tes données, tu ignores ou elles sont véritablement stockées à l'instant T. La solution la plus simple que j'ai a te proposer est de faire un export de ta base via mongoexport qui exporte tes collections en JSON et tu peux faire un rsync de tes données ailleurs. Le bémol c'est que tu dois connaitre à l'avance le nom de ta base/collection.

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte