Ist die Abfrage langsam, wenn herkömmliche Datenbanktabellen verwendet werden? Wie TDengine die Anwendungsprobleme des „Sohu Fund“ löst

Dieses Projekt muss den Nettowert und das Einkommen inländischer Fonds (Währungsfonds) in Echtzeit anzeigen. Um sicherzustellen, dass es die Funktion der Liniendiagrammanzeige erfüllt, müssen auch Funktionen wie statistische Rankings und Paging-Anzeige hinzugefügt werden Bieten Sie Benutzern die umfassendsten Abfragedienste in Echtzeit. Die bisher vom Sohu Fund-Team verwendete MySQL-Datenbank hatte aufgrund der großen Datenmengen Kapazitätsengpässe. Vor diesem Hintergrund entschied man sich, eine neue Lösung auf Basis von TDengine auszuprobieren.  

Auswahlhintergrund

Bevor wir TDengine verwendeten, verwendeten wir die MySQL-Datenbank.

Da die Fondsdaten aus den gekauften Datenquellen alle gemischt sind, einschließlich 20.000 inländischer Fonds und zig Millionen Zeilen umfangreicher Daten über Jahrzehnte (von den 1990er Jahren bis heute), werden diese Daten, wenn sie über MySQL gespeichert werden, zunächst von uns überprüft Da wir die Daten jedes Fonds in Tabellen aufteilen müssen, was einen gewissen Arbeitsaufwand erfordert, haben wir uns entschieden, zunächst alle Daten in einer Tabelle zu speichern.

Eine so große Tabelle führt jedoch zu einer sehr geringen Abfrageleistung. Um dieses Problem zu lösen, generieren wir täglich Bilder von Fondsdaten durch Offline-Abfragen und geben sie an Benutzer zurück. Wir haben der Außenwelt noch keine maßgeschneiderten Abfragedienste bereitgestellt.

Gleichzeitig bezweifeln wir nach den oben genannten Erfahrungen auch den Engpass bei der Fähigkeit traditioneller relationaler Datenbanken, mit massiven Datenmengen umzugehen. Zu diesem Zeitpunkt erfuhren wir von TDengine. Sein Kern ist eine Zeitreihendatenbank . Sein spezielles Design „ein Gerät, eine Tabelle“ steht im Einklang mit der Untertabellenarbeit „ein Fonds, eine Tabelle“, die wir durchführen . . Deshalb haben wir uns entschieden, eine neue Lösung auf Basis von TDengine auszuprobieren.

Nutzen Sie Erfahrung

Nach gründlicher Recherche und Tests haben wir Folgendes herausgefunden:

Aufgrund der Existenz von „Super Table“ ist die Datenmodellierung sehr klar geworden und fast alle Abfragen können mit einfachem SQL unter Verwendung von „Super Table“ als Kern ausgeführt werden.

Darüber hinaus können wir aufgrund der speziellen Funktion der „automatischen Tabellenerstellung“ Tabellen ohne Überprüfung direkt erstellen, was uns die einfache Erstellung geteilter Tabellen und das Schreiben der Daten jedes Fonds ermöglicht.

Man kann sagen, dass die vorbereitenden Vorbereitungen für den Zugriff auf TDengine sehr reibungslos verliefen.

Ist die Abfrage langsam, wenn herkömmliche Datenbanktabellen verwendet werden?  Wie TDengine die Anwendungsprobleme von „Sohu Fund“ löst – TDengine Database Zeitreihendatenbank

Wir haben drei 4C-16-GB-Server verwendet, um einen TDengine-Cluster einzurichten.

Die Anweisung zur Datenbankerstellung lautet wie folgt:

Ist die Abfrage langsam, wenn herkömmliche Datenbanktabellen verwendet werden?  Wie TDengine die Anwendungsprobleme von „Sohu Fund“ löst – TDengine Database Zeitreihendatenbank

Es ist erwähnenswert, dass es sich bei den Fondsdaten um ein Stück pro Tag handelt und es sich um Daten mit niedriger Frequenz handelt. Für diese Art von Daten reicht die Standardkonfiguration nicht aus. Zu Beginn war unsere Abfrageleistung nicht schnell, im Wesentlichen auf der zweiten Ebene oder sogar höher.

Durch Dokumentation, Blogs und Unterstützung durch das offizielle Team haben wir die Parameter „duration“ und „stt_trigger“ erweitert, um sicherzustellen, dass eine übermäßige Dateifragmentierung die Lese- und Schreibleistung nicht beeinträchtigt und alle nachfolgenden Abfragen auf die Millisekundenebene optimiert werden.

Daher haben wir einige Erfahrungen zusammengefasst: Unterschiedliche Schreibhäufigkeiten gehören zu unterschiedlichen Geschäftsszenarien. Es ist am besten, nicht dieselbe Bibliothek zu verwenden, sondern sie in separaten Bibliotheken zu verwalten.

