Einheit -Wert -Wert -Wert -Modell

Einheit -Wert -Wert -Wert -Modell (EAV) ist ein Datenmodell Um räumlich zu codieren, sind Entitäten, bei denen die Anzahl der Attribute (Eigenschaften, Parameter), die sie beschreiben können, potenziell umfangreich ist, aber die Zahl, die tatsächlich für eine bestimmte Entität gilt, ist relativ bescheiden. Solche Entitäten entsprechen dem mathematischen Begriff von a spärliche Matrix.

EAV ist auch als bekannt als Objekt -Attribut -Wert -Modell, Vertikales Datenbankmodell, und Offenes Schema.

Datenstruktur

Diese Datenrepräsentation ist analog zu räumlich-effizienten Methoden zum Speichern von a spärliche Matrix, wo nur nicht leere Werte gespeichert werden. In einem EAV -Datenmodell ist jedes Attribut -Wert -Paar eine Tatsache, die eine Entität beschreibt, und eine Zeile in einer EAV -Tabelle speichert eine einzige Tatsache. EAV -Tabellen werden oft als "lang und dünn" bezeichnet: "lang" bezieht sich auf die Anzahl der Reihen, die "dünn" auf die wenigen Spalten sind.

Daten werden als drei Spalten aufgezeichnet:

  • Das Einheit: Der Artikel wird beschrieben.
  • Das Attribut oder Parameter: normalerweise implementiert als Unbekannter Schlüssel in eine Tabelle mit Attributdefinitionen. Die Tabelle für Attributdefinitionen kann die folgenden Spalten enthalten: eine Attribut -ID, Attributname, Beschreibung, Datentypund Spalten, die die Eingabevalidierung unterstützen, z. B. maximale Stringlänge und regelmäßiger Ausdruck, Satz zulässiger Werte usw.
  • Das Wert des Attributs.

Beispiel

Überlegen Sie, wie man versuchen würde, einen allgemeinen klinischen Datensatz in einer relationalen Datenbank darzustellen. Es ist nicht machbar Null. Um die Dinge zu komplizieren, kann es in einer longitudinalen Krankenakte, die dem Patienten im Laufe der Zeit folgt, mehrere Werte desselben Parameters geben: Die Größe und das Gewicht eines Kindes ändern sich beispielsweise beim Wachstum des Kindes. Schließlich wächst das Universum der klinischen Erkenntnisse weiter: Zum Beispiel entstehen Krankheiten und es werden neue Labortests entwickelt; Dies würde eine konstante Zugabe von Spalten und eine konstante Überarbeitung der Benutzeroberfläche erfordern. (Die Situation, in der die Liste der Attribute häufig ändert, wird als "Attributvolatilität" im Datenbanksprache bezeichnet.)

Das Folgende zeigt einen Schnappschuss einer EAV -Tabelle für klinische Erkenntnisse eines Arztes für ein Fieber am Morgen des 5.5.98. Die innerhalb gezeigten Einträge Winkelklammern sind Verweise auf Einträge in anderen Tabellen, die hier eher als Text als als codierte Fremdschlüsselwerte angezeigt werden, um das Verständnis einfach zu verstehen. In diesem Beispiel die Werte sind alle wörtlichen Werte, aber sie könnten auch vordefinierte Wertlisten sein. Letztere sind besonders nützlich, wenn die möglichen Werte als begrenzt bekannt sind (d. H.,, Aufzählbar).

  • Das Einheit. Für klinische Befunde ist die Entität das Patientenereignis: a Unbekannter Schlüssel In eine Tabelle, die mindestens eine Patienten-ID und eine oder mehrere Zeitstempel (z. B. das Start und Ende des Prüfungsdatums/die Zeitpunkt) enthält, ist diese Aufzeichnung, wenn das beschriebene Ereignis stattfand.
  • Das Attribut oder Parameter: Ein Fremdschlüssel in eine Tabelle mit Attributdefinitionen (in diesem Beispiel Definitionen klinischer Befunde). Zumindest würde die Tabelle der Attributdefinition die folgenden Spalten enthalten: eine Attribut -ID, Attributname, Beschreibung, Datentyp, Messeinheiten und Spalten, die die Eingangsvalidierung unterstützen, z. B. maximale Stringlänge und regelmäßiger Ausdruck, maximale und minimale zulässige Werte, Satz zulässiger Werte usw.
  • Das Wert des Attributs. Dies würde vom Datentyp abhängen, und wir diskutieren, wie die Werte in Kürze gespeichert werden.

Das folgende Beispiel zeigt die Befunde der Symptome, die bei einem Patienten mit gesehen werden könnten Lungenentzündung.

