sql >> Database >  >> NoSQL >> MongoDB

Zijn er tools voor schemamigratie voor NoSQL-databases?

Aangezien een nosql-database enorme hoeveelheden gegevens kan bevatten, kunt u deze niet migreren in de reguliere rdbms-zin. Eigenlijk kun je het niet zo goed doen voor rdbms als je gegevens een bepaalde drempel overschrijden. Het is onpraktisch om je site een dag offline te halen om een ​​veld aan een bestaande tabel toe te voegen, en dus met rdbms doe je lelijke patches zoals het toevoegen van nieuwe tabellen alleen voor het veld en het doen van joins om bij de gegevens te komen.In nosql-wereld je kunt verschillende dingen doen.

  • Zoals anderen suggereerden, kun je je code zo schrijven dat deze verschillende 'versies' van het mogelijke schema aankan. dit is meestal eenvoudiger dan het lijkt. Veel soorten schemawijzigingen zijn triviaal om te coderen. als u bijvoorbeeld een nieuw veld aan het schema wilt toevoegen, voegt u het gewoon toe aan alle nieuwe records en het zal leeg zijn voor alle oude records (u krijgt geen "veld bestaat niet" fouten of iets dergelijks;). als je een 'standaard' waarde voor het veld in de oude records nodig hebt, is het te triviaal gedaan in code.
  • Een andere optie en eigenlijk de enige verstandige optie in de toekomst met niet-triviale schemawijzigingen zoals het hernoemen van velden en structurele veranderingen, is om schema_version op te slaan in ELKE record, en om code te hebben om gegevens van elke versie naar de volgende te migreren op LEES . d.w.z. als uw huidige schemaversie 10 is en u een record uit de database leest met versie 7, dan moet uw db-laag migreren_8, migreren_9 en migreren_10 aanroepen. Op deze manier worden de gegevens die worden ontsloten geleidelijk gemigreerd naar de nieuwe versie. en als het niet wordt geopend, wat maakt het dan uit welke versie het is;)


  1. NodeJS + Mongo native - controleer of de verzameling bestaat voordat de query wordt uitgevoerd

  2. Formulierschema's en functies opslaan in een database

  3. Hoe kan ik draaien op MongoDB

  4. Kan geen verbinding maken met de redis-server vanuit de docker-container