ArcadeDB Objekte in Webseiten

Bridgetown-basierende Internetauftritte können Inhalte der NOSql-Datenbank ArcadeDB darstellen.

Über das Bridgetown-ArcadeDB-Plugin können mit Bridgetown verwaltete Webinhalte auf Datenbankinhalte zugreifen.
Im statischen Modus liest das Framework die Daten bei der Erstellung der Webseiten aus der Datenbank. Die Internetseite selbst ist weiterhin statisch. Wenn sich der Datenbankinhalt ändert, muss die Webseite neu erstellt werden.
Im SSR-Modus wird die Datenbank bei jedem Aufruf der Webseite erneut abgefragt und die Webseite dynamisch erstellt.

Setup für eine Bridgetown-Seite

Gemfile

gem 'arcadedb', git: "https://github.com/topofocus/arcadedb"
# optional (Time-grid)
gem 'arcade-time-graph', git: "https://github.com/topofocus/arcade-time-graph"

gem 'bridgetown-arcade-db', git: "https://github.com/topofocus/bridgetown-arcade-db"
# optional (Graphiken)
gem 'vega'

Config/initializers.rb

  
  only :static, :console do
    init "bridgetown-arcade-db"
  end
  require 'vega'  #optional

In der config/initialisers.rb wird so das ArcadeDB-Plugin ausschließlich für den statischen Modus aktiviert. Für die Wiedergabe dynamischer Inhalte wird zusätzlich ssr und bridgetown-routes benötigt, also:

init :ssr
init :"bridgetown-routes"
init :"bridgetown-arcade-db"

Beim Start liest Bridgetown die Datei config/initializers ein und führt die dort verzeichneten Befehle aus. Wenn sowohl im statischen Modus als auch mit SSR eine Datenbankunterstützung aktiviert ist, werden zwei Datenbank-Instanzen initialisiert und der Code wird bei der Initialisierung doppelt ausgeführt.

Das Ruby-Symbol :"bridgetown-arcade-db" zieht den Aufruf von Bridgetown.initializer mit dem Argument :bridgetown-arcade-db nach sich. Das Plugin ist im Kern das Ergebnis der Ausführung dieser Methode.

Bridgetown.initializer :"bridgetown-arcade-db" do |config|
    BridgetownArcadeDb.load_models config
    ProjectRoot = Pathname.new config.root_dir  
    Arcade::Init.connect Bridgetown.environment
end
  • Zuerst werden über load_models Datenbank-Model-Dateien eingebunden. Diese werden üblicherwiese unterhalb des Verzeichnisses /model angelegt.
  • Dem ArcadeDB-Gem muss danach mitgeteilt werden, wo es diese Dateien finden kann. Dazu wird die Konstante ProjectRoot gesetzt.
  • Abschließend ruft der Initializer die connect-Methode auf. Welche Datenbank geöffnet werden soll, wird aus config/arcade.yml eingelesen.

Config/arcade.yml

:environment:
  :test:
    dbname: test
    user:  root
     pass:  ***
   :development:
     dbname: hieronymus     # in ArcadeDB konfigurierter User
     user: root             # nebst Credentials
     pass:  ***
   :production:
     dbname: hieronymus
     user: root
     pass: ***
 :admin:
   :host: localhost        # Standort des ArcadeDB-Servers
   :port: 2480
   :user: root
   :pass: ***
 :logger: stdout           # 'file' oder 'stdout'
 :namespace: Arcade        # Default Namespace
 :autoload: true           # load model if a link is detected in a record

Bridgetown-Seiten greifen per Frontmatter auf die Model-files zu. Diese können entweder für das Projekt erstellt werden oder aus einer bestehenden Anwendung nach (bridgetown-root)/model kopiert (oder verlinkt) werden.

Beispiel eines Frontmatters

~~~ruby
 c = Arcade::Strategie.find( symbol: 'SPX' ).contracts( shortcut: 'xsp'  )
 s = Arcade::Support::Spread.new c
{
  layout:  :home,
  title:   'Übersicht',
  spread:  s,
  vega:    s.plot_result,
  count_of_expiries: site.data[:hieronymus][:expiries]
}
~~~
Hier beginnt der Markdown-Text
<figure>
  <%= data.vega %>
  <figcaption> Beispiel der Einbindung einer Vega-Graphik </figcaption
</figure>
nothing
Abbildung: Ausgabe von `data.vega` im Schaufenster zur Estx-Handelsstrategie

Die Kombination von Ruby und ArcadeDB erlaubt eine sehr effiziente Nutzung heterogener Datenbestände. Über die Bridgetown-Integration lassen sich die Datenbankinhalte elegant in Webseiten integrieren.

Weitere informationen:
Signal: +49 176 472 79326
Kontakt

Vertiefende Blogbeiträge zu diesem Thema

ArcadeDB

Einführung in das Ruby-Interface zur NOSql-Datenbank ArcadeDB.
arcadedb Lesen…

ArcadeDB Objekte in Webseiten

Bridgetown-basierende Internetauftritte können Inhalte der NOSql-Datenbank ArcadeDB darstellen.
arcadedb Lesen…

Jupyter-Notebooks und ArcadeDB

Ergebnisse von Datenbank-Abfragen werden für eine Ausgabe in Jupyter Notebooks vorformatiert. Die Methode `html_attributes` steuert die Darstellung sowohl für die Ausgabe von Datenbank-Objekten wie auch die von Listen.
arcadedb Lesen…

Revisionssichere Datenhaltung mit ArcadeDB

Die NOSql-Datenbank bietet eine einfache, intuitive Lösung für revisionsichere Buchungen. Im Ruby-Interface werden hierzu der »create«- und der »update«-Befehl modifiziert. Veränderungen an Datensätzen erweitern automatisch die Versionshistorie.
arcadedb Lesen…