2017-08-15 1 views
0

Wir haben eine Tabelle, die einige Aufzählungswerte und Anwendungsparameterwerte in unserer App-Datenbank enthält. Diese Datensätze verwenden Identitätsspalten als ihre Primärschlüssel. Wir haben auch DEV, TEST und PROD Datenbanken. Wir müssen die Primärschlüssel zwischen TEST- und PROD-Datenbanken jedes Mal synchronisieren, wenn wir ein Update veröffentlichen.Synchronisierungsidentitätsspalten zwischen Test und Prod

Was ich fragen möchte, ist, was ist die bevorzugte Methode der Synchronisierung der Identitätsspalten? Eine Möglichkeit, die wir uns ausgedacht haben, besteht darin, die Identitätseigenschaft aus der Primärschlüsselspalte zu entfernen und manuell IDs zu erstellen, die alle auf DEV und PROD identisch sind.

Was sind Ihre Gedanken?

+0

wie eine Frage klingt für mich für https: //softwareengineering.stackexchange .com. –

+0

@UweKeim Wenn Sie andere Sites empfehlen, ist es oft hilfreich, darauf hinzuweisen, dass [Cross-Posting] verpönt ist. (Https://meta.stackexchange.com/tags/cross-posting/info) – gnat

Antwort

0

Sie müssen einen Grund haben, eine Identity Eigenschaft zu einer PK hinzuzufügen. Scheinbar Identity automatisiert die Art, wie PK generiert wird und ermöglicht es Ihnen, Code wie MAX(id)+1 zu vergessen. Also, wenn es in Ihrem Fall keinen Sinn ergibt (soweit ich verstehe, dass Ihre Werte vordefiniert sind und die Codebasis konkrete Werte erwartet), sollte das Entfernen der Identitätsspalte eine gute Lösung sein.

Es ist auch eine gute Vorgehensweise, Consistency-Checks in Ihre Datascripts aufzunehmen und sie fehlschlagen zu lassen oder sie zu benachrichtigen, wenn Konflikte auftreten. Bei Nicht-Identität Ansatz wird es wie folgt aussehen:

IF EXISTS (SELECT 1 from enum_table where id = @idToInsert) 
    --notify there is a conflict 
    -- else insert @idToInsert 

In einem meiner Projekte finden wir heraus, dass die wöchentliche refresh zwischen Test und prod Datenbanken Suiten am besten für uns, so betrachten diese Variante untersuchen zu.

Vorteile:

  • haben Sie immer frische/konsistente Daten/schema prod Probleme zu reproduzieren
  • keine Notwendigkeit Identitätsspalte für Lookup-Tabellen zu entfernen (falls es sinnvoll ist - wie ENUM-Werte erscheinen können nicht nur über manuelle Skripte)

Nachteile:

  • nicht ausreichend sein kann, wh en viele Teams auf dem gleichen Test env arbeiten, aber ich fühle mich wie es hängt davon ab, wie gut der Prozess

Hoffnung organisiert ist, das hilft

Verwandte Themen