(<Patient XYZ, 1/5/98 9:30 Uhr>, <Temperatur in Grad Fahrenheit>, "102") (<Patient XYZ, 05.01.98 9:30 Uhr>, <Präsenz von Husten> "," Richtig ") (<Patient XYZ, 05.01.98 9:30 Uhr>, <Art des Hustens>", mit Schleim, gelblich, Blutstreifen ") (<Patient XYZ, 05.01.98 9:30 Uhr >, <Herzfrequenz in Schlägen pro Minute>, "98") ...

Die oben beschriebenen EAV -Daten sind vergleichbar mit dem Inhalt eines Supermarktverkaufsempfangs (der sich in einer Verkaufstabelle in einer Datenbank widerspiegelt). Die Quittung listet nur Details der tatsächlich gekauften Artikel auf, anstatt jedes Produkt im Geschäft aufzulisten, den der Kunde möglicherweise gekauft hat, aber nicht. Wie die klinischen Befunde für einen bestimmten Patienten ist der Verkaufsbeleg spärlich.

  • Die "Entität" ist die Verkaufs-/Transaktions -ID - ein ausländischer Schlüssel in eine Verkaufstabelle. Dies wird verwendet, um jeden Werbebuchung intern zu markieren. Auf der Quittung werden die Informationen zum Verkauf oben (Shop -Standort, Verkaufsdatum/Uhrzeit) und unten (Gesamtwert des Verkaufs) angezeigt.
  • Das "Attribut" ist ein fremder Schlüssel in eine Produkttabelle, aus der man Beschreibung, Einheitspreis, Rabatte und Werbeaktionen usw. sucht (Produkte sind genauso volatil Während andere vom Markt aus dem Markt genommen werden, wenn die Akzeptanz der Verbraucher schlecht ist. Kein kompetenter Datenbankdesigner würde einzelne Produkte wie Doritos oder Diät-Cola als Spalten in einer Tabelle fest codieren.)
  • Die "Werte" sind die gekaufte Menge und die Gesamtleistungspreis.

Zeilenmodellierung,[Klarstellung erforderlich] Wo Fakten über etwas (in diesem Fall eine Verkaufstransaktion) als mehrfach aufgezeichnet werden Reihen eher als mehrere Säulen, ist eine Standard -Datenmodellierungstechnik. Die Unterschiede zwischen Reihenmodellierung und EAV (die als als betrachtet werden können Verallgemeinerung von Reihenmodellieren) sind:

  • Eine zeilenmodellierte Tabelle ist homogen In den Fakten, die es beschreibt: In einer Tabelle mit Werbebuchungen werden nur verkaufte Produkte beschrieben. Im Gegensatz dazu enthält eine EAV -Tabelle fast jede Art von Tatsache.
  • Der Datentyp der Wertspalte/s in einer zeilenmodellierten Tabelle ist durch die Art der von ihm aufgezeichneten Fakten festgelegt. Im Gegensatz dazu hängt in einer EAV -Tabelle der konzeptionelle Datentyp eines Wertes in einer bestimmten Zeile vom Attribut in dieser Zeile ab. Daraus folgt, dass in Produktionssystemen eine direkte Dateneingabe in eine EAV -Tabelle ein Rezept für eine Katastrophe wäre, da die Datenbank -Engine selbst keine robuste Eingabevalidierung durchführen könnte. Wir werden später sehen, wie es möglich ist zu bauen generische Frameworks die die meisten Aufgaben der Eingabevalidierung ausführen, ohne endlose Codierung auf einer Attribute-für-Attribut-Basis.

In einem klinischen Daten -Repository findet die Zeilenmodellierung auch zahlreiche Verwendungen. Das Labor -Test -Unterschema wird typischerweise auf diese Weise modelliert, da Labortestergebnisse typischerweise numerisch sind oder numerisch codiert werden können.

Die Umstände, unter denen Sie über die Standardzeilenmodellierung nach EAV hinausgehen müssten, sind unten aufgeführt:

  • Der Datentyp der einzelnen Attribute variiert (wie bei klinischen Befunden).
  • Die Datenkategorien sind zahlreich, wachsen oder schwankend, aber die Anzahl der Instanzen (Datensätze/Zeilen) in jeder Kategorie ist sehr gering. Mit herkömmlicher Modellierung kann das Entität -Beziehung -Diagramm der Datenbank Hunderte von Tabellen enthalten: Die Tabellen, die Tausende/ Millionen Zeilen/ Instanzen enthalten, werden in gleichem Maße wie solche mit sehr wenigen Zeilen optisch betont. Letztere sind Kandidaten für die Umwandlung in eine EAV -Darstellung. Diese Situation entsteht in Ontologie-Modeling -Umgebungen, in denen Kategorien ("Klassen") häufig im laufenden Fliegen erstellt werden müssen, und einige Klassen werden häufig in nachfolgenden Prototypzyklen beseitigt.

Bestimmte ("Hybrid") Klassen haben einige Attribute, die nicht sparsam sind (in allen oder in den meisten Fällen vorhanden), während andere Attribute sehr unterschiedlich und spärlich sind. Letztere sind für die EAV -Modellierung geeignet. Beispielsweise hängen Beschreibungen der von einer Konglomerat -Gesellschaft hergestellten Produkte von der Produktkategorie ab, z. B. der für die Beschreibung einer Glühbirnenmarke erforderlichen Attribute Einheit und Kosten für die Kosten.

Beschreibung der Konzepte

Die Entität

In klinischen Daten ist die Entität typischerweise ein klinisches Ereignis, wie oben beschrieben. In allgemeineren Einstellungen ist die Entität ein Fremdschlüssel in eine "Objekt" -Tabelle, in der gemeinsame Informationen zu jedem "Objekt" (Ding) in der Datenbank aufgezeichnet werden-mindestens ein bevorzugter Name und eine kurze Beschreibung sowie die Kategorie/Klasse der Entität, zu der es gehört. Jedem Datensatz (Objekt) in dieser Tabelle wird eine maschinengenerierte Objekt-ID zugewiesen.

Der Ansatz "Objekttabellen" wurde von Tom Slezak und Kollegen bei Lawrence Livermore Laboratories für die Chromosom 19 -Datenbank Pionierarbeit und in den meisten großen Bioinformatik -Datenbanken Pionierarbeit für die Chromosom 19 -Datenbank geführt. Die Verwendung einer Objekttabelle schreibt nicht die gleichzeitige Verwendung eines EAV-Designs vor: Herkömmliche Tabellen können verwendet werden, um die kategoriespezifischen Details jedes Objekts zu speichern.

Der Hauptvorteil einer zentralen Objekttabelle besteht darin, dass man durch eine unterstützende Tabelle mit Objektsynonymen und Schlüsselwörtern einen Standard-Google-ähnlichen Suchmechanismus über das gesamte System bereitstellen kann Geben Sie zuerst die Kategorie an, zu der sie gehört. (Dies ist wichtig in Bioscience -Systemen, bei denen sich ein Schlüsselwort wie "Acetylcholin" entweder auf das Molekül selbst beziehen könnte, das ein Neurotransmitter ist, oder auf den biologischen Rezeptor, an den es bindet.)

Das Attribut

In der EAV -Tabelle selbst handelt es sich nur um eine Attribut -ID, eine Fremdschlüssel in eine Attributdefinitionstabelle, wie oben angegeben. Es gibt jedoch normalerweise mehrere Metadaten-Tabellen, die Attributinformationen enthalten, die in Kürze erörtert werden.

Der Wert

Das Zwingen aller Werte in Zeichenfolgen, wie im obigen EAV-Daten, führt zu einem einfachen, aber nicht skalierbaren Struktur: Struktur: Konstante Datentyp-Inter-Konversionen sind erforderlich, wenn man etwas mit den Werten tun möchte, und einen Index für den Wert Die Spalte einer EAV -Tabelle ist im Wesentlichen nutzlos. Außerdem ist es nicht zweckmäßig, große binäre Daten wie Bilder in zu speichern Basis64 Codierte Form in der gleichen Tabelle wie Small Ganzzahlen oder Saiten. Daher verwenden größere Systeme separate EAV -Tabellen für jeden Datentyp (einschließlich Binäre große Objekte, "Blobs"), mit der Metadaten für ein bestimmtes Attribut, das die EAV -Tabelle identifiziert, in der ihre Daten gespeichert werden. Dieser Ansatz ist tatsächlich sehr effizient, da die bescheidene Menge an Attributmetadaten für eine bestimmte Klasse oder Form, mit der ein Benutzer arbeitet, leicht im Speicher zwischengespeichert werden kann. Es erfordert jedoch das Verschieben von Daten von einer Tabelle in eine andere, wenn der Datentyp eines Attributs geändert wird.

Geschichte

EAV als Allzweckmittel von Wissensrepräsentation, Ursprung vom Konzept von "Verbandslisten"(Attribut -Wert -Paare). Heute häufig verwendet, wurden diese erstmals in der Sprache eingeführt LISPELN.[1] Attribut -Wert -Paare werden häufig für verschiedene Anwendungen verwendet, z. B. für Konfigurationsdateien (unter Verwendung einer einfachen Syntax wie Attribut = Wert). Ein Beispiel für die Verwendung von EAV der Nichtdatenabteilung ist in Uima (Unstrukturierte Informationsmanagementarchitektur), ein Standard, der jetzt von der verwaltet wird Apache Foundation und beschäftigt in Bereichen wie Verarbeitung natürlicher Sprache. Software, die den Text analysiert, markiert normalerweise ein Segment: Das Beispiel im UIMA -Tutorial ist ein Programm, das ausgeführt wird Anerkennung der benannten Entfaltung (NER) in einem Dokument, in dem das Textsegment "Präsident Bush" mit dem Tribut von Annotation -Attribut -Wert angezeigt wird (Person, full_name, "George W. Bush").[2] Solche Anmerkungen können in einer Datenbanktabelle gespeichert werden.

Während EAV keine direkte Verbindung zu AV-Pairs hat, scheinen Stead und Hammond die erste zu sein, die ihre Verwendung für die anhaltende Speicherung willkürlich komplexer Daten vorgestellt hat.[3] Die ersten medizinischen Aufzeichnungssysteme für EAV waren die elektronische regenstrief elektronische Krankenakten (die Bemühungen von Clement MacDonald).[4] William Stead und das TMR -System von Ed Hammond und das Help Clinical Data Repository (CDR), das von Homer Warner's Group im LDS Hospital, Salt Lake City, Utah, erstellt wurde.[5][6] (Das Regenstriefsystem verwendete tatsächlich ein Patienten mit Patienten-Attribut-Timestamp-Wert: Die Verwendung des Zeitstempels unterstützte das Abrufen von Werten für ein bestimmtes Patienten/Attribut in chronologischer Reihenfolge.) Alle in den 1970er Jahren entwickelten Systeme wurden vor kommerziellen Systemen freigegeben bezogen auf E.F. Codd's relationale Datenbank Das Modell war verfügbar, obwohl die Hilfe viel später auf eine relationale Architektur botet und von der 3M Corporation kommerzialisiert wurde. (Beachten Beitrag von Christopher J. Date, Codds Kollege bei IBM, um diese Ideen in eine zugängliche Sprache zu übersetzen, begleitet von einfachen Beispielen, die ihre Macht veranschaulichen, können nicht überschätzt werden.)

Eine Gruppe im Columbia-Presbyterian Medical Center war die erste, die eine relationale Verwendung verwendete Datenbankmotor als Grundlage eines EAV -Systems.[7]

Die Open-Source Trialdb klinische Studie Datenverwaltungssystem von Nadkarni et al. war der erste, der mehrere EAV -Tabellen verwendete, eines für jedes DBMS Datentyp.[8]

Das EAV/CR -Framework überlagert sich vor allem von Luis Marenco und Prakash Nadkarni, die Prinzipien von Objektorientierung auf EAV;[9] Es basiert auf Tom Slezaks Objekttischansatz (früher im Abschnitt "Entität" beschrieben). SenselabEine öffentlich zugängliche Neurowissenschaftsdatenbank ist mit dem EAV/CR -Framework erstellt.

Verwendung in Datenbanken

Der Begriff "EAV -Datenbank" bezieht sich auf ein Datenbankdesign, bei dem ein erheblicher Teil der Daten als EAV modelliert wird. Selbst in einer Datenbank, die als "EAV-basiert" bezeichnet wird, sind einige Tabellen im System traditionelle relationale Tabellen.

Wie oben erwähnt, ist die EAV -Modellierung für Kategorien von Daten, wie z. B. klinische Befunde, sinnvoll, bei denen die Attribute zahlreich und spärlich sind. Wenn diese Bedingungen nicht gelten, ist die Standard -relationale Modellierung (d. H. Eine Spalte pro Attribut) vorzuziehen. Die Verwendung von EAV bedeutet nicht, den gesunden Menschenverstand oder Prinzipien des guten relationalen Designs aufzugeben. In klinischen Datensatzsystemen werden die Subschemas, die sich mit der Demografie und der Abrechnung der Patienten befassen, typischerweise konventionell modelliert. (Während die meisten Anbieter -Datenbankschemata proprietär sind, Vista, das System, das im gesamten im gesamten verwendeten Veteranenabteilung der Vereinigten Staaten (VA) medizinisches System, bekannt als das Veterans Health Administration (VHA),[10] ist Open-Source und sein Schema ist leicht überprüfbar, obwohl es a verwendet MUMPS Datenbank -Engine und nicht eine relationale Datenbank.)

Wie in Kürze erläutert ist eine EAV -Datenbank im Wesentlichen ohne Ahnung von Tisch, die unterstützend sind Metadaten. Die Metadatentische, die typischerweise die EAV -Tabellen mindestens drei oder mehr über die EAV -Tabellen überlegen sind, sind typischerweise Standard -Relational -Tabellen.[8][9] Ein Beispiel für eine Metadatentabelle ist die oben erwähnte Attributdefinitionstabelle.

EAV/Cr: Darstellung der Unterstruktur mit Klassen und Beziehungen

In einem einfachen EAV -Design sind die Werte eines Attributs einfach oder Primitive Datentypen Was die Datenbankmotor betrifft. In EAV -Systemen, die zur Darstellung von sehr unterschiedlichen Daten verwendet wurden ein willkürliches Maß an Komplexität. Ein Auto zum Beispiel hat einen Motor, ein Getriebe usw. und der Motor verfügt über Komponenten wie Zylinder. (Die zulässige Unterstruktur für eine bestimmte Klasse ist in den Attributmetadaten des Systems definiert, wie später erläutert. So kann das Attribut "Random-Access-Memory" also für die Klasse "Computer" gelten, aber nicht für die Klasse "Engine" .))

Um die Unterstruktur darzustellen, enthält einer eine spezielle EAV -Tabelle, in der die Wertspalte Verweise enthält Sonstiges Entitäten im System (d. H. Fremdschlüsselwerte in die Objekttabelle). Um alle Informationen über ein bestimmtes Objekt zu erhalten, erfordert eine rekursive Durchquerung der Metadaten, gefolgt von einer rekursiven Durchführung der Daten, die beim Abnehmen eines abgerufenen Attributs einfach (atomic) ist. Eine rekursive Durchführung ist notwendig, ob Details einer einzelnen Klasse in konventioneller oder EAV -Form dargestellt sind. Ein solcher Traversal wird beispielsweise in Standard -Objekt -Relationssystemen durchgeführt. In der Praxis ist die Anzahl der Rekursionsniveaus für die meisten Klassen tendenziell relativ bescheiden, sodass die Leistungsstrafen aufgrund von Rekursion, insbesondere bei der Indexierung von Objekt -IDs, bescheiden sind.

EAV/CR (EAV mit Klassen und Beziehungen) [11][12][13] Bezieht sich auf einen Rahmen, der eine komplexe Unterstruktur unterstützt. Sein Name ist ein bisschen eine Fehlbezeichnung: Obwohl es sich um einen Ausflug von Arbeiten an EAV -Systemen handelte, können in der Praxis viele oder sogar die meisten Klassen in einem solchen System in Standard -Relationaldariform dargestellt werden, basierend darauf, ob die Attribute spärlich oder dicht sind . EAV/CR zeichnet sich wirklich durch seine sehr detaillierten Metadaten aus, die reich genug ist, um die automatische Generation von Surfenschnittstellen zu einzelnen Klassen zu unterstützen, ohne dass der Codes für den Benutzer-Interface-Interface geschrieben werden muss. Die Grundlage solcher Browser -Schnittstellen besteht darin, dass es möglich ist, eine Stapel dynamischer SQL -Abfragen zu generieren, die unabhängig von der Klasse des Objekts sind, indem er zuerst seine Metadaten konsultiert und Metadateninformationen verwendet, um eine Abfolge von Abfragen gegen die Datentabellen zu generieren, und Einige dieser Fragen können willkürlich rekursiv sein. Dieser Ansatz eignet sich gut für Objekt-at-a-Time Präsentation der Details des Objekts, da es Bildunterschriften einzelner Attribute enthält, der Reihenfolge, in der sie präsentiert werden sollen, sowie die Art und Weise, wie sie gruppiert werden sollen.

Ein Ansatz für EAV/CR besteht darin, die Spalten zu ermöglichen JSON Strukturen, die somit die erforderliche Klassenstruktur liefern. Zum Beispiel, PostgreSQLBietet ab Version 9.4 die Unterstützung von JSON Binary Column (JSONB), sodass JSON -Attribute abgefragt, indiziert und verbunden werden können.

Metadaten

In den Worten von Prof. Dr. Daniel Masys (ehemals Vorsitzender der Abteilung für medizinische Informatik der Vanderbilt University) beruht die Herausforderungen der Arbeit mit EAV auf die Tatsache, dass in einer EAV -Datenbank das "physikalische Schema" (die Art und Weise gespeichert werden) Radikal unterscheidet sich vom "logischen Schema" - wie Benutzer und viele Softwareanwendungen wie Statistikpakete es betrachten, d. H. Als konventionelle Zeilen und Spalten für einzelne Klassen. (Da eine EAV-Tabelle konzeptionell Äpfel, Orangen, Grapefruit und Chop Suey mischt, müssen Sie in den meisten Fällen Teilmengen davon in ein Spaltenformular umwandeln.[14] Der Prozess, dies zu tun, genannt drehbar, ist wichtig genug, um separat diskutiert zu werden.)

Metadaten Hilft bei der Durchführung der Handschleife, mit der Benutzer eher in Bezug auf das logische Schema als das physische Interaktion mit dem System interagieren können: Die Software konsultiert ständig die Metadaten für verschiedene Vorgänge wie Datenpräsentation, interaktive Validierung, Bulk -Datenextraktion und ad hoc Anfrage. Die Metadaten können tatsächlich verwendet werden, um das Verhalten des Systems anzupassen.

EAV -Systeme tauschen die Einfachheit im physischen und im physischen und Logische Struktur der Daten für die Komplexität in ihren Metadaten, die unter anderem die Rolle spielen, die Datenbankbeschränkungen und Referenzintegrität tun in Standard -Datenbankdesigns. Ein solcher Kompromiss lohnt sich im Allgemeinen, da in dem typischen gemischten Schema von Produktionssystemen die Daten in herkömmlichen relationalen Tabellen auch von Funktionen wie der automatischen Schnittstellenerzeugung profitieren können. Die Struktur der Metadaten ist komplex genug, dass sie ein eigenes Unterschema in der Datenbank umfasst: Verschiedene Fremdschlüssel in den Datentabellen beziehen sich auf Tabellen in diesem Unterschema. Dieses Unterschema ist Standard-Relational, wobei Merkmale wie Einschränkungen und Referenzintegrität zum Griff verwendet werden.

Die Richtigkeit der Metadateninhalte in Bezug auf das beabsichtigte Systemverhalten ist kritisch und die Aufgabe, die Korrektheit zu gewährleisten In dem Team, das die Problemdomäne (z. B. klinische Medizin) kennen, sind aber nicht unbedingt Programmierer. (In der Vergangenheit war einer der Hauptgründe, warum das vor-relationale TMR-System an anderen Standorten als seiner Heimatinstitution nicht übernommen wurde Von dieser Datei, ohne das System zu brechen, war eine so heikle Aufgabe, dass sich die Autoren des Systems nur darauf vertrauten.)

Wo ein EAV -System durch implementiert wird RDF, das RDF -Schema Die Sprache kann bequem verwendet werden, um solche Metadaten auszudrücken. Diese Schema-Informationen können dann von der EAV-Datenbank-Engine verwendet werden, um die interne Tabellenstruktur für die beste Effizienz dynamisch neu zu organisieren.[15]

Einige letzte Einschränkungen in Bezug auf Metadaten:

  • Da sich die Geschäftslogik eher in der Metadaten als in der Datenbankschema (d. H. Einer Ebene entfernt, im Vergleich zu traditionell gestalteten Systemen) befindet, ist es für einen, der mit dem System nicht vertraut ist, weniger erkennbar. Metadata-Browsing- und Metadaten-Berichterstattungsinstrumente sind daher wichtig, um die Wartbarkeit eines EAV-Systems zu gewährleisten. In dem gemeinsamen Szenario, in dem Metadaten als relationales Unterschema implementiert werden, sind diese Tools nichts weiter als Anwendungen, die mit off-the-Shelf-Berichten oder Abfragetools erstellt wurden, die auf den Metadata-Tabellen arbeiten.
  • Für einen unzureichend sachkundigen Benutzer ist es einfach, in Inkonsistenzen und Fehlern in den Metadaten zu beschädigen (d. H. Inkonsistenzen und Fehlern einzuführen. Daher muss der Zugang zu Metadaten eingeschränkt sein, und eine Prüfungsspur von Zugriffsanlagen und Änderungen, die in Situationen umgehen, in denen mehrere Personen auf Metadatenzugang verfügen. Die Verwendung eines RDBMS für Metadaten vereinfacht den Prozess der Aufrechterhaltung der Konsistenz während der Erstellung und Bearbeitung von Metadaten, indem RDBMS -Funktionen wie die Unterstützung von Transaktionen genutzt werden. Wenn die Metadaten Teil derselben Datenbank wie die Daten selbst sind, stellt dies sicher, dass sie mindestens so häufig wie die Daten selbst gesichert wird, damit sie bis zu einem Zeitpunkt wiederhergestellt werden kann.
  • Die Qualität der Annotation und Dokumentation innerhalb der Metadaten (d. H. Der narrative/erklärende Text in den beschreibenden Spalten des Metadaten-Unterschems) muss viel höher sein, um das Verständnis verschiedener Mitglieder des Entwicklungsteams zu erleichtern. Die Gewährleistung der Qualität der Metadaten (und das Auftreten des Systems während des Systems) hat bei der langfristigen Verwaltung und Wartung eines Designs, das eine EAV-Komponente verwendet, eine sehr hohe Priorität. Schlechte dokumentierte oder veraltete Metadaten können die langfristige Lebensfähigkeit des Systems beeinträchtigen.[16][17]

Informationen, die in Metadaten erfasst wurden

Attributmetadaten

  • Validierungsmetadaten Fügen Sie den Datentyp, den Bereich der zulässigen Werte oder die Mitgliedschaft in einen Satz von Werten, regelmäßige Ausdrucksübereinstimmungen, Standardwert und die Frage, ob der Wert null sein darf. In EAV -Systemen, die Klassen mit Unterstruktur darstellen, zeichnet die Validierungsmetadaten auch auf, zu welcher Klasse ein bestimmtes Attribut gehört.
  • Präsentationsmetadaten: Wie das Attribut dem Benutzer angezeigt werden soll (z. B. als Textfeld oder Bild angegebener Abmessungen, einer Pull-Down-Liste oder einer Reihe von Optionsfeldern). Wenn ein zusammengesetztes Objekt aus mehreren Attributen besteht, wie im EAV/CR -Design, gibt es zusätzliche Metadaten in der Reihenfolge, in der die Attribute präsentiert werden sollten und wie diese Attribute optional gruppiert werden sollten (unter beschreibenden Überschriften).
  • Für Attribute, die zufällig Laborparameter sind, Bereiche der Normalwerte, die je nach Alter, Geschlecht, physiologischer Zustand und Testmethode variieren können.
  • Gruppierung von Metadaten: Attribute werden typischerweise als Teil einer Gruppe höherer Ordnung, z. B. einer speziellspezifischen Form, dargestellt. Die Gruppierung von Metadaten enthält Informationen wie die Reihenfolge, in der Attribute präsentiert werden. Bestimmte Präsentationsmetadaten wie Schriftarten/Farben und die Anzahl der pro Zeile angezeigten Attribute gelten für die gesamte Gruppe.

Erweiterte Validierungsmetadaten

  • Abhängigkeitsmetadaten: In vielen Benutzeroberflächen ist der Eintritt bestimmter Werte in bestimmte Felder/Attribute erforderlich, um bestimmte andere Felder entweder zu deaktivieren/auszublenden oder andere Felder zu aktivieren/anzeigen. (Zum Beispiel, wenn ein Benutzer die Antwort "Nein" auf eine boolesche Frage wählt "Hat der Patient Diabetes?" Ein generisches Framework beinhaltet die Speicherung von Abhängigkeiten zwischen den Kontrollattributen und den kontrollierten Attributen.
  • Berechnungen und komplexe Validierung: Wie in einer Tabelle kann der Wert bestimmter Attribute berechnet und angezeigt werden, basierend auf Werten, die in Felder eingegeben wurden, die früher in Sequenz dargestellt werden. (Zum Beispiel ist die Körperoberfläche eine Funktion von Höhe und Breite). In ähnlicher Weise kann es "Einschränkungen" geben, die für die gültigen Daten zutreffen müssen: Zum Beispiel muss die Summe der Zahlen der einzelnen weißen Zelltypen in einer differentiellen weißen Zellzahl immer gleich 100 gleich sind, da die einzelnen Zählungen darstellen Prozentsätze. Berechnete Formeln und eine komplexe Validierung werden im Allgemeinen durch Speichern von Ausdrücken in den Metadaten durchgeführt, die mit den Werten, die der Benutzer eingibt und bewertet werden kann, makrosubstituiert werden. In Webbrowsern beide JavaScript und Vbscript haben eine eval () -Funktion, die für diesen Zweck genutzt werden kann.

Validierungs-, Präsentations- und Gruppierungsmetadaten ermöglichen die Erstellung von Code -Frameworks, die die automatische Benutzeroberfläche für die Benutzeroberfläche sowohl für das Durchsuchen von Daten als auch für die interaktive Bearbeitung unterstützen. In einem Produktionssystem, das über das Web geliefert wird, wird die Aufgabe der Validierung von EAV-Daten im Wesentlichen von der Back-End- /Datenbankstufe (was in Bezug auf diese Aufgabe) auf die Middle /Web Server-Ebene verschoben wird. Während die Back-End-Validierung immer ideal ist, da es unmöglich ist, den direkten Dateneintrag in eine Tabelle zu untergraben . Die Verfügbarkeit von Open Source Frameworks, die für individuelle Bedürfnisse untersucht und modifiziert werden können, können einen großen Beitrag zur Vermeidung von Rad -Neuerfindung leisten.

Nutzungsszenarien

(Der erste Teil dieses Abschnitts ist a Précis des Dinu/Nadkarni -Referenzartikels in Central,[18] worauf wird der Leser für weitere Details gerichtet.)

EAV -Modellierung unter den alternativen Begriffen "Generische Datenmodellierung"oder" offenes Schema "ist seit langem ein Standard-Tool für fortschrittliche Datenmodellierer. Wie bei jeder erweiterten Technik kann es doppelt genutzt werden und sollte mit Bedacht verwendet werden.

Außerdem schließt der Einsatz von EAV die Einstellung traditioneller relationaler Datenbankmodellierungsansätze innerhalb desselben Datenbankschemas nicht aus. In EMRs, die sich auf ein RDBMS verlassen, wie z. CernerDie überwiegende Mehrheit der Tabellen im Schema wird traditionell traditionell modelliert, wobei Attribute eher als einzelne Spalten als als Zeilen dargestellt werden.

Die Modellierung des Metadaten-Subschems eines EAV-Systems passt in der Tat sehr gut für die traditionelle Modellierung, da zwischen den verschiedenen Komponenten der Metadaten Wechselbeziehungen zwischen den verschiedenen Komponenten. Im Trialdb -System beispielsweise ist die Anzahl der Metadaten -Tabellen im Schema über die Datentabellen um etwa zehn zu eins. Da die Richtigkeit und Konsistenz von Metadaten für den korrekten Betrieb eines EAV -Systems von entscheidender Bedeutung ist, möchte der Systemdesigner die vollständigen Vorteile aller Funktionen, die RDBMS zur Verfügung stellen, wie z. -Engine Wheel. Infolgedessen befinden sich die zahlreichen Metadatentische, die EAV-Designs unterstützen, typischerweise in relationaler Form dritten normalen Form.

Kommerziell elektronischer Gesundheitsakten Systeme (EHRs) verwenden Zeilenmodellierung für Datenklassen wie Diagnosen, chirurgische Verfahren, die an und Labortestergebnisse durchgeführt werden, die in separate Tabellen unterteilt werden. In jeder Tabelle ist die "Entität" eine Zusammensetzung der Patienten -ID und das Datum/die Uhrzeit, die die Diagnose gestellt wurde (oder der Operation oder der durchgeführten Labortest). Das Attribut ist ein Fremdschlüssel in einer speziell bezeichneten Suchtabelle, die ein kontrolliertes Vokabular enthält - z. B.,, ICD-10 Für Diagnosen, Aktuelle prozedurale Terminologie für chirurgische Verfahren mit einer Reihe von Wertattributen. (Z. B. für Labortestergebnisse kann man den gemessenen Wert erfassen, unabhängig davon on.) Wie bereits erwähnt, ist dies kein vollwertiger EAV Produkttabelle.

Um Daten zu Parametern zu erfassen, die nicht immer in Standardvokabularen definiert sind, liefern EHRs auch einen "reinen" EAV von Werten/Codes) und ermöglichen es anderen, Daten basierend auf diesen Attributen zu erfassen. In der epischen (TM) EHR wird dieser Mechanismus als "Flussblätter" bezeichnet und wird üblicherweise verwendet, um stationäre Pflegebeobachtungsdaten zu erfassen.

Modellierung spärlicher Attribute

Das typische Fall für die Verwendung des EAV -Modells ist für hochdarme, heterogene Attribute wie klinische Parameter in der oben angegebenen elektronischen Krankenakte (EMRS). Auch hier ist es jedoch genau, dass das EAV -Modellierungsprinzip auf a angewendet wird Unterschema der Datenbank eher als für alle ihre Inhalte. (Die Demografie der Patienten beispielsweise werden beispielsweise in einspaltigem modelliertem modelliertem modelliertem, traditionellen relationalen Struktur modelliert.)

Folglich spiegeln die Argumente über EAV vs. "relationales" Design das unvollständige Verständnis des Problems wider: Ein EAV-Design sollte nur für das Unterschema einer Datenbank eingesetzt werden, in der spärliche Attribute modelliert werden müssen: Auch hier müssen sie unterstützt werden durch dritte normale Form Metadatentische. Es gibt relativ wenige Probleme mit der Datenbankdesign, bei denen spärliche Attribute auftreten: Aus diesem Grund sind die Umstände, unter denen das EAV-Design anwendbar ist, relativ selten. Auch wenn sie angetroffen werden, ist eine Reihe von EAV-Tabellen nicht die einzige Möglichkeit, spärliche Daten anzugehen: Eine XML-basierte Lösung (unten diskutiert) ist anwendbar, wenn die maximale Anzahl von Attributen pro Entität relativ bescheiden ist und das Gesamtvolumen der spärlichen Volumen anwendbar ist Daten sind ebenfalls bescheiden. Ein Beispiel für diese Situation sind die Probleme, variable Attribute für verschiedene Produkttypen zu erfassen.

Es können auch in E-Commerce-Situationen sparsame Attribute auftreten, in denen eine Organisation eine riesige und sehr unterschiedliche Reihe von Rohstoffen kauft oder verkauft, wobei die Einzelheiten der einzelnen Kategorien von Waren sehr unterschiedlich sind. Die Magento E-Commerce-Software [19] verwendet einen EAV -Ansatz, um dieses Problem anzugehen.

Modellierung zahlreicher Klassen mit sehr wenigen Instanzen pro Klasse: hochdynamische Schemas

Eine weitere Anwendung von EAV ist die Modellierungsklassen und -attribute, die zwar nicht spärlich sind, aber dynamisch sind, aber wenn die Anzahl der Datenzeilen pro Klasse relativ bescheiden ist - höchstens ein paar hundert Zeilen, aber normalerweise einige Dutzend - und das System Der Entwickler ist außerdem erforderlich, um eine webbasierte Endbenutzerschnittstelle innerhalb einer sehr kurzen Turnaround-Zeit bereitzustellen. "Dynamisch" bedeutet, dass neue Klassen und Attribute kontinuierlich definiert und verändert werden müssen, um ein sich entwickeltes Datenmodell darzustellen. Dieses Szenario kann sowohl in sich entwickelnden wissenschaftlichen Bereichen als auch in der Ontologieentwicklung auftreten, insbesondere während der Prototyp- und iterativen Verfeinerungsphasen.

Während die Erstellung neuer Tabellen und Spalten zur Darstellung einer neuen Datenkategorie nicht besonders arbeitsintensiv ist, ist die Programmierung von webbasierten Schnittstellen, die das Browsing oder die grundlegende Bearbeitung mit Typ- und Bereichsbasis unterstützen, unterstützt. In einem solchen Fall besteht eine wartbarere langfristige Lösung darin, ein Framework zu erstellen, in dem die Klassen- und Attributdefinitionen in Metadaten gespeichert werden, und die Software generiert dynamisch eine grundlegende Benutzeroberfläche aus dieser Metadaten.

Das zuvor erwähnte EAV/CR -Framework wurde erstellt, um genau diese Situation anzugehen. Beachten Sie, dass ein EAV -Datenmodell hier nicht wesentlich ist, aber der Systemdesigner kann es als akzeptable Alternative zur Erstellung von sechzig oder mehr Tabellen mit insgesamt nicht mehr als zweitausend Zeilen betrachten. Da die Anzahl der Zeilen pro Klasse so wenig ist, sind Effizienzüberlegungen weniger wichtig; Mit der Standardindexierung nach Klassen -ID/Attribut -ID können DBMS -Optimierer die Daten für eine kleine Klasse im Speicher leicht zwischenspeichern, wenn eine Abfrage mit dieser Klasse oder diesem Attribut ausgeführt wird.

Im dynamischen Szenario ist es erwähnenswert Ressourcenbeschreibung Framework (RDF) wird als Untermauerung der semantischen Webarbeit im Zusammenhang mit der Semantik-Web eingesetzt. RDF, das eine allgemeine Methode zur Darstellung von Informationen darstellt, ist eine Form von EAV: Ein RDF -Triple umfasst ein Objekt, eine Eigenschaft und einen Wert.

Am Ende von Jon Bentleys Buch "Schreiben effizienter Programme" warn ist Ein Leistungsproblem und Maßnahmen wie Codeprofile haben den genauen Ort des Engpasses festgelegt. Sobald Sie dies getan haben, ändern Sie nur den spezifischen Code, der schneller ausgeführt werden muss. Ähnliche Überlegungen gelten für die EAV a priori Unhandlich sein (wie im klinischen Datenbereich) oder während der Systementwicklung entdeckt wird, um erhebliche Wartungsherausforderungen zu stellen. Datenbankguru (und derzeit Vizepräsident von Core Technologies bei Oracle Corporation) Tom Kyte,[20] Beispielsweise weist beispielsweise die Nachteile des Einsatzes von EAV in traditionellen Geschäftsszenarien korrekt hin und weist darauf hin, dass bloße "Flexibilität" kein ausreichendes Kriterium für die Verwendung von EAV ist. (Er macht jedoch die umfassende Behauptung, dass EAV vermieden werden sollte alle Umstände, obwohl die Abteilung für Gesundheitswissenschaften von Oracle selbst EAV einsetzt[21] und Oracle Clinical.[22]))

Arbeiten mit EAV -Daten

Die Achillesferse von EAV ist die Schwierigkeit, mit großen Bänden von EAV -Daten zu arbeiten. Es ist häufig notwendig, vorübergehend oder dauerhaft zwischen Spalten- und Zeilen oder EAV-modelierten Darstellungen derselben Daten zu konvertieren. Dies kann sowohl fehleranfällig als auch cpu-intensiv sein. Generische Frameworks, die Attribut- und Attributgruppen-Metadaten verwenden, befassen sich mit der ersteren, aber nicht die letztere Einschränkung; Ihre Verwendung ist bei gemischten Schemata mehr oder weniger vorgeschrieben, die eine Mischung aus herkömmlichen relationalen und EAV-Daten enthalten, wobei der Fehlerquotient sehr signifikant sein kann.

Die Umrechnungsoperation heißt drehbar. Pivoting ist nicht nur für EAV-Daten erforderlich, sondern auch für jede Form von zeilenmodellierten Daten. (Zum Beispiel Implementierungen der Apriori -Algorithmus Für die Assoziationsanalyse, die häufig verwendet wird, um Supermarktverkaufsdaten zu verarbeiten, um andere Produkte zu identifizieren, die die Käufer eines bestimmten Produkts auch kaufen, sind wahrscheinlich die Datenbankmotoren proprietäre SQL-Erweiterungen zur Erleichterung von Pivoting und Erleichterung von Pivoting, und die Pivoting und die Pivoting haben. Pakete wie Microsoft Excel unterstützen es ebenfalls. Die Umstände, unter denen Drehungen erforderlich sind, werden nachstehend berücksichtigt.

  • Surfen von bescheidenen Datenmengen für eine einzelne Entität, die optional von der Datenbearbeitung basierend auf interattributen Abhängigkeiten gefolgt ist. Diese Operation wird erleichtert, indem die bescheidenen Mengen der erforderlichen unterstützenden Metadaten zwischengespeichert werden. Einige Programme wie TrialDB greifen auf die Metadaten zu, um halbstatische Webseiten zu generieren, die eingebetteter Programmiercode enthalten, sowie Datenstrukturen, die Metadaten enthalten.
  • Massenextraktion Verwandelt große (aber vorhersehbare) Datenmengen (z. B. die vollständigen Daten einer klinischen Studie) in eine Reihe von relationalen Tabellen. Obwohl CPU-intensiv, ist diese Aufgabe selten und muss nicht in Echtzeit erledigt werden. d.h. der Benutzer kann warten, bis ein angegebener Prozess abgeschlossen ist. Die Bedeutung der Massenextraktion kann nicht überschätzt werden, insbesondere wenn die Daten mit Standard-Drittanbietern verarbeitet oder analysiert werden sollen, die sich der EAV-Struktur völlig nicht bewusst sind. Hier ist es nicht ratsam, die gesamten Rädersätze durch ein generisches Framework neu zu erfinden, und es ist am besten nur, EAV-Daten in Relationale Tabellen in relationale Tabellen zu erfassen und dann mithilfe von Standard-Tools zu arbeiten.
  • Ad -hoc -Abfrage Grenzflächen zu rass- oder eAV-modellierten Daten, wenn sie aus der Perspektive einzelner Attribute abgefragt werden (z. B. "alle Patienten mit dem Vorhandensein von Lebererkrankungen abrufen, mit Anzeichen eines Leberversagens und ohne Anamnese des Alkoholmissbrauchs"), darf typischerweise das zeigen Ergebnisse der Abfrage mit einzelnen Attributen als separate Spalten. Für die meisten EAV-Datenbankszenarien muss die Leistung der Ad-hoc-Abfragen erträglich sein, aber keine Antworten von Untersekunden sind erforderlich, da die Abfragen tendenziell explorativen Natur sind.

Relationale Abteilung

Die Struktur des EAV -Datenmodells ist jedoch ein perfekter Kandidat für die relationale Teilung, siehe Relationale Algebra. Mit einer guten Indexierungsstrategie ist es möglich, eine Reaktionszeit in weniger als ein paar hundert Millisekunden in einer Milliardenzeile EAV -Tabelle zu erhalten. Microsoft SQL Server MVP Peter Larsson hat dies auf einem Laptop bewiesen und die Lösung allgemein zur Verfügung gestellt.[23]

Optimierung der Drehleistung

  • Eine mögliche Optimierung ist die Verwendung eines separaten "Lagerhaus"oder abfragbares Schema, dessen Inhalt im Stapelmodus aus dem Produktionsschema (Transaktion) aktualisiert wird. Siehe Data Warehousing. Die Tabellen im Lager sind stark indiziert und optimiert mithilfe Denormalisierung, was mehrere Tabellen zu einem kombiniert, um die Leistungsstrafe aufgrund von Tabellenverbindungen zu minimieren.
  • Bestimmte EAV -Daten in einem Lagerhaus können in Standardtabellen konvertiert werden. "materialisierte Aussichten" (sehen Data Warehouse), aber dies ist im Allgemeinen ein letzter Ausweg, der sorgfältig verwendet werden muss, da die Anzahl der Ansichten dieser Art dazu neigt, mit der Anzahl der Attribute in einem System nicht linear zu wachsen.[14]
  • In-Memory-Datenstrukturen: Man kann Hash-Tabellen und zweidimensionale Arrays im Speicher in Verbindung mit den Attributgruppen-Metadaten zu Pivot-Daten, einer Gruppe jeweils, verwenden. Diese Daten werden als flache, abgrenzte Datei mit den internen Namen für jedes Attribut in der ersten Zeile geschrieben: Dieses Format kann leicht in eine relationale Tabelle importiert werden. Diese "In-Memory" -Technik übertrifft alternative Ansätze erheblich, indem die Abfragen in EAV-Tabellen so einfach wie möglich gehalten und die Anzahl der E/A-Operationen minimiert werden.[14] Jede Anweisung ruft eine große Datenmenge ab, und die Hash -Tabellen helfen bei der Durchführung des Drehvorgangs, bei dem ein Wert für eine bestimmte Attributinstanz in die entsprechende Zeile und Spalte eingereicht wird. Random Access Memory (RAM) ist ausreichend reichlich und erschwinglich in der modernen Hardware, dass der vollständige Datensatz für eine einzelne Attributgruppe in selbst großen Datensätzen normalerweise vollständig in den Speicher passt, obwohl der Algorithmus durch die Arbeit an den Datenscheiben intelligent gemacht werden kann Wenn sich herausstellt, dass dies nicht der Fall ist.

Unabhängig davon, welche Ansätze Sie verfolgen, ist das Abfragen von EAV nicht so schnell wie das Abfragen von Standardspalten-modellierten relationalen Daten für bestimmte Abfragetypen, ähnlich wie der Zugriff von Elementen in spärlichen Matrizen nicht so schnell wie bei Non nicht -Sparse Matrizen, wenn letzteres vollständig in den Hauptspeicher passt. (Spärliche Matrizen, die unter Verwendung von Strukturen wie verknüpften Listen dargestellt werden, erfordern die Liste, um in einer bestimmten X-Y-Position auf ein Element zuzugreifen, während der Zugriff auf Elemente in Matrizen, die als 2-D-Arrays dargestellt werden, mit schnellen CPU-Registervorgängen durchgeführt werden können.) Wenn, jedoch Sie haben den EAV -Ansatz für das Problem, das Sie zu lösen versuchten, richtig gewählt. Dies ist der Preis, den Sie zahlen. In dieser Hinsicht ist die EAV-Modellierung ein Beispiel für einen Raum (und Schema-Wartung) gegenüber der CPU-Zeit-Kompromiss.

Alternativen

EAV gegen das Universal -Datenmodell

Ursprünglich postuliert von Maier, Ullman und Vardi,[24] Das "Universal Data Model" (UDM) versucht, die Abfrage eines komplexen relationalen Schemas durch naive Benutzer zu vereinfachen, indem die Illusion erstellt wird, dass alles in einer einzigen Riesen "Universal Tabelle" gespeichert ist. Dies geschieht durch die Verwendung von Beziehungen zwischen Tisch, so dass der Benutzer nicht besorgt darüber ist, welche Tabelle welches Attribut enthält. C.J. Datum jedoch,[25] wies darauf hin, dass unter Umständen, in denen eine Tabelle mit einem anderen zusammenhängt (wie in Genealogie -Datenbanken, in denen der Vater und die Mutter eines Individuums auch Einzelpersonen sind, oder in einigen Geschäftsdatenbanken, in denen alle Adressen zentral gespeichert sind und eine Organisation unterschiedliche Büroadressen und -adressen haben kann und können Versandadressen), es gibt nicht genügend Metadaten im Datenbankschema, um eindeutige Verknüpfungen anzugeben. Wenn UDM kommerzialisiert wurde, wie in SAP Business-ObjekteDiese Einschränkung wird durch die Schaffung von "Universen" bearbeitet, die relationale Ansichten mit vordefinierten Zusammenstellungen zwischen Tabellensätzen sind: dem "Universum" -Entaucher bittet mehrdeutige Verknüpfungen durch, indem die mehrmals mit unterschiedlichen Alias ​​mit unterschiedlichen Alias ​​mit mehrfacher Multiplikum in einer Ansicht einbezogen wird.

Abgesehen von der Art und Weise, wie Daten explizit modelliert werden (UDM verwendet lediglich relationale Ansichten, um zwischen dem Benutzer und dem Datenbankschema zu intervenieren), unterscheidet sich EAV von universellen Datenmodellen, da sie auch für Transaktionssysteme gilt, nicht nur abfrageorientiert (schreibgeschützt ) Systeme wie in UDM. Wenn EAV-Implementierungen als Grundlage für Abfragesysteme für klinische Daten verwendet werden, schützen EAV auch den Benutzer nicht unbedingt davor, die Klasse eines Interesses angeben zu müssen. Im EAV-basierten i2b2 klinischen Daten Mart,[26] Wenn der Benutzer beispielsweise nach einem Begriff sucht, hat sie die Möglichkeit, die Kategorie der Daten anzugeben, an denen der Benutzer interessiert ist. Zum Beispiel die Phrase "Lithium"Kann entweder auf das Medikament verweisen (das zur Behandlung verwendet wird bipolare Störung) oder ein Laborassay für Lithiumspiegel im Blut des Patienten. (Der Blutspiegel von Lithium muss sorgfältig überwacht werden: Zu viel des Arzneimittels verursacht schwerwiegende Nebenwirkungen, während zu wenig unwirksam ist.)

XML und JSON

Eine offene Schema -Implementierung kann eine XML -Spalte in einer Tabelle verwenden, um die variablen/spärlichen Informationen zu erfassen.[27] Ähnliche Ideen können auf Datenbanken angewendet werden, die unterstützen JSON-Valierte Spalten: Spärliche, hierarchische Daten können als JSON dargestellt werden. Wenn die Datenbank JSON -Unterstützung bietet, z. B. PostgreSQL und (teilweise) SQL Server 2016 und später, können Attribute abgefragt, indiziert und verbunden werden. Dies kann Leistungsverbesserungen von über 1000x gegenüber naiven EAV -Implementierungen bieten.[28] die Gesamtdatenbankanwendung macht jedoch nicht unbedingt robuster.

Beachten Sie, dass es zwei Möglichkeiten gibt, wie XML- oder JSON -Daten gespeichert werden können: Eine Möglichkeit besteht darin, sie als einfache Zeichenfolge zu speichern, und undurchsichtig für den Datenbankserver. Die andere Möglichkeit besteht darin, einen Datenbankserver zu verwenden, der in die Struktur "in die Struktur sehen" kann. Es gibt offensichtlich einige schwerwiegende Nachteile beim Speichern von undurchsichtigen Zeichenfolgen: Diese können nicht direkt abgefragt werden, man kann keinen Index basierend auf ihrem Inhalt bilden, und es ist unmöglich, Verbindungen basierend auf dem Inhalt durchzuführen.

Das Erstellen einer Anwendung, mit der Daten verwaltet werden müssen, wird aufgrund des Ausmaßes der Infrastruktur, die in Bezug auf Metadaten-Tabellen und Anwendungs-Framework-Code entwickelt werden muss, extrem kompliziert, wenn EAV-Modelle verwendet werden. Die Verwendung von XML löst das Problem der serverbasierten Datenvalidierung (die mit mittleren und browserbasierten Code in EAV-basierten Frameworks erfolgen muss), verfügt jedoch über die folgenden Nachteile:

  • Es ist Programmiererintensiv. XML-Schemata sind bekanntermaßen schwierig zu schreiben. Ein empfohlener Ansatz besteht darin, sie zu erstellen, indem sie relationale Tabellen definieren, XML-Schema-Code generieren und diese Tabellen dann fallen lassen. Dies ist in vielen Produktionsoperationen mit dynamischen Schemata problematisch, bei denen neue Attribute von Machtnutzern definiert werden müssen, die eine bestimmte Anwendungsdomäne verstehen (z. B. Inventarmanagement oder Biomedizin), aber nicht unbedingt Programmierer sind. Im Gegensatz dazu definieren solche Benutzer in Produktionssystemen, die EAV verwenden, neue Attribute (sowie die jeweiligen Validierungsprüfungen für Datentypen und Validierung) über eine GUI-Anwendung. Da die validierungsassoziierten Metadaten in mehreren relationalen Tabellen in einem normalisierten Design gespeichert werden müssen, ist eine GUI Erweiterte Entwickler - auch wenn das Endre -Reell XML oder JSON anstelle von separaten relationalen Tabellen verwendet.
  • Die serverbasierte Diagnostik, die mit einer XML/JSON-Lösung zurückzuführen ist, wenn falsche Daten eingefügt werden (z. B. Reichweitenprüfung oder Verstöße gegen das reguläre Expression), ist für den Endbenutzer kryptisch: Um den Fehler genau zu vermitteln, würde eins, Müssen zumindest eine detaillierte und benutzerfreundliche Fehlerdiagnose mit jedem Attribut in Verbindung bringen.
  • Die Lösung befasst sich nicht mit dem Problem der Benutzeroberfläche.

Alle oben genannten Nachteile sind durch das Erstellen einer Ebene aus Metadaten und Anwendungscode abgeleitet. Bei diesem Erstellen ist jedoch der ursprüngliche "Vorteil", kein Framework erstellen zu müssen, verschwunden. Tatsache ist, dass das Modellieren von spärlichen Datenattributen robust ein Problem mit der harten Datenbank-Anwendung ist, unabhängig davon, welcher Speicheransatz verwendet wird. Sarkas Arbeit,[27] zeigt jedoch die Lebensfähigkeit der Verwendung eines XML-Feldes anstelle von typspezifischen relationalen EAV-Tabellen für die Data-Storage-Schicht und in Situationen, in denen die Anzahl der Attribute pro Entität (z. B. variable Produktattribute für verschiedene Produkttypen) ist -Basierte Lösung ist kompakter als ein EAV-Tisch-basiert. (XML selbst kann als Mittel zur Darstellung von Attribut -Wert -Daten angesehen werden, obwohl sie eher auf strukturierten Text als auf relationalen Tabellen basiert.)

Baumstrukturen und relationale Datenbanken

Es gibt mehrere andere Ansätze für die Darstellung von baumstrukturierten Daten, sei es Xml, JSON oder andere Formate wie die verschachteltes Set -Modellin einer relationalen Datenbank. Auf der anderen Seite haben Datenbankanbieter begonnen, JSON- und XML -Unterstützung in ihre Datenstrukturen und Abfragefunktionen einzubeziehen, wie in IBM DB2, wobei XML -Daten als XML -getrennt von den Tabellen gespeichert werden XPath Abfragen als Teil von SQL -Aussagen oder in PostgreSQLmit einem JSON -Datentyp[29] Das kann indiziert und befragt werden. Diese Entwicklungen erreichen, verbessern oder ersetzen den EAV -Modellansatz.

Die Verwendungen von JSON und XML sind nicht unbedingt die gleiche wie die Verwendung eines EAV -Modells, obwohl sie sich überlappen können. XML ist EAV für willkürlich hierarchische Daten vorzuziehen, die für eine einzelne Entität relativ bescheiden sind: Es ist nicht beabsichtigt, in Bezug auf die Leistung von Datenmanipulationen auf die Multi-Gigabyte-Ebene zu skalieren. XML ist mit dem spärlichen Problem nicht pro Seesse betroffen . EAV ist, wie bereits erwähnt, spezifisch (und nur) für das spärliche Attribut-Szenario anwendbar. Wenn ein solches Szenario ausfällt, ist die Verwendung von Datentypen-spezifischen Attribut-Wert-Tabellen, die durch Entität, durch Attribut und durch einfache SQL-Anweisungen durch einfache SQL-Anweisungen indiziert werden können, wesentlich skalierbarer als die Verwendung einer XML-Baumstruktur. Die oben erwähnte Google App Engine verwendet aus gutem Grund starke Wertstabellen.

Grafikdatenbanken

Ein alternativer Ansatz zur Verwaltung der verschiedenen Probleme, die mit EAV-strukturierten Daten auftreten Grafikdatenbank. Diese repräsentieren Entitäten als die Knoten einer Grafik oder Hypergraphund Attribute als Links oder Kanten dieses Diagramms. Die Ausgabe der Tabellenverbindungen werden durch Bereitstellung von graphspezifischen Abfragsprachen wie z. Apache Tinkerpop,[30] oder der OpenCog Atomspace Muster Matcher.[31]

Eine andere Alternative ist die Verwendung Sparql Laden.

Überlegungen für Serversoftware

PostgreSQL: JSONB -Spalten

Postgresql Version 9.4 beinhaltet Unterstützung für JSON Binäre Spalten (JSONB), die abgefragt, indiziert und verbunden werden können. Dies ermöglicht Leistungsverbesserungen durch Faktoren von tausend oder mehr über traditionelle EAV -Tabellendesigns.[28]

Ein DB -Schema, das auf JSONB basiert, hat immer weniger Tabellen: Man kann das Attribut -Wert -Wert -Wert in JSONB -Typfeldern der Entitätstabelle nisten. Das macht das DB -Schema leicht zu verstehen und SQL -Abfragen präzise.[32] Der Programmiercode zur Manipulation der Datenbankobjekte auf der Abstraktionsschicht ist viel kürzer.[33]

SQL Server 2008 und später: Sparse Columns

Microsoft SQL Server 2008 bietet eine (proprietäre) Alternative zu EAV.[34] Spalten mit einem atomaren Datentyp (z. B. numerische, varchar oder datetime -Spalten) können als als bezeichnet werden spärlich Einfach durch Einbeziehung des Wortes in der Spaltendefinition der Erstellung der Tabellenanweisung einbezogen. Spärliche Spalten optimieren die Speicherung von Nullwerten (die jetzt überhaupt keinen Platz einnehmen) und sind nützlich, wenn die Mehrheit in einer Tabelle Nullwerte für diese Spalte enthält. Die Indizes für spärliche Spalten sind ebenfalls optimiert: Nur diese Zeilen mit Werten sind indiziert. Darüber hinaus kann der Inhalt aller spärlichen Spalten in einer bestimmten Zeile einer Tabelle zusammen in eine einzelne XML -Spalte (ein Spaltensatz) zusammengefasst werden [Spalteninhalte ]*.... Wenn ein Spaltensatz für eine Tabelle als Teil einer Tabellenanweisung definiert ist, werden alle anschließend definierten spärlichen Spalten normalerweise hinzugefügt. Dies hat die interessante Konsequenz, dass die SQL -Aussageerklärung Wählen aus Gibt die einzelnen spärlichen Spalten nicht zurück, sondern verkettet alle in eine einzelne XML -Spalte, deren Name die des Spaltensatzes ist (die daher als virtuelle, berechnete Spalte fungiert). Sparse -Spalten sind für Geschäftsanwendungen wie Produktinformationen bequem, bei denen die zutreffenden Attribute je nach Produkttyp sehr unterschiedlich sein können, bei denen jedoch die Gesamtzahl der variablen Attribute pro Produkttyp relativ bescheiden ist.

Einschränkungen der spärlichen Attribute

Dieser Ansatz zur Modellierung spärlicher Attribute hat jedoch mehrere Einschränkungen: Konkurrent DBMSs haben sich insbesondere dafür entschieden, diese Idee nicht für ihre eigenen Motoren auszuleihen. Einschränkungen umfassen:

  • Die maximale Anzahl sparsamer Spalten in einer Tabelle beträgt 10.000, was für einige Implementierungen, z. B. für die Speicherung klinischer Daten, möglicherweise kurz vorhanden ist, wobei die mögliche Anzahl der Attribute eine Größenordnung größer ist. Daher ist dies keine Lösung für die Modellierung * aller * möglichen klinischen Attribute für einen Patienten.
  • Hinzufügen neuer Attribute - einer der Hauptgründe, warum ein EAV -Modell gesucht werden könnte - erfordert immer noch einen DBA. Darüber hinaus wird das Problem des Erstellens einer Benutzeroberfläche zu spärlichen Attributdaten nicht angesprochen: Nur der Speichermechanismus wird optimiert. * Anwendungen können geschrieben werden, um spärliche Spalten dynamisch hinzuzufügen und zu entfernen. Im Gegensatz Tabellen ohne spärliche Spalten. Obwohl diese Fähigkeit Kraft und Flexibilität bietet, lädt sie zu Missbrauch ein und sollte sorgfältig und selten eingesetzt werden.
    • Dies kann zu erheblichen Leistungsstrafen führen, teilweise, da alle kompilierten Abfragedarsteller, die diese Tabelle verwenden, automatisch ungültig werden.
    • Das Hinzufügen oder Entfernen von Dynamikspalten ist ein Vorgang, der geprüft werden sollte, da die Spaltenentfernung zu Datenverlust führen kann: Eine Anwendung kann eine Tabelle ändern, ohne eine Art Trail zu erhalten, einschließlich einer Rechtfertigung für die Aktion, keine gute Softwarepraxis.
  • SQL -Einschränkungen (z. B. Bereichsüberprüfungen, reguläre Ausdrucksprüfungen) können nicht auf spärliche Spalten angewendet werden. Die einzige Überprüfung, die angewendet wird, ist für den korrekten Datentyp. Einschränkungen müssten in Metadaten-Tabellen und Mittelklasse-Code implementiert werden, wie es in Produktions-EAV-Systemen erfolgt. (Diese Überlegung gilt auch für Geschäftsanwendungen.)
  • SQL Server hat Einschränkungen bei der Zeilengröße, wenn versucht wird, das Speicherformat einer Spalte zu ändern: Der Gesamtinhalt aller Atomdaten-Spalten, spärlich und nicht sparsam, in einer Zeile, die Daten enthalten Spalte, damit die Daten automatisch kopiert werden sollen.
  • Spärliche Spalten, die Daten enthalten, haben zusätzlich zum Speicher für den Datentyp selbst einen Speicheraufwand von 4 Bytes pro Spalte (z. B. 4 Bytes für DateTime -Spalten). Dies wirkt sich auf die Menge der Sparse-Spalt-Daten aus, die Sie mit einer bestimmten Zeile assoziieren können. Diese Größenbeschränkung ist für den VARCHAR-Datentyp gelockert. Wenn man in einem Produktionssystem die Zeilengrenzen in einem Produktionssystem angeht, muss man ihn um sie herum bearbeiten, indem sie spärliche Spalten als Varchar bezeichnen, obwohl sie möglicherweise einen anderen intrinsischen Datentyp haben. Leider untergräbt dieser Ansatz nun die serverseitige Datentyp-Überprüfung.

Cloud Computing -Angebote

Viele Cloud Computing Anbieter bieten Datenspeicher an, die auf dem EAV -Modell basieren, wobei eine beliebige Anzahl von Attributen einer bestimmten Entität zugeordnet werden kann. Roger Jennings bietet einen detaillierten Vergleich[35] von diesen. In Amazon's Opfer, SimpledB, ist der Datentyp auf Zeichenfolgen beschränkt, und Daten, die intrinsisch nicht ausgestattet sind, müssen in die Zeichenfolge gezwungen werden (z. B. müssen Zahlen mit führenden Nullen gepolstert werden), wenn Sie Operationen wie Sortierung ausführen möchten. Das Angebot von Microsoft, Windows Azure Table Table, bietet einen begrenzten Satz von Datentypen: Byte [], Bool, DateTime, Double, Guid, INT, Long und String [1]. Die Google App Engine [2] Bietet die größte Vielfalt von Datentypen: Zusätzlich zur Aufteilung numerischer Daten in INT-, Long- oder Float definiert sie auch benutzerdefinierte Datentypen wie Telefonnummer, E-Mail-Adresse, Geocode und Hyperlink. Mit Google, aber nicht Amazon oder Microsoft, können Sie Metadaten definieren, die verhindern, dass ungültige Attribute einer bestimmten Entitätsklasse zugeordnet werden, indem Sie ein Metadatenmodell erstellen können.

Mit Google können Sie mit einer Teilmenge von SQL mit den Daten arbeiten. Microsoft bietet eine URL-basierte Abfrage-Syntax an, die über a abstrahiert wird Linq Anbieter; Amazon bietet eine begrenztere Syntax. Besorgniserregend ist die integrierte Unterstützung für die Kombination verschiedener Unternehmen durch Joins derzeit (April '10) nicht mit allen drei Motoren. Solche Vorgänge müssen mit dem Anwendungscode ausgeführt werden. Dies ist möglicherweise kein Anliegen, wenn die Anwendungsserver mit den Datenservern im Rechenzentrum des Anbieters zusammengeführt werden, aber es würde viel Netzwerkverkehr generiert, wenn die beiden geografisch getrennt wären.

Ein EAV-Ansatz ist nur gerechtfertigt, wenn die modellierten Attribute zahlreich und spärlich sind: Wenn die erfassten Daten diese Anforderung nicht erfüllen, ist der Standard-EAV-Ansatz der Cloud-Anbieter häufig ein Missverhältnis für Anwendungen, die eine echte Back-End-Datenbank erfordern (im Gegensatz zu lediglich einem Mittel zur anhaltenden Datenspeicherung). Die Nachrüstung der überwiegenden Mehrheit der vorhandenen Datenbankanwendungen, die einen herkömmlichen Datenmodellansatz verwenden, für eine Cloud-Architektur vom EAV-Typ würde eine größere Operation erfordern. Microsoft stellte beispielsweise fest, dass seine Datenbank-Anwendungsentwicklerbasis weitgehend zögerte, solche Anstrengungen zu investieren. In jüngerer Zeit hat Microsoft ein Premium-Angebot bereitgestellt-eine Cloud-zugängliche vollwertige relationale Engine, SQL Server Azure, die die Portierung vorhandener Datenbankanwendungen mit bescheidenen Änderungen ermöglicht.

Eine Einschränkung von SQL Azure besteht darin, dass die physischen Datenbanken ab Januar 2015 auf 500 GB Größe begrenzt sind.[36] Microsoft empfiehlt, dass Datensätze größer als diese in mehrere physische Datenbanken aufgeteilt werden und mit parallele Abfragen zugegriffen werden.

Siehe auch

Verweise

  1. ^ Free Software Foundation (10. Juni 2007), GNU EMACS Lisp Referenzhandbuch, Boston, MA: Free Software Foundation, S. Abschnitt 5.8, "Association Lists", archiviert von das Original Am 2011-10-20
  2. ^ Apache Foundation, UIMA -Tutorials und Benutzerführer. URL: http://uima.apache.org/downloads/releseartesocs/2.1.0-incubating/docs/html/tutorials_and_users_guides/tutorials_and_users_guides.html. Zugriff auf Oktober 2012,
  3. ^ Stead, W.W.; Hammond, W.E.; Streube, M. J. (1982), "Ein tafelloser Rekord - ist es angemessen?", Verfahren des jährlichen Symposiums über Computeranwendung in der medizinischen Versorgung, 7 (2. November 1982): 89–94, doi:10.1007/bf00995117, PMC 2580254, PMID 6688264
  4. ^ McDonald, C.J.; Blevins, L.; Tierney, W.M.; Martin, D.K. (1988), "The RegenStrief Medical Records", MD Computing, 5 (5): 34–47, PMID 3231034
  5. ^ Pryor, T. Allan (1988). "Das Help Medical Record System". M.D. Computing. 5 (5): 22–33. PMID 3231033.
  6. ^ Warner, H. R.; Olmsted, C. M.; Rutherford, B. D. (1972), "Hilfe-ein Programm für medizinische Entscheidungen", Comput Biomed Res, 5 (1): 65–74, doi:10.1016/0010-4809 (72) 90007-9, PMID 4553324
  7. ^ Friedman, Carol; Hripcsak, George; Johnson, Stephen B.; Cimino, James J.; Clayton, Paul D. (1990), "Ein verallgemeinertes relationales Schema für eine integrierte klinische Patientendatenbank", Verfahren des jährlichen Symposiums über Computeranwendung in der medizinischen Versorgung: 335–339, PMC 2245527
  8. ^ a b Nadkarni, MD, Prakash M.; Marenco, MD, Luis; Chen, MD, Roland; Skoufos, PhD, Emmanouil; Shepherd, MD, Dphil, Gordon; Miller, MD, PhD, Perry (1999), "Organisation heterogener wissenschaftlicher Daten unter Verwendung der EAV/CR -Darstellung", Zeitschrift der American Medical Informatics Association, 6 (6): 478–493, doi:10.1136/jamia.1999.0060478, PMC 61391, PMID 10579606{{}}: Cs1 montiert: Mehrfachnamen: Autorenliste (Link)
  9. ^ a b Marenco, Luis; Tosches, Nicholas; Crasto, Chiquito; Shepherd, Gordon; Miller, Perry L.; Nadkarni, Prakash M. (2003), "Evolvierbare Web-Daten-Bioscience-Anwendungen unter Verwendung des EAV/CR-Frameworks: Jüngste Fortschritte", Zeitschrift der American Medical Informatics Association, 10 (5): 444–53, doi:10.1197/jamia.m1303, PMC 212781, PMID 12807806
  10. ^ Abteilung für Veteranenangelegenheiten: Veterans Health Administration Archiviert 2006-02-21 am Wayback -Maschine
  11. ^ * Nadkarni, Prakash, Das EAV/CR -Modell der Datenrepräsentation, abgerufen 1. Februar 2015
  12. ^ Nadkarni, P. M.; Marenco, L; Chen, R; SKOUFOS, E; Shepherd, G; Miller, P (1999), "Organisation heterogener wissenschaftlicher Daten unter Verwendung der EAV/CR -Repräsentation", Zeitschrift der American Medical Informatics Association, 6 (6): 478–493, doi:10.1136/jamia.1999.0060478, PMC 61391, PMID 10579606
  13. ^ Marenco, L; Tosches, n; Crasto, C; Shepherd, G; Miller, P. L.; Nadkarni, P. M. (2003), "Evolvable Web-Database Bioscience-Anwendungen unter Verwendung des EAV/CR-Frameworks: Jüngste Fortschritte", Zeitschrift der American Medical Informatics Association, 10 (5): 444–453, doi:10.1197/jamia.m1303, PMC 212781, PMID 12807806
  14. ^ a b c Dinu, Valentin; Nadkarni, Prakash; Brandt, Cynthia (2006), "Pivoting -Ansätze für die Massenextraktion von Entität und Stütze -Wert -Daten", Computermethoden und -programme in der Biomedizin, 82 (1): 38–43, doi:10.1016/j.cmpb.2006.02.001, PMID 16556470
  15. ^ GB 2384875, Dingley, Andrew Peter, "Speicher und Management von semi-strukturierten Daten", veröffentlicht am 6. August 2003, der Hewlett Packard zugewiesen ist 
  16. ^ Nadkarni, Prakash M. (9. Juni 2011). Metadaten-gesteuerte Softwaresysteme in Biomedizin: Entwerfen von Systemen, die sich an das sich ändernde Wissen anpassen können. Springer. ISBN 978-0857295095.
  17. ^ Nadkarni, Prakash (2011), Metadaten-gesteuerte Softwaresysteme in Biomedizin, Springer, ISBN 978-0-85729-509-5
  18. ^ Dinu, Valentin; Nadkarni, Prakash (2007), "Richtlinien für die effektive Verwendung von Entität und Betrüger -Wert -Modellierung für biomedizinische Datenbanken", Internationales Journal of Medical Informatics, 76 (11–12): 769–79, doi:10.1016/j.ijmedInf.2006.09.023, PMC 2110957, PMID 17098467
  19. ^ Die Magento -Datenbank: Konzepte und Architektur. URL: http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram . Zugriff auf Juli 2015.
  20. ^ Kyte, Thomas. Effektives Orakel durch Design. Oracle Press, McGraw-Hill Osborne Media. 21. August 2003. http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:10678084117056
  21. ^ "Oracle Health Sciences Clinktrial - Oracle". www.oracle.com.
  22. ^ "Oracle Clinical - Übersicht - Oracle". www.oracle.com.
  23. ^ "Relief über EAV aufgeteilt".
  24. ^ David Maier, Jeffrey Ullman, Moshe Vardi. Auf den Grundlagen des universellen Beziehungsmodells. ACM -Transaktionen auf Datenbanksystemen (TODS). Band 9 Ausgabe 2, Juni 1984. Seiten 283-308. URL: http://dl.acm.org/citation.cfm?id=318580
  25. ^ Über das universelle Datenbankdesign. In "Eine Einführung in Datenbanksysteme", 8. EDN, Pearson/Addison Wesley, 2003.
  26. ^ Murphy, S. N.; Weber, G; Mendis, M; Gainer, v; Chueh, H. C.; Churchill, S; Kohane, I (2010), "Diene des Unternehmens und darüber hinaus mit Informatik zur Integration von Biologie und dem Bett (i2b2)", " Zeitschrift der American Medical Informatics Association, 17 (2): 124–130, doi:10.1136/jamia.2009.000893, PMC 3000779, PMID 20190053
  27. ^ a b Itzik Ben-Gan, Dejan Sarka, In Microsoft SQL Server 2008: T-SQL-Programmierung (Microsoft Press)
  28. ^ a b Jeroen Coussement, "EAV durch JSONB in ​​PostgreSQL ersetzen"(2016)
  29. ^ Postgres 9.6, "JSON -Typen"
  30. ^ Tinkerpop, Apache. "Apache Tinkerpop". Tinkerpop.apache.org.
  31. ^ "Muster Matching - OpenCog". Wiki.opencog.org.
  32. ^ "JSQuery - JSON -Abfragesprache mit Gin -Indexierungsunterstützung"(2014)
  33. ^ "7Cart -Projekt - eine zukünftige Alternative zu Shopify und Magento"(2019)
  34. ^ Byham. "Verwenden Sie spärliche Spalten". msdn.microsoft.com.
  35. ^ Jennings, Roger (2009), "Renovieren Sie Ihr Rechenzentrum", Visual Studio Magazine, Februar 2009: 14–25
  36. ^ Lardinois, Frederic. "Azure SQL von Microsoft kann jetzt bis zu 500 GB speichern, erhalten 99,95% SLA und fügt Self -Service -Erholung hinzu - TechCrunch".