====== Meta Data DB ====== {{/dokuwiki/lib/images/smileys/fixme.gif|FIXME}} das ist noch ein Schmierzettel für Gedanken ===== Beschreibung des aktuellen Prototypen ===== ==== Schnittstellenbeschreibung zur Systemseite ==== Aktuell ist eine Schnittstelle mittels jrpc implementiert (Socketverbindung, Beispiel für client auch im git). Alternativen können einfach an den db_connector der Wahl gehängt werden und erlauben einen schnellen Wechsel der systemseitigen Verbindungsmöglichkeit. Es stehen zur Auswahl: **echo** Gibt die Eingabe zurück. **upsert** * in: feed_id, prod_id, payload, (timestamp) Die feed_id gibt die Tabelle an. Dort wird überprüft, ob es bereits einen Eintrag mit der prod_id gibt. Wenn Ja wird die payload verglichen, bei gleicher payload wird nichts weiter unternommen. Bei Änderungen an der payload oder wenn die prod_id neu ist wird der neue Datensatz in die DB aufgenommen. * out: **tbd** erstmal die Rückgaben der db, muss aber noch vereinheitlicht werden für den Betrieb **get_changes_to_HEAD** * in: feed_id, (from_time , prod_ids <[]> {nur zu diesen prod_ids gibt es den aktuellen Stand}) Es wird aus dem angegebenen Feed die aktuellste Version von jeder prod_id zurück gegeben, wenn es Änderungen seit from_time gegeben hat. Wenn from_time nicht angegeben wird gibt es einen vollen Export, da dann von Beginn an gesucht wird. Suche kann mit prod_ids eingeschränkt werden. ==== Datenbankanbindung ==== Mittels db_connector wird eine Datenbank angebunden. Aktuell gibt es einen connector für die TinyDB. Für den Produktiveinsatz ist die nicht geeignet, aber um den neuen Streambasierten feed_import zu erproben ist es eine einfache und leichtgewichtige Wahl ohne unnötige Komplexität. Alternative Datenbanken lassen sich mittels eigenem db_connector einbinden. {{/dokuwiki/lib/images/smileys/icon_exclaim.gif|:!:}} Idee: “db”_connector auf Dateiebene bauen für das Plus an Geschwindigkeit, da sich vieles auf sequentielles Lesen zurückführen lässt. ===== Archiv ===== **Verwendete Komponenten**: * Import/Splitter * Exporter **Übersicht**: Die MetaDB speichert für jedes Produkt eine Historie an Daten. Über eine Konfiguration lässt sich per Feed einstellen, wie lange veraltete MetaDaten aufbewahrt werden sollen. API: * push(ProductInformation, date=None) → status * query(feed_id, product_id, version=None) → ProductInformation * history(feed_id, product_id) → list of versions that are available for the specified product Ideen: * siehe [[v4_deep_data_lake|v4_deep_data_lake]]