MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Gibt es Tools für die Schemamigration für NoSQL-Datenbanken?

Da eine Nosql-Datenbank riesige Datenmengen enthalten kann, können Sie sie nicht im regulären RDBMS-Sinne migrieren. Eigentlich können Sie es für RDBMS nicht so gut machen, sobald Ihre Daten eine gewisse Größenschwelle überschreiten. Es ist unpraktisch, Ihre Site für einen Tag herunterzufahren, um ein Feld zu einer vorhandenen Tabelle hinzuzufügen, und so machen Sie mit rdbms am Ende hässliche Patches wie das Hinzufügen neuer Tabellen nur für das Feld und Joins, um an die Daten zu gelangen. In der nosql-Welt Sie können mehrere Dinge tun.

  • Wie andere vorgeschlagen haben, können Sie Ihren Code so schreiben, dass er mit verschiedenen 'Versionen' des möglichen Schemas umgehen kann. das ist meist einfacher als es aussieht. Viele Arten von Schemaänderungen sind einfach zu programmieren. Wenn Sie beispielsweise ein neues Feld zum Schema hinzufügen möchten, fügen Sie es einfach zu allen neuen Datensätzen hinzu und es wird bei allen alten Datensätzen leer sein (Sie erhalten keine „Feld existiert nicht“-Fehler oder ähnliches;). Wenn Sie einen 'Standard'-Wert für das Feld in den alten Datensätzen benötigen, ist dies im Code zu trivial.
  • Eine weitere Option und tatsächlich die einzig vernünftige Option für nicht-triviale Schemaänderungen wie Feldumbenennungen und strukturelle Änderungen besteht darin, schema_version in JEDEM Datensatz zu speichern und Code zu haben, um Daten von jeder Version zur nächsten auf zu migrieren LESEN . d.h. wenn Ihre aktuelle Schemaversion 10 ist und Sie einen Datensatz aus der Datenbank mit der Version 7 lesen, dann sollte Ihr DB-Layer „migrate_8“, „migrate_9“ und „migrate_10“ aufrufen. So werden die abgerufenen Daten sukzessive auf die neue Version migriert. und wenn nicht darauf zugegriffen wird, wen interessiert es, welche Version es ist;)