MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Quelle est la sécurité du mode sans échec de MongoDB sur les insertions ?

Votre meilleur pari est d'utiliser Write Concerns - ceux-ci vous permettent de dire à MongoDB l'importance d'une donnée. Le problème d'écriture le plus rapide est également le moins sûr - les données ne sont pas vidées sur le disque avant le prochain vidage programmé. Le plus sûr confirmera que les données ont été écrites sur le disque sur un certain nombre de machines avant de revenir.

Le problème d'écriture que vous recherchez est FSYNC_SAFE (du moins c'est ainsi qu'il est appelé du point de vue du pilote Java ) ou REPLICAS_SAFE qui confirme que vos données ont bien été répliquées.

Gardez à l'esprit que MongoDB n'a pas de transactions au sens traditionnel - votre restauration devra être effectuée à la main car vous ne pouvez pas dire à la base de données Mongo de le faire pour vous.

L'autre chose que vous devez faire est d'utiliser le relativement nouveau --journal option (qui utilise un journal d'écriture anticipée), ou utilisez des jeux de réplicas pour partager vos données sur plusieurs machines afin de maximiser l'intégrité des données en cas de panne/coupure de courant.

Le sharding n'est pas tant une protection contre les pannes matérielles qu'une méthode de partage de la charge lorsqu'il s'agit de jeux de données particulièrement volumineux - le sharding ne doit pas être confondu avec des jeux de répliques qui est un moyen d'écrire des données sur plus d'un disque sur plus d'une machine .

Par conséquent, si vos données sont suffisamment précieuses, vous devez absolument utiliser des jeux de réplicas, peut-être même implanter des esclaves dans d'autres centres de données/zones de disponibilité/racks/etc afin de fournir la résilience dont vous avez besoin.

Il y a / il y aura (je ne me souviens pas si cela a déjà été implémenté) un moyen de spécifier la priorité des nœuds individuels dans un jeu de réplicas de sorte que si le maître tombe en panne, le nouveau maître qui est élu est un dans les mêmes données centre si une telle machine est disponible (c'est-à-dire pour empêcher un esclave à l'autre bout du pays de devenir maître à moins que ce ne soit vraiment la seule autre option).