Frage

Ich suche eine Shop-Lösung auf den Aufbau, die skalierbar sein muss. Derzeit ruft es 1-2000 Aufträge im Durchschnitt pro Tag über mehrere Land basierte Geschäfte (zum Beispiel Großbritannien, USA, de, dk, es usw.), aber dies Um diese Menge in zwei Jahren sein 10x könnte.

Ich bin auf der Suche entweder mit separatem Land-shop Datenbanken die Aufträge Tabellen zu speichern, oder auf der Suche alle in einen Auftrag Tabelle zu kombinieren.

Wenn alle Aufträge in einer Tabelle vorhanden mit einer globalen ID (auto num) und Land-ID (zum Beispiel in Großbritannien, de, dk etc.), würde jedes Land Aufträge auch sequentielle Ordnung haben muß. Also im Grunde, würden wir eine globale ID und ein Land, um ID, mit dem Land, um ID Sein sequenziellen für Länder nur haben müssen, z.B.

globale ID = 1000, Land = Vereinigtes Königreich, Land, um ID = 1000
globale ID = 1001, Land = DE, Land, um ID = 1000
globale ID = 1002, Land = DE, Land, um ID = 1001
globale ID = 1003, Land = DE, Land, um ID = 1002
globale ID = 1004, Land = Vereinigtes Königreich, Land, um ID = 1001

Die globale ID wäre DB erzeugt und nicht etwas, was ich zu kümmern braucht. Aber ich denke, dass ich eine Abfrage zu tun haben, würde das aktuelle Land, um basierend ID + 1 zu erhalten die nächste laufende Nummer zu finden. Zwei Dinge betreffen mich dazu: 1) Abfragezeiten, wenn die Tabelle möglicherweise Millionen von Zeilen von Daten hat und ich mache eine Lese vor einem Schreib, 2) das Potenzial für ID-Nummer Auseinandersetzungen aufgrund gleichzeitiger liest / schreibt

Mit einer MyISAM-Tabelle die gesamte Tabelle, während das letzte Land gesperrt werden, könnte + 1 abgerufen wird, ID-Nummer Kollisionen zu verhindern.

Ich frage mich, wenn jemand eine elegantere Lösung kennt?

Cheers, imanc

War es hilfreich?

Lösung

Es gibt einen Weg, dies zu tun.

INSERT INTO test123 (`Country`, `Country order code`)
SELECT 'UK', MAX(`Country order code`) + 1
FROM test123
WHERE `Country` = 'UK'

Dies stellt eine neue Ordnung für das Vereinigte Königreich in, wählt er den höchsten Auftragscode ein ein hinzufügt. Dies wurde getestet, und alles, was geändert werden muss, ist der Name der Tabellen und Felder

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top