Der Supertisch ist wie folgt modelliert:

Ist die Abfrage langsam, wenn herkömmliche Datenbanktabellen verwendet werden?  Wie TDengine die Anwendungsprobleme von „Sohu Fund“ löst – TDengine Database Zeitreihendatenbank

Ist die Abfrage langsam, wenn herkömmliche Datenbanktabellen verwendet werden?  Wie TDengine die Anwendungsprobleme von „Sohu Fund“ löst – TDengine Database Zeitreihendatenbank

Derzeit im täglichen Einsatz können Geschäftsabfragen Daten in Millisekunden in Echtzeit mit 100 qps zurückgeben.

Ausgehend von den Designmerkmalen der Supertabelle ist es für uns viel bequemer, statistische Analysen in der Supertabellendimension durchzuführen, z. B.: vollständige Fondsabfrage nach Filtertyp und Datum –

select time, code, name, manager_id, manager_name, unit_net_value, pre_unit_net_value, accumulate_net_value, pre_day_rate, pre_week_rate, pre_month_rate, pre_three_month_rate, pre_half_year_rate, pre_year_rate, pre_cur_year_rate, pre_start_rate, last_time, last_unit_net_value, last_accumulate_net_value, asset_size from fund_net_value where time = #{date} and (type = '003009' or type = '003010')

Ist die Abfrage langsam, wenn herkömmliche Datenbanktabellen verwendet werden?  Wie TDengine die Anwendungsprobleme von „Sohu Fund“ löst – TDengine Database Zeitreihendatenbank

Als weiteres Beispiel kann die Abfrage der aktuellen Nettovermögens- und Einkommensrangliste des Fonds durch einfaches SQL erreicht werden.

select time, code, name, manager_id, manager_name, unit_net_value, pre_unit_net_value, accumulate_net_value, pre_day_rate, pre_week_rate, pre_month_rate, pre_three_month_rate, pre_half_year_rate, pre_year_rate, pre_cur_year_rate, pre_start_rate, last_time, last_unit_net_value, last_accumulate_net_value, asset_size from fund_net_value where time = #{date} and order by ${column} ${sort} limit #{offset}, #{size}

Ist die Abfrage langsam, wenn herkömmliche Datenbanktabellen verwendet werden?  Wie TDengine die Anwendungsprobleme von „Sohu Fund“ löst – TDengine Database Zeitreihendatenbank

Gleichzeitig haben wir ein visuelles Grafana-Überwachungssystem aufgebaut, das verschiedene Überwachungstools und Software verwendet, um Überwachungsdaten zu sammeln, zu speichern und zu analysieren und über die visuelle Schnittstelle Echtzeit-Überwachungsdiagramme und Warnungen bereitzustellen, um Projektleitern bei der Identifizierung von Änderungsproblemen zu helfen Echtzeit und eine weitere Verbesserung der Servicezuverlässigkeit und -stabilität.

schreibe am Ende

Alles in allem haben wir unter der Prämisse, einen stabilen und effizienten Betrieb zu gewährleisten, die ursprünglichen Funktionen nach und nach reibungslos durch TDengine ersetzt. Wenn man bedenkt, dass das inländische Fondsprojekt erst der Anfang ist, müssen wir noch mehr Forschung und Studien zu dieser inländischen Timing-Bibliothek im Zusammenhang mit anderen Projekten wie Aktien betreiben.

Unternehmensprofil

Sohu ist ein bekanntes umfassendes Internetunternehmen in China. Zu seinen Hauptgeschäftsfeldern gehören neue Medien, Kommunikation und mobile Mehrwertdienste, die mehrere Funktionen wie Unterhaltungszentrum, Sportzentrum, Mode- und Kulturzentrum integrieren.

Über den Autor

Wupeng, leitender Entwicklungsingenieur der Sohu Intelligent Platform.

Microsoft startet neue „Windows App“ .NET 8 offiziell GA, die neueste LTS-Version Xiaomi gab offiziell bekannt, dass Xiaomi Vela vollständig Open Source ist und der zugrunde liegende Kernel NuttX Alibaba Cloud 11.12 ist. Die Ursache des Fehlers wurde offengelegt: Access Key Service (Access Schlüssel) Ausnahme Vite 5 offiziell veröffentlichter GitHub-Bericht: TypeScript ersetzt Java und wird zur drittbeliebtesten Sprache. Bietet eine Belohnung von Hunderttausenden Dollar für das Umschreiben von Prettier in Rust. Den Open-Source-Autor fragen: „Ist das Projekt noch am Leben?“ Sehr unhöflich und respektloses Bytedance: Verwendung von KI zur automatischen Optimierung von Linux-Kernel-Parameteroperatoren. Zauberoperation: Trennen Sie das Netzwerk im Hintergrund, deaktivieren Sie das Breitbandkonto und zwingen Sie den Benutzer, das optische Modem zu wechseln
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/4248671/blog/10141605
Empfohlen
Rangfolge