Ich arbeite in einem Projekt und meine Aufgabe ist es, ein Datenbanksystem aufzubauen, um ungefähr 60.000.000.000 Dateneinträge zu verwalten.
Der Hintergrund des Projekts ist, dass ich für eine große Anzahl von Nachrichten, die jede Sekunde von etwa 30.000 RFID-Lesegeräten gelesen werden, Echtzeitspeicher erstellen muss. Angenommen, jeder RFID-Leser generiert 6.000 Nachrichten pro Tag. Ich muss 180.000.000 Einträge in die Datenbank einfügen.
Eine mögliche Dateneingabe ist wie "time_stamp, Reader_ID, Tag_ID, other_msg_content".
Dies sind Abfragen (SELECT) basierend auf dem Zeitbereich, Reader_ID und Tag_ID. Die Abfragen werden nicht sehr kompliziert sein.
Jetzt entwerfe ich das Datenbanksystem und plane, MySQL zu verwenden. Meine Dump-Fragen sind:
Ist es ratsam, MySQL zu verwenden, oder sollte ich auf Oracle (was teuer ist) oder HBase zurückgreifen?
Wenn ich MySQL verwenden muss, eine Idee, wie ich den Cluster erstellen kann?
Wenn ich die Nachrichten in eine Tabelle einfüge, wird die Tabelle bald sehr lang sein. Ich möchte Sharding-Techniken verwenden, um einen langen Tisch in viele kurze Tische aufzuteilen.
3.a. Ich möchte die richtige Länge für eine MySQL InnoDB-Tabelle wissen, dh nachdem wie viele Dateneinträge eingefügt wurden, werde ich mit dem Sharding beginnen.
3.b. Gibt es da draußen eine gute Sharding-Proxy-Lösung? Ich weiß, dass Spock Proxy und einige andere Empfehlungen benötigen.
Muss ich MySQL Cluster verwenden? ODER Ich verwende nur MySQL-Master-Server und Sharding-Slaves und verwende Replication, um eine hohe Verfügbarkeit zu erreichen.
Angenommen, ich muss 20 TB-Daten in MySQL verarbeiten (für 1 Jahr), ich plane, 20 Knoten (PC-Server, billig) zu verwenden und 1 TB-Daten pro Knoten zu speichern. Ist das möglich? Kommentare sind willkommen.
Danke vielmals.
Antworten:
Gedanken:
Schließlich
quelle