sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvor sikker er MongoDBs sikker tilstand på indsatser?

Dit bedste bud er at bruge Write Concerns - disse giver dig mulighed for at fortælle MongoDB, hvor vigtigt et stykke data er. Den hurtigste skrivebekymring er også den mindst sikre - dataene skylles ikke til disken før den næste planlagte flush. Den sikreste vil bekræfte, at dataene er blevet skrevet til disken på en række maskiner, før de returneres.

Den skrivebekymring, du leder efter, er FSYNC_SAFE (det hedder det i hvert fald fra Java-driver ) eller REPLICAS_SAFE, som bekræfter, at dine data er blevet replikeret.

Husk, at MongoDB ikke har transaktioner i traditionel forstand - din tilbagerulning skal rulles i hånden, da du ikke kan fortælle Mongo-databasen om at gøre dette for dig.

Den anden ting du skal gøre er enten at bruge den relativt nye --journal mulighed (som bruger en Write Ahead-log), eller brug replikasæt til at dele dine data på tværs af mange maskiner for at maksimere dataintegriteten i tilfælde af nedbrud/strømsvigt.

Sharding er ikke så meget en beskyttelse mod hardwarefejl som en metode til at dele belastningen, når man har at gøre med særligt store datasæt - sharding bør ikke forveksles med replikasæt, som er en måde at skrive data til mere end én disk på mere end én maskine .

Derfor, hvis dine data er værdifulde nok, bør du helt sikkert bruge replikasæt, måske endda placere slaver i andre datacentre/tilgængelighedszoner/racks/etc. for at give den modstandsdygtighed, du har brug for.

Der er/vil være (kan ikke umiddelbart huske, om dette er blevet implementeret endnu) en måde at specificere prioriteten af ​​individuelle noder i et replikasæt, sådan at hvis masteren går ned, er den nye master, der vælges, én i de samme data center, hvis en sådan maskine er tilgængelig (dvs. at forhindre en slave på den anden side af landet i at blive herre, medmindre det virkelig er den eneste anden mulighed).



  1. SCUMM:Den agentbaserede databaseovervågningsinfrastruktur i ClusterControl

  2. MongoDB db.runCommand() fra C#

  3. Mongoose:find dokumenter af blandet skematype med flere poster

  4. MongoDB får max dato inde i dobbelt indlejret array