Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

Database Instanzen parallel nutzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Database Instanzen parallel nutzen

    hallo zusammen,

    eine kurze und ggf. triviale Frage:
    Ist es möglich mit verschiedenen Database Instanzen Bestimmte Items in Datenbank a (sqlite) und andere Items in Datenbank b (mysql) schreiben zu lassen?
    Dies ist mir so noch nicht gelungen bzw. scheine ich etwas falsch zu machen sofern das möglich ist.

    Für eine kurzes ja(ggf. mit Itemparameter) oder nein wäre ich sehr dankbar.

    beste Grüße,
    Stefan

    #2
    Ja das geht. Du musst 2 Instanzen des database Plugins in det etc/plugin.yaml konfigurieren. Dabei musst Du ihnen unterschiedliche Instanz Namen geben (z.B. inst1 und inst2). In den Items musst Du die database Attribute mit dem Instanznamen versehen (siehe Doku zu Multi Instance Plugins)

    Soll ein Wert in beide Datenbanken, muss das database Attribut auch 2 mal angegeben werden:
    Code:
    myitem:
        …
        database@inst1: True
        database@inst2: True
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Vielen Dank,
      dann habe ich tatsächlich nur anhand der Doku etwas missverstanden. vielen Dank!

      Ich hoffe das funktioniert auch mit den systemvariablen
      Zuletzt geändert von Tiffi; 05.10.2022, 16:22.

      Kommentar


        #4
        Hallo,
        ich habe hierzu noch eine ergänzende Frage,
        Wie lange werden Daten von SmarthomeNG gecacht wenn die Datenbank nicht erreichbar ist (neustart/update etc) ?

        Vielen Dank

        Kommentar


          #5
          Das Caching der Werte im database Plugin hat nur den Sinn die Anzahl der Schreibzugriffe auf den Storage zu verringern, da die meisten in Raspberry PIs eingesetzten SD Karten eine begrenzte Lebensdauer haben. Das ist also eher ein Write-Buffer als ein Cache.

          Daher werden Werte gechached, bis sie ein "Alter" von 60 Sekunden erreichen. Dann werden alle diese Werte in die Datenbank geschrieben und aus dem Cache gelöscht. Diese Zeit kann über den Parameter cycle angepasst werden. Sollte die Verarbeitung der Daten in der Datebank bei einem Cache-Dump länger dauern, werden weitere Daten auch gecached und geschrieben, wenn der erste Cache-Dump abgeschlossen ist. In diesem Fall wird eine Warning geloggt: "Skipping dump, since an other database operation running! Data is buffered and dumped later."

          Es ist allerdings nicht vorgesehen/getestet, dass das Schreiben unterbunden wird, weil die Datenbank nicht verfügbar ist. Der Write-Buffer ist definitiv nicht dafür ausgelegt, eine längere Nichtverfügbarkeit der Datenbank (z.B. für ein Software Update) abzufangen. Ob das funktioniert, kann ich nicht sagen.
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #6
            Super,
            danke für die Antwort. Genau aufgrund der SD-Karten Lebensdauer wollte ich die DB Auslagern, das klappt auch ganz gut. Dann werde ich mal die DB abschießen und testen.


            Update: Ich habe jetzt tatsächlich des öfteren den DB Dienst abgeschossen, das längste war 25min. SHNG scheint sich in 90% der Fälle zu fangen und schreibt anschließend auch die Daten korrekt weg.
            Zuletzt geändert von Tiffi; 27.10.2022, 16:55.

            Kommentar

            Lädt...
            X