Funktionale AnforderungDer beste Weg, Tabellen für große Datenmengen erstellen Oracle mit
Wir irgendwie für Geräte arbeiten. Jedes Gerät hat ungefähr seine eindeutige Kennung, eine IP-Adresse und einen Typ.
Ich habe eine Routine, die alle Geräte pingt, die eine IP-Adresse hat. Diese Routine ist nichts anderes als eine C# -Konsolenanwendung, die alle 3 Minuten versucht, die IP-Adresse jedes Geräts zu pingen. Das Ergebnis des Ping muss ich in der Datenbank speichern, sowie das Datum der Verifizierung (unabhängig vom Ergebnis des Ping).
Dann gingen wir in die technische Seite.
Technischer Teil:
mein ping und Bank Strukturierung Unter der Annahme Prozess ab dem Tag bereit ist, 2016.01.06, muss ich zwei Dinge tun:
- Tägliche Extraktion
- Extraction in Echtzeit (letzte 24 Stunden)
Beide sollen die gleiche Sache zurück:
- Geräte, die länger als 24 Stunden nicht verfügbar sind.
- Geräte, die länger als 7 Tage nicht verfügbar sind.
Verstanden, um nicht verfügbar zu sein, das Gerät zu pingen und nicht geantwortet. Es wird davon ausgegangen, dass das verfügbare Gerät gepingt UND erfolgreich beantwortet wird.
: Was habe ich heute und arbeitet sehr schlecht:
Eine Tabelle mit der folgenden Struktur:
create table history (id_device number, response number, date date);
Diese Tabelle hat eine große Menge an Daten (jetzt hat 60 Millionen, aber der Trend ist immer exponentiell
wachsen) ** Hier sind die Fragen: **
- Wie diese erreichen Ziele ohne Probleme der Langsamkeit in Abfragen?
- Wie erstellt man eine Tabellenstruktur, die bereit ist, Millionen/Milliarden von Datensätzen in meiner Unternehmenswelt zu empfangen?
Persönlich würde ich 2 Tabellen verwenden. Eine Tabelle mit Partitionierung für das Datum (oder den Monat) zum Speichern historischer Daten. Und eine kleinere Tabelle für die letzten Aufzeichnungen. Und dann verschieben Sie die Daten täglich von der kleineren Tabelle durch ein automatisiertes Skript in die große Tabelle. – LukStorms