sql >> Databasteknik >  >> NoSQL >> MongoDB

Finns det något flerkärnigt NoSQL-system?

Om MongoDB har en akilleshäl så är det det faktum att den bara stöder enkeltrådad skrivning och enkeltrådig kartreducering.

Som alltid finns det avvägningar här. Enkeltrådsskrivning är det enklaste sättet att undvika låsproblem och minimera omkostnader. På samma sätt är flertrådiga kartreduceringar ett utmärkt sätt att låsa din data. Så enkeltrådiga kartreduceringar på ett produktionssystem är förmodligen enklare och säkrare.

Men du är inte utan verktyg här. MongoDB kommer att tillhandahålla en skrivtråd till varje instans. Så om du skär MongoDB så får du en skrivtråd för varje skärva.

Om du vill ha flera index på 2 miljarder rader, vill du titta på sharding ändå. Lite snabb matematik här:MongoID är 12 byte. Index på MongoID kommer att vara 2B * 12 byte =22GB+. Om du nu vill lägga till ytterligare två index (även bara två 4-byte heltal) talar vi om 7,5 GB för varje.

Så på 2B rader talar du om att ha över 37 GB i index (minst ). På de flesta 8-kärniga servrar betyder det att du inte ens kommer att kunna behålla dina index i minnet, än mindre någon av data.

Så om du vill ha seriös prestation här, vill du börja titta på skärning. Bara baserat på de allmänna siffrorna. FWIW, MySQL skulle inte vara bättre på att hantera 2B-dokument. Med så mycket data kommer du verkligen att vilja att flera servrar hänger med i belastningen.




  1. Hur använder StackExchange.Redis flera slutpunkter och anslutningar?

  2. Hur utför man engångs-DB-synkronisering till en annan DB i MongoDB?

  3. Hur tillhandahåller du konfiguration till MongoDB med Meteor?

  4. Mongodb-fråga baserad på objekt vid specifik position i arrayen