Heim Datenbank MySQL-Tutorial Lösung zum Generieren einer eindeutigen Datenbank-ID in verteilten Situationen

Lösung zum Generieren einer eindeutigen Datenbank-ID in verteilten Situationen

Nov 21, 2016 pm 02:25 PM
mysql

ID als eindeutige Kennung des Unternehmens wird häufig im Datendesign verwendet, zum Beispiel:

•Produkt – Produkt_ID

•Bestellung – Bestell_ID

•Message—— message_id

Diese Bezeichner sind oft der Primärschlüssel der Datenbank. MySQL erstellt einen Clustered-Index für den Primärschlüssel. Im Vergleich zum normalen Index, der auf den Clustered-Index verweist, reduziert er eine Indexabfrage und ist sehr schnell. Unternehmen wie Nachrichten und Bestellungen müssen im Allgemeinen Daten in umgekehrter chronologischer Reihenfolge abfragen. Eine Möglichkeit besteht darin, einen Index für die Zeitspalte zu erstellen. Es ist besser, sich auf die Einfügereihenfolge der ID selbst zu verlassen. Daher muss die verteilte ID zwei Kernbedingungen erfüllen:

• Global eindeutig

• Zeitlicher Trend in der Reihenfolge

Manche Leute sagen vielleicht, dass es nicht möglich ist, MySQLs auto_increment zu verwenden direkt. Reicht das? In der Anfangszeit eines Unternehmens würde ich mich auch für diese Lösung entscheiden. Sie ist einfach, effizient und schnell – Startups müssen immer noch schnell iterieren und Produkte so schnell wie möglich produzieren, und Produkte ändern sich häufig Zeit für die Entwicklung ist möglicherweise nicht sinnvoll. Ja, es wurde wertvolle Zeit verschwendet. Allerdings gibt es bei dieser Lösung einige Probleme:

• Beeinflusst das parallele Einfügen – Datensatz B hängt vom Primärschlüssel von Datensatz A ab. Sie müssen warten, bis Datensatz A erfolgreich eingefügt wurde, und A.id erhalten, bevor Sie können Datensatz B einfügen

•Die Datenwiederherstellung ist schwierig – nachdem die Daten versehentlich gelöscht wurden oder verloren gegangen sind, da im Protokoll keine ID vorhanden ist, kann die Datenkorrelation nicht direkt bestimmt werden

• Betrifft den Sub -Datenbank und Untertabelle – da die ID eingegeben werden muss, um bekannt zu sein, können Datenbanken und Tabellen nicht basierend auf dem Primärschlüssel des Unternehmens aufgeteilt werden

Daher müssen Sie sich Zeit nehmen, nachdem das Unternehmen stabil ist um vorzeitige technische Schulden abzubezahlen.

Gemeinsame Lösungen

Verwenden Sie das Auto_Inkrement der Datenbank, um eine eindeutige ID zu generieren

Vorteile

•Einfach, Nutzung vorhandener Funktionen, geringer Entwicklungsaufwand

•ID-Schrittgröße ist fest

Nachteile

•Einzelner Schreibpunkt, nicht hochverfügbar

•Auch wenn mehrere Hauptbibliotheken entsprechend unterschiedlichem Auto_Inkrement erweitert werden Ausgangspunkte verbessern zwar die Verfügbarkeit, können aber die strikte Reihenfolge der IDs nicht garantieren

• Sie müssen jedes Mal auf die Datenbank zugreifen, wodurch leicht die Leistungsobergrenze erreicht werden kann

IDs stapelweise abrufen und Weisen Sie sie einzeln zu

Diese Art von Die Lösung besteht darin, die ID-Daten in der Datenbank zu speichern. Der ID-Dienst ruft jedes Mal N IDs aus der Datenbank ab und aktualisiert den aktuellen maximalen ID-Wert auf die Originaldaten N. Der ID-Dienst beginnt bei jedem Empfang einer ID-Generierungsanforderung mit diesem N. Die IDs werden der Reihe nach zurückgegeben.

Vorteile

•Batch-Erfassung, nicht jedes Mal auf die Datenbank zugreifen müssen, geringer Datenbankdruck

Nachteile

•Der gesamte Service ist immer noch ein einziger Punkt

•Dienstausfall und Neustart führen zu ID-Unterbrechungen

•Horizontale Erweiterung nicht möglich

Verbesserung

Fügen Sie einen Backup-Dienst hinzu, wenn der Hauptdienst hängt Wenn es aktiviert ist, wird es zum Backup-Dienst weitergeleitet. Sie können vip keepalived verwenden oder einen Proxy hinzufügen.

uuid

Vorteile

•Lokale Generierung von IDs, kein Single Point of Problems, keine Leistungsengpässe

Nachteile

•Inkrement ist nicht garantiert Bestellt

•Die Länge ist zu lang und die Leistung als Primärschlüssel ist gering

Snowflake-ähnlicher Algorithmus

Snowflake ist Twitters Open-Source-Algorithmus zur verteilten ID-Generierung Die Kernidee ist: Eine lange Typ-ID verwendet 41 Bit als Anzahl der Millisekunden, 10 Bit als Maschinennummer und 12 Bit als Seriennummer innerhalb von Millisekunden. Dieser Algorithmus kann theoretisch bis zu 1000 * (2 ^ 12) oder 400 W-IDs pro Sekunde auf einem einzelnen Computer generieren, was den Geschäftsanforderungen vollständig gerecht wird.

Basierend auf den Ideen von Snowflake und der Kombination der Geschäftslogik und Parallelität jedes Unternehmens können Sie Ihren eigenen verteilten ID-Generierungsalgorithmus implementieren.

Vorteile

•Zeit ist auf hohem Niveau, Tendenz steigend

•Einfache Implementierung, nicht auf andere Dienste angewiesen, leicht erweiterbar

Nachteile

•Es gibt keine globale Uhr und eine einzelne Maschine ist absolut in Ordnung, aber aus Sicht des gesamten Clusters ist der Trend in Ordnung

Anmerkungen

•Da die ID häufig als Kennung für Unterdatenbanken und Tabellen verwendet wird, ist es erforderlich, dass diese IDs einen gewissen Grad an Zufälligkeit aufweisen, damit die Daten nach der Aufteilung nicht ungerade sind. Die Sequenznummer darf nicht bei 1 beginnen von jeder Millisekunde. Zweitens kann es von 0 bis 9 beginnen


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

So erstellen Sie eine SQL -Datenbank So erstellen Sie eine SQL -Datenbank Apr 09, 2025 pm 04:24 PM

Das Erstellen einer SQL -Datenbank umfasst 10 Schritte: Auswählen von DBMs; Installation von DBMs; Erstellen einer Datenbank; Erstellen einer Tabelle; Daten einfügen; Daten abrufen; Daten aktualisieren; Daten löschen; Benutzer verwalten; Sichern der Datenbank.

See all articles