Gladys Assistant 4.45: DuckDB, eine Revolution in Gladys! ⚡

Für meinen Teil eine schöne Volumenreduktion:


Bildschirmfoto 2024-08-28 um 18.29.10
Große Arbeit, danke
:+1: :pray:

Super alles das!! Tolle Rabatte für alle

Okay, jetzt bin ich dran mit meinen Migrationsstatistiken:

  • Fast 17 Millionen Zustände
  • 2 Stunden Migration
  • 33 Stunden SQLite-Zustandsbereinigung
  • Datenbank vor der Migration: 13,9 GB
  • Datenbank nach der Migration: 89 MB (-99,4%)
  • Gladys-Backup davor: 3,35 GB
  • Backup danach: 86 MB (und das dauert nur ein paar Sekunden!)
    Das ist beeindruckend :flexed_biceps:

@pierre-gilles Vielleicht ist das die Gelegenheit, einen kleinen Blogartikel/Promotion für/mit DuckDB vorzuschlagen, oder?

Ich nehme an, das ist geplant! :smiling_face_with_sunglasses:

Guten Abend, Migration ebenfalls durchgeführt, hier sind die Ergebnisse:
Vorher:


Nachher:


Fertig

Gute Arbeit, ich kann es kaum erwarten, meine Datenbank ist größer als 10 GB!
Bisher bin ich leider blockiert. Vielleicht liegt es am Raspberry Pi 3 oder an schadhaften Daten in der Datenbank.

Hier ist der Fehler, der den Server zum Absturz bringt, falls es jemandem etwas sagt:

2024-08-29T01:20:36+0200 <info> device.migrateFromSQLiteToDuckDb.js:39 (DeviceManager.migrateFromSQLiteToDuckDb) DuckDB: Daten werden von SQLite migriert
node: ../src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp:47: void duckdb::aggr_ht_entry_t::SetPointer(duckdb::data_t* const&): Assertion `(reinterpret_cast<uint64_t>(pointer) & SALT_MASK) == 0' failed.

Parallel dazu werde ich einen Test auf einem schnelleren Server mit einem älteren Backup meiner Datenbank durchführen.

Offensichtlich scheint ein Datenbankeintrag ein Problem zu verursachen :confused: Da müsste dir jemand mit mehr Expertise antworten, ich weiß da auch nicht so viel!

Bei mir ist die Reduktion immer noch genauso spektakulär:

Unglaublich! Danke, dass du das geteilt hast :folded_hands:

Das ist geplant! Im Moment habe ich einen rein „französischen“ Start nur für bestehende Benutzer gemacht, um zu sehen, ob bei allen alles läuft, und um Statistiken zum Teilen zu haben.

Danach gehe ich an den „internationalen“ Start und werde auf Twitter posten, wobei ich DuckDB dieses Mal markiere, damit sie es teilen. Dann werde ich mit ihnen besprechen, ob Gladys in ihrer Kommunikation als Anwendungsfall dienen kann.

Schließlich ist Phase 3, Home Assistant ein bisschen frontal auf diesem Punkt zu provozieren, denn wir haben jetzt einen echten Wettbewerbsvorteil bei Gladys im Kern.

Ich war auf dem HA-Forum, um zu sehen, und die Probleme mit der Datenbankgröße sind ein wiederkehrendes Problem. Die Benutzer haben die gleichen Probleme wie wir hier, was logisch ist, da sie derzeit standardmäßig SQLite verwenden. Einige Benutzer verwenden InfluxDB, aber das bleibt etwas, das zusätzlich konfiguriert werden muss. Der Fehler bleibt SQLite (MariaDB/PostgreSQL konfigurierbar, aber mit den gleichen Festplattenspeicherproblemen wie SQLite).

Was die Migration zu DuckDB auf der HA-Seite betrifft, sind sie da eindeutig nicht. Ich habe gesehen, dass @McFlyPartages ein Thema auf ihrem Forum erstellt hat, und es hat bisher nicht wirklich funktioniert. Das ist die einzige Erwähnung von DuckDB auf ihrem gesamten Forum…

Kurz gesagt, wir sind sehr weit voraus, und ich werde das definitiv ausnutzen :smiley:

Toll :star_struck:

Unglaublich!

Bist du auf einem Raspberry Pi 3 mit einem 64-Bit-Betriebssystem? Wenn du ein 32-Bit-Betriebssystem verwendest, wird es meiner Meinung nach nicht funktionieren. Es muss 64-Bit sein.

Das ist verrückt :star_struck:

Der englische Twitter-Post:

Eure RTs/Likes :smiley:


Auweia!! Die Builds dauern ewig… mit DuckDB…^^

Ja, wenn es nur für dich ist und du 99% der Buildzeit sparen willst, baue nur für die Plattformen, die du brauchst (amd64 dauert zum Beispiel nur ein paar Minuten).

Der Build, der am längsten dauert, ist der für arm/v7. Ich glaube nicht, dass du ein arm/v7-Gerät hast… ^^

Bist du auf einem Raspberry Pi 3 mit einem 64-Bit-Betriebssystem? Wenn du ein 32-Bit-Betriebssystem hast, wird es wahrscheinlich nicht funktionieren. Es muss ein 64-Bit-System sein.

Linux rpi3 6.6.31-v8+ #1766 SMP PREEMPT Fri May 24 12:14:10 BST 2024 aarch64 GNU/Linux

Ich habe die Migration auf Reddit Node.js geteilt! Jeder Upvote ist willkommen :slight_smile:

Okay, das sieht gut aus. Vielleicht ist es ein fehlerhafter Datensatz in deiner Datenbank. Könntest du deine SQLite-Datenbank ein wenig inspizieren? Schauen, ob es dort Daten gibt, die keine Doubles sind?

Vielleicht hast du einen „String“, der sich in deine Tabelle geschlichen hat, daher der Cast-Fehler.

Ah super, danke, ja tatsächlich ist es Gladys für den professionellen Teil mit meinen Änderungen, um den Zugriff auf viele Seiten zu entfernen, wenn man kein Admin ist!!

Super!! Erledigt!!

Hallo,
Ich bin auf dem Rückweg von meinen Ferien und stelle auf meinem Handy fest, dass die Migration läuft.
Ich habe nichts am System geändert und die letzten Backups sind von 11 % auf 17 % gestiegen. Das Update auf die letzte Version zeigt 4.45 an.

Herzlichen Glückwunsch zu dieser Version :clap:.
SQLite-Datenbank: 37 GB
DuckDB-Datenbank: 272 MB
Eine Einsparung von über 99% :star_struck:
Die SQLite-Bereinigung dauerte lange (mehr als 12 Stunden).
Nochmals Glückwunsch.

Herzlichen Glückwunsch zu dieser tollen Arbeit!

Toll :star_struck:

Das ist unglaublich! Kein Problem :raising_hands: