DE202020005680U1 - Abfragen über externe Tabellen in Datenbanksystemen - Google Patents

Abfragen über externe Tabellen in Datenbanksystemen Download PDF

Info

Publication number
DE202020005680U1
DE202020005680U1 DE202020005680.4U DE202020005680U DE202020005680U1 DE 202020005680 U1 DE202020005680 U1 DE 202020005680U1 DE 202020005680 U DE202020005680 U DE 202020005680U DE 202020005680 U1 DE202020005680 U1 DE 202020005680U1
Authority
DE
Germany
Prior art keywords
data
external table
metadata
platform
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202020005680.4U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Snowflake Inc filed Critical Snowflake Inc
Publication of DE202020005680U1 publication Critical patent/DE202020005680U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2393Updating materialised views
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2423Interactive query statement specification based on a database schema
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24535Query rewriting; Transformation of sub-queries or views
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

Computerprogramm, das Befehle umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, verursachen, dass der eine oder die mehreren Prozessoren Operationen durchführen, wobei die Operationen Folgendes umfassen:
Verbinden einer Datenbankplattform mit einer externen Tabelle, wobei die Datenbankplattform keinen Schreibzugriff auf die externe Tabelle besitzt;
Erzeugen einer oder mehrerer materialisierter Ansichten über die externe Tabelle;
Speichern der einen oder der mehreren materialisierten Ansichten in einer Datenspeicherplattform, auf die die Datenbankplattform Schreibzugriff besitzt;
Aktualisieren der einen oder der mehreren materialisierten Ansichten, um beliebige Änderungen, die an der externen Tabelle vorgenommen werden, widerzuspiegeln;
Empfangen einer Abfrage, die ein oder mehrere Prädikate umfasst; und
Beantworten der Abfrage mindestens teilweise unter Bezugnahme auf eine oder mehrere der einen oder der mehreren materialisierten Ansichten.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der US-Patentoffenlegungsschrift mit der Ifd. Nr. 16/385,774 , eingereicht am 16. April 2019, deren Inhalt hier durch Bezugnahme vollständig mit aufgenommen ist.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Datenbanken und bezieht sich insbesondere auf externe Tabellen in Datenbanksystemen.
  • Als Gebrauchsmuster zu schützen und Gegenstand eines Gebrauchsmusters sind in Übereinstimmung mit den Anforderungen des Gebrauchsmustergesetzes lediglich Vorrichtungen, die in den beigefügten Ansprüchen definiert sind, jedoch keine Verfahren. Falls in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezüge lediglich dazu, die eine oder die mehreren Vorrichtungen, für die mit den enthaltenen Ansprüchen Schutz ersucht wird, zu veranschaulichen.
  • HINTERGRUND
  • Datenbanken werden häufig zur Datenspeicherung und zum Zugreifen auf Daten in Rechenanwendungen verwendet. Ein Ziel einer Datenbankspeicherung ist, enorme Summen von Informationen in einer organisierten Weise derart bereitzustellen, dass auf sie zugegriffen werden kann, sie gemanagt werden können und sie aktualisiert werden können. In einer Datenbank können Daten in Zeilen, Spalten und Tabellen organisiert sein. Verschiedene Datenbankspeichersysteme können zum Speichern verschiedener Typen von Inhalt wie z. B. bibliographischer Inhalt, Gesamttextinhalt, numerischer Inhalt und/oder Bildinhalt verwendet werden. Ferner können beim Berechnen verschiedene Datenbanksysteme gemäß dem Organisationskonzept der Datenbank eingestuft werden. Es existieren viele verschiedene Typen von Datenbanken, die Vergleichsdatenbanken, verteilte Datenbanken, Cloud-Datenbanken, objektorientierte und weitere enthalten.
  • Datenbanken werden durch verschiedene Einheiten und Firmen zum Speichern von Informationen, die zum Zugriff oder zur Analyse benötigt werden können, verwendet. In einem Beispiel kann ein Einzelhandelsunternehmen eine Auflistung aller Verkaufstransaktionen in einer Datenbank speichern. Die Datenbank kann Informationen über wann eine Transaktion aufgetreten ist, wo sie aufgetreten ist, Gesamtkosten der Transaktion, eine Kennung und/oder einer Beschreibung aller Elemente, die in der Transaktion erworben wurden, usw. enthalten. Dasselbe Einzelhandelsunternehmen kann z. B. auch Arbeitnehmerinformationen, die Arbeitnehmernamen, Arbeitnehmerkontaktinformationen, den beruflichen Werdegang eines Arbeitnehmers, den Vergütungssatz eines Arbeitnehmers usw. enthalten können, in derselben Datenbank speichern. Abhängig von den Anforderungen dieses Einzelhandelsunternehmens können die Arbeitnehmerinformationen und die Transaktionsinformationen in verschiedenen Tabellen derselben Datenbank gespeichert sein. Das Einzelhandelsunternehmen kann den Bedarf haben, seine Datenbank „abzufragen“, wenn es Informationen erfahren möchte, die in der Datenbank gespeichert sind. Dieses Einzelhandelsunternehmen möchte möglicherweise z. B. Daten über die Namen aller Arbeitnehmer, die in einem bestimmten Laden arbeiten, aller Arbeitnehmer, die an einem bestimmten Datum arbeiten, aller Transaktionen für ein bestimmtes Produkt, die während eines bestimmten Zeitrahmens vorgenommen werden, usw. finden.
  • Wenn das Einzelhandelsgeschäft seine Datenbank abfragen möchte, um bestimmte organisierte Informationen aus der Datenbank zu extrahieren, wird eine Abfrageanweisung an den Datenbankdaten ausgeführt. Die Abfrage gibt bestimmte Daten gemäß einem oder mehreren Abfrageprädikaten, die angeben, welche Informationen durch die Abfrage zurückgegeben werden sollen, zurück. Die Abfrage extrahiert bestimmte Daten aus der Datenbank und formatiert die Daten in einer lesbaren Form. Die Abfrage kann in einer Sprache, die durch die Datenbank verstanden wird, wie z. B. die strukturierte Abfragesprache („SQL“) geschrieben werden, damit die Datenbanksysteme bestimmen können, welche Daten gefunden werden sollen und wie sie zurückgegeben werden sollen. Die Abfrage kann jegliche relevante Informationen anfordern, die in der Datenbank gespeichert sind. Wenn die geeigneten Daten gefunden werden können, um die Abfrage zu beantworten, besitzt die Datenbank das Potential, komplexe Trends und Aktivitäten zu offenbaren. Diese Leistung kann lediglich unter Verwendung einer erfolgreich ausgeführten Abfrage genutzt werden.
  • Ein herkömmliches Datenbankmanagement erfordert, dass Firmen eine Infrastruktur und Betriebsmittel bereitstellen, um die Datenbank in einem Datenzentrum zu managen. Das Management einer herkömmlichen Datenbank kann sehr teuer sein und erfordert eine Aufsicht durch mehrere Personen, die einen großen Bereich technischer Fähigkeiten besitzen. Herkömmliche relationale Datenbankmanagementsysteme (RDMS) erfordern umfangreiche Rechen- und Speicherbetriebsmittel und weisen eine beschränkte Skalierbarkeit auf. Große Datenmengen können über mehrere Recheneinrichtungen gespeichert werden. Ein Server kann die Daten derart managen, dass sie für Kunden mit lokalem Betrieb zugänglich sind. Wenn eine Einheit einen eigenen Datenbank-Server haben möchte, muss die Einheit wesentliche Betriebsmittel auf einen Kapitaleinsatz in Hardware und Infrastruktur für die Datenbank zusammen mit wesentlichem physischen Raum zum Aufnehmen der Datenbankinfrastruktur aufwenden. Ferner kann die Datenbank sehr empfindlich für Datenverlust während eines Stromausfalls oder weiteren Katastrophensituationen sein. Derartige herkömmliche Datenbanksysteme besitzen wesentliche Nachteile, die durch ein cloudbasiertes Datenbanksystem abgeschwächt werden können.
  • Ein Cloud-Datenbanksystem kann durch eine Cloud-Plattform bereitgestellt und ausgeliefert werden, die Organisationen und Endanwendern ermöglicht, Daten aus der Cloud zu speichern, zu managen und abzurufen. Einige Cloud-Datenbanksysteme enthalten eine herkömmliche Datenbankarchitektur, die durch die Installation von Datenbanksoftware zusätzlich zu einer Rechen-Cloud implementiert wird. Auf die Datenbank kann durch einen Internet-Browser oder eine Anwendungsprogrammierschnittstelle (API) zur Anwendung und Dienstintegration zugegriffen werden. Einige Cloud-Datenbanksysteme werden durch einen Anbieter betrieben, der nachgeschaltete Prozesse von Datenbankinstallations-, Bereitstellungs- und Betriebsmittelzuweisungsaufgaben im Namen eines Clients direkt managt. Der Client kann mehrere Endanwender, die auf die Datenbank zugreifen, in Form eines Internet-Browsers und/oder einer API besitzen. Cloud-Datenbanken können einigen Clients wesentliche Vorteile bieten, indem sie das Risiko des Verlierens von Datenbankdaten mildern und Ermöglichen, dass durch mehrere Anwender über mehrere geographische Bereiche auf die Daten zugegriffen wird.
  • Es existieren mehrere Architekturen für herkömmliche Datenbanksysteme und Cloud-Datenbanksysteme. Eine Beispielarchitektur ist ein System mit gemeinsam genutztem Datenträger. In dem System mit gemeinsam genutztem Datenträger sind alle Daten in einer gemeinsam verwendeten Speichereinrichtung gespeichert, die von allen Verarbeitungsknoten in einem Datencluster zugänglich ist. In diesem Typ eines Systems werden alle Datenänderungen gemeinsam zur verwendeten Speichereinrichtung geschrieben, um sicherzustellen, dass alle Verarbeitungsknoten im Daten-Cluster auf eine konsistente Version der Daten zugreifen. Wenn die Anzahl von Verarbeitungsknoten in einem System mit gemeinsam genutztem Datenträger zunimmt, wird die gemeinsam verwendete Speichereinrichtung (und die Kommunikationsanbindungen zwischen den Verarbeitungsknoten und der gemeinsam verwendeten Speichereinrichtung) ein Engpass, der Datenlese- und Datenschreiboperationen verlangsamt. Dieser Engpass wird durch das Hinzufügen weiterer Verarbeitungsknoten weiter verstärkt. Somit besitzen existierende Systeme mit gemeinsam genutzten Datenträgern aufgrund dieses Engpassproblems eine beschränkte Skalierbarkeit.
  • In einigen Fällen kann es vorteilhaft sein, auf zusätzliche Daten zuzugreifen, die außerhalb einer Zentral- oder Hauptdatenbank gespeichert sind. In einem Beispiel kann ein Datenbankanwender seine Daten in seinen eigenen internen Systemen und/oder einem cloudbasierten Datenbankkonto speichern. Der Datenbankanwender kann wünschen, auf seine eigenen Daten zuzugreifen, und kann auch wünschen, auf zusätzliche Daten zuzugreifen, die nicht in den internen Systemen und/oder dem cloudbasierten Datenbankkonto des Datenbankanwenders gespeichert sind. Diese zusätzlichen Daten können als externe Daten bezeichnet werden. In einigen Fällen kann der Datenbankanwender davon profitieren, seine eigenen Daten und die externen Daten hintereinander abzufragen oder seine eigenen Daten und die externen Daten zu vergleichen oder seine eigenen Daten gemäß Änderungen, die an den externen Daten vorgenommen wurden, zu modifizieren, usw. Die externen Daten können in einer oder mehreren externen Tabellen gespeichert sein. Eine externe Tabelle repräsentiert Inhalt, der durch die Datenbank nicht direkt gemanagt wird. Es existieren einige Datenbankstrukturen und Dateiformate, die geschaffen sind, um Abfrageantwortzeiten zu beschleunigen und/oder die Rechenlast zum Ausführen einer Datenbankabfrage zu verringern. Eine derartige Datenbankstruktur ist eine materialisierte Ansicht. Materialisierte Ansichten verbessern die Leistungsfähigkeit teurer Datenbankabfragen durch Materialisieren und Wiederverwenden gemeinsamer Zwischenabfrageergebnisse in einer Arbeitslast. Eine materialisierte Ansicht ist ein Datenbankobjekt, das die Ergebnisse einer Datenbankabfrage enthält und die Leistungsfähigkeit von Datenbankabfragen durch Zwischenspeichern der Ergebnisse der Abfrage verbessern kann. Es kann teuer sein, materialisierte Ansichten zu aktualisieren und zu führen, derart, dass eine effiziente Verwendung materialisierter Ansichten schwer zu erreichen sein kann.
  • Hier werden Systeme, Verfahren und Einrichtungen zum Führen, Aktualisieren und Abfragen über externe Tabellen in Datenbanksystemen offenbart. Ferner werden sind Systeme, Verfahren und Einrichtungen zum Erzeugen und Aktualisieren materialisierter Ansichten über externe Tabellen in Datenbanksystemen offenbart.
  • Figurenliste
  • Unter Bezugnahme auf die folgenden Figuren werden nicht einschränkende und nicht vollständige Implementierungen der vorliegenden Offenbarung beschrieben, wobei sich im Verlauf der verschiedenen Ansichten ähnliche Bezugszeichen auf ähnliche oder gleichartige Teile beziehen, sofern es nicht anders angegeben ist. Vorteile der vorliegenden Offenbarung werden unter Bezugnahme auf die folgende Beschreibung und die folgenden begleitenden Zeichnungen besser verständlich; es zeigen:
    • 1 ein schematisches Blockdiagramm, das ein System zum Erzeugen einer materialisierten Ansicht an einer externen Tabelle gemäß einer Ausführungsform veranschaulicht;
    • 2 ein schematisches Blockdiagramm, das einen Prozessablauf, der einen externen Datenmanager umfasst, gemäß einer Ausführungsform veranschaulicht;
    • 3 ein schematisches Diagramm einer Datenverarbeitungsplattform gemäß einer Ausführungsform;
    • 4 ein Blockdiagramm eines Betriebsmittelmanagers gemäß einer Ausführungsform;
    • 5 ein Blockdiagramm einer Ausführungsplattform gemäß einer Ausführungsform;
    • 6 ein Blockdiagramm eines externen Datenmanagers gemäß einer Ausführungsform;
    • 7 ein Blockdiagramm eines Prozessablaufs zum Abfragen über eine externe Tabelle gemäß einer Ausführungsform;
    • 8 ein Blockdiagramm eines Prozessablaufs zum inkrementellen Aktualisieren einer materialisierten Ansicht gemäß einer Ausführungsform;
    • 9 ein Blockdiagramm eines Prozessablaufs zum Aktualisieren einer materialisierten Ansicht über eine externe Tabelle gemäß einer Ausführungsform;
    • 10 ein schematisches Diagramm einer Datenstruktur zum Speichern von Daten und Metadaten in einem Datenbanksystem gemäß einer Ausführungsform;
    • 11A-11C schematische Diagramme einer Datenstruktur zum Versionieren und Aktualisieren von Daten und Metadaten in einem Datenbanksystem gemäß einer Ausführungsform;
    • 12 ein schematisches Ablaufplandiagramm eines Verfahrens zum automatischen Führen einer externen Tabelle in einem Datenbanksystem gemäß einer Ausführungsform;
    • 13 ein schematisches Ablaufplandiagramm eines Verfahrens zum Definieren einer externen Tabelle in einem Datenbanksystem gemäß einer Ausführungsform;
    • 14 ein schematisches Ablaufplandiagramm eines Verfahrens zum Abfragen einer externen Tabelle in einem Datenbanksystem gemäß einer Ausführungsform;
    • 15 ein schematisches Ablaufplandiagramm eines Verfahrens zum Erzeugen einer materialisierten Ansicht über eine externe Tabelle in einem Datenbanksystem gemäß einer Ausführungsform;
    • 16 ein schematisches Ablaufplandiagramm eines Verfahrens zum Abfragen einer externen Tabelle in einem Datenbanksystem gemäß einer Ausführungsform; und
    • 17 ein schematisches Diagramm einer Beispielrecheneinrichtung gemäß einer Ausführungsform.
  • GENAUE BESCHREIBUNG
  • Die Systeme, Verfahren und Einrichtungen der Offenbarung sind auf externe Tabellen in Datenbanksystemen gerichtet. In einer Ausführungsform enthält ein Datenbanksystem eine mandantenfähige und cloudbasierte Datenbankplattform, die einem Client (d. h. einem Konto, das der Datenbankplattform zugeordnet ist) ermöglicht, Daten in die Datenbankplattform aufzunehmen, Daten in der Datenbankplattform zu speichern und die Daten in der Datenbankplattform abzufragen. In bestimmten Fällen kann ein Client der Datenbankplattform wünschen, Daten abzufragen oder zu analysieren, die außerhalb der Datenbankplattform gespeichert sind und durch die Datenbankplattform nicht direkt gemanagt werden. Derartige Daten können hier als „externe Daten“ oder eine „externe Tabelle“ bezeichnet werden.
  • In einer Ausführungsform dient die Datenbankplattform als ein Cloud-Datenlager. Daten können über gemeinsam verwendete Speichereinrichtungen der Datenbankplattform gespeichert sein und können durch die Datenbankplattform organisiert und gemanagt werden. In einer Ausführungsform können strukturierte Daten oder halbstrukturierte Daten in einen Datentopf, der mit der Datenbankplattform in Kommunikation ist, kopiert werden. Die Daten in den Datentöpfen können durch die Datenbankplattform aufgenommen und dann durch die Datenbankplattform organisiert und gemanagt werden. Der Client kann dann derartige Daten betrachten und abfragen.
  • Allerdings muss in einigen Fällen ein Client nicht wünschen, Daten in die Datenbankplattform aufzunehmen, oder kann wünschen, lediglich einen Abschnitt von Daten in die Datenbankplattform aufzunehmen. In einem derartigen Fall kann der Client stark davon profitieren, dass die Datenbankplattform externe Daten liest und Abfragen daran durchführt. Die externen Daten werden durch die Datenbankplattform nicht direkt gemanagt, jedoch kann die Datenbankplattform dennoch die externen Daten abfragen, Metadaten über die externen Daten erzeugen, materialisierte Ansichten über die externen Daten erzeugen, Änderungsverfolgungsinformationen über die externen Daten erzeugen usw.
  • In einer Ausführungsform ist der Datenbankplattform ein Datensee zugeordnet und lädt der Client neue Daten in den Datensee. Wenn Daten in den Datensee geladen werden oder wenn Daten im Datensee geändert oder aktualisiert werden, wird die Datenbankplattform benachrichtigt. Die Datenbankplattform erzeugt eine externe Tabelle auf der Grundlage der Datenbankplattform und erzeugt ferner Metadaten über die Daten und speichert sie in der externen Tabelle. Die Datenbankplattform kann materialisierte Ansichten auf der Grundlage der externen Tabelle erzeugen und/oder Anfragen über die externe Tabelle ausführen.
  • Die oben beschriebene Ausführungsform schafft wesentliche Vorteile für einen Client, der nicht wünscht, Daten in die Datenbankplattform aufzunehmen, jedoch dennoch wünscht, Operationen an den Daten unter Verwendung der Datenbankplattform durchzuführen. In einem Beispiel hat ein Client eine externe Datenspeicherplattform als seinen Datensee angewendet. In dem Beispiel ist die externe Datenspeicherplattform ein cloudbasierter Speicher, in den Daten, die Fotos, Videos, Dokumente, Tabellen und weitere Dateien enthalten, hochgeladen und gespeichert werden können. In einer Ausführungsform ist die externe Datenspeicherplattform ein Speicherdienst, der in einigen Fällen als ein „Datentopf“ bezeichnet wird. In dem Beispiel hat der Client die externe Datenspeicherplattform als seinen Datensee angewendet und wünscht die externe Datenspeicherplattform als seine einzige Quelle der Wahrheit für seine Daten zu berücksichtigen. Der Client wünscht nicht, jegliche Daten in die Datenbankplattform zu kopieren. Gemäß den Systemen, Verfahren und Einrichtungen, die hier beschrieben sind, kann der Client dennoch den Nutzen der Verwendung der Datenbankplattform genießen, ohne Daten in die Datenbankplattform aufzunehmen. Der Client kann auf der Grundlage einer Auswahl von Dateien im Datentopf oder auf der Grundlage aller Dateien im Datentopf eine externe Tabelle erstellen. Die externe Tabelle kann der Datenbankplattform in einer schreibgeschützten Weise bereitstellen, derart, dass die externe Tabelle durch die Datenbankplattform nicht gemanagt oder manipuliert wird. Gemäß den Ausführungsformen, die hier offenbart sind, kann der Client die Datenbankplattform verwenden, um Metadaten über Daten in der externen Tabelle zu erzeugen und zu aktualisieren, die externe Tabelle abzufragen und materialisierte Ansichten über die externe Tabelle erzeugen.
  • In einem weiteren Beispiel wünscht ein Client, eine Mischung externer und interner Daten in Bezug auf die Datenbankplattform zu verwenden. Der Client kann wünschen, einen ersten Abschnitt seiner Daten in einem Datentopf mit einer externen Datenspeicherplattform zu speichern, derart, dass der Datentopf als der Datensee des Clients für den ersten Abschnitt seiner Daten dient. Der Client kann wünschen, Rohdaten wie z. B. Bilder, Videos, nicht partitionierte Tabellen und weitere Dateien in den Datentopf (der als der Datensee des Clients dient) zu speichern. Der Client kann auch wünschen, einen zweiten Abschnitt seiner Daten bei der Datenbankplattform zu speichern, derart, dass die Datenbankplattform als das Datenlager des Clients dient. Die Daten, die im Datenlager gespeichert sind (d. h. durch die Datenbankplattform gemanagt werden), sind derart zusammengestellt und organisiert, dass sie ein stark granulares Abfragen, eine anspruchsvolle Änderungsverfolgung und eine fein abgestimmte Analytik ermöglichen. In dem Beispiel kann der Client aus mehreren Gründen motiviert sein, seine Daten an zwei Orten zu speichern. Ein derartiger Grund ist, dass der Client Programme oder Anwendungen betreiben kann, die bevorzugen, auf Daten aus dem Datensee statt einem Datenlager zuzugreifen, oder muss in einigen Fällen nicht in der Lage sein, auf Daten von einem Datenlager zuzugreifen. Ein weiterer Grund kann sein, dass die Rohdaten, die im Datentopf gespeichert sind, nicht durch die Datenbankplattform verarbeitet werden können. Ein weiterer derartiger Grund kann sein, dass einige Typen von Daten (z. B. Anwendungsprotokolle datenbasierter Ereignisse oder Aktionen in einem System, einem Netz oder einer Informationstechnikumgebung) häufig erzeugt und selten analysiert werden. Der Client kann feststellen, dass es unwirtschaftlich ist, eine Datenaufnahme-Pipeline mit dem Datenbanklager für Anwendungsprotokolle oder weitere Daten aufrechtzuhalten, die unwahrscheinlich häufig abgefragt wird. Ein weiterer Grund kann sein, dass der Client aus Sicherheitsgründen nicht wünscht, dass bestimmte Daten außerhalb seiner virtuellen privaten Cloud liegen. Ein weiterer Grund kann sein, dass der Client erfordert, dass bestimmte Datensätze nach einer eingestellten Zeitspanne ablaufen, und es kann herausfordernd sein, diese Datensätze aus dem Datenbanklager zu bereinigen. Ein weiterer Grund kann sein, dass der Client wünscht, ein offenes Dateiformat wie z. B. Apache-Parquet zu verwenden, derart, dass die Daten ohne den Bedarf, auf ein Datenlager zuzugreifen, weiteren Anwendungen direkt zugänglich sind.
  • Die oben beschriebenen Beispiele veranschaulichen den Nutzen der Systeme, Verfahren und Einrichtungen, die hier beschrieben sind, zum Führen und Abfragen an einer externen Tabelle. Die beschriebenen Systeme, Verfahren und Einrichtungen ermöglichen einer Datenbankplattform, Metadaten über externe Daten zu erzeugen, die außerhalb der Datenbankplattform gespeichert sind und nicht durch die Datenbankplattform gemanagt werden. Zusätzlich ermöglichen die Systeme, Verfahren und Einrichtungen, die hier beschrieben sind, der Datenbankplattform, die externen Daten auf der Grundlage von Metadaten, die intern bei der Datenbankplattform gespeichert sind, abzufragen. Zusätzlich ermöglichen die beschriebenen Systeme, Verfahren und Einrichtungen, die hier beschrieben sind, einer Datenbankplattform, materialisierte Ansichten über die externen Daten zu erzeugen und diese materialisierten Ansichten in Reaktion auf Änderungen der externen Daten zu aktualisieren.
  • In einer Ausführungsform wird ein Verfahren zum Führen einer externen Tabelle in einem Datenbanksystem offenbart. Das Verfahren umfasst ein Empfangen durch eine Datenbankplattform eines Lesezugriffs auf Inhalt, der in einer Datenspeicherplattform, die von der Datenbankplattform getrennt ist, gespeichert ist. Das Verfahren umfasst ein Definieren einer externen Tabelle auf der Grundlage des Inhalts, der in der Datenspeicherplattform gespeichert ist. Das Verfahren umfasst ein Verbinden der Datenbankplattform mit der externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das Verfahren umfasst ein Erzeugen von Metadaten für die externe Tabelle, wobei die Metadaten Informationen über Daten umfassen, die in der externen Tabelle gespeichert sind. Das Verfahren umfasst ein Empfangen einer Benachrichtigung, dass eine Änderung am Inhalt der Datenspeicherplattform vorgenommen wurde, wobei die Änderung ein Einsetzen und/oder ein Löschen und/oder ein Aktualisieren umfasst. Das Verfahren umfasst ein Aktualisieren der Metadaten für die externe Tabelle in Reaktion darauf, dass die Änderung am Inhalt der Datenspeicherplattform vorgenommen wurde.
  • In einer Ausführungsform wird ein Verfahren zum Abfragen über einer externen Tabelle offenbart. Das Verfahren umfasst ein Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das Verfahren umfasst ein Empfangen einer Abfrage, wobei die Abfrage mindestens auf Daten in der externen Tabelle gerichtet ist. Das Verfahren umfasst ein Bestimmen auf der Grundlage von Metadaten einer oder mehrerer Dateien in der externen Tabelle, die Daten enthalten, die das Prädikat erfüllen. Das Verfahren umfasst ein Beschneiden auf der Grundlage der Metadaten aller Dateien in der externen Tabelle, die keine Daten enthalten, die die Abfrage erfüllen. Das Verfahren umfasst ein Erzeugen eines Abfrageplans, der mehrere einzelne Unteraufgaben umfasst. Das Verfahren umfasst ein Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform.
  • In einer Ausführungsform ist ein Verfahren zum Erzeugen einer materialisierten Ansicht über eine externe Tabelle offenbart. Das Verfahren umfasst ein Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das Verfahren umfasst ein Erzeugen durch die Datenbankplattform einer materialisierten Ansicht über die externe Tabelle. Das Verfahren umfasst ein Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde, wobei die Änderung umfasst, dass ein oder mehrere neue Datenelemente zur externen Tabelle hinzugefügt werden oder vorhandene Daten in der externen Tabelle gelöscht oder geändert werden. Das Verfahren umfasst in Reaktion darauf, dass die externe Tabelle geändert wurde, ein Aktualisieren der materialisierten Ansicht derart, dass die materialisierte Ansicht eine genaue Repräsentation der externen Tabelle umfasst.
  • Ein Client einer Datenbankplattform kann wünschen, Daten in einem Datenlager und/oder einem Datensee zu speichern. Ein Datensee ist eine Speicherablage, die eine gewaltige Menge von Rohdaten in ihrem nativen Format halten kann. Ein Datensee kann als ein einzelner Speicher aller Daten für einen Client, die von Rohdaten (die eine genaue Kopie von Quellsystemdaten sein können) zu umgewandelten Daten reichen, dienen. Die umgewandelten Daten können zum Berichten, zur Analyse, zur Visualisierung, zum maschinellen Lernen usw. verwendet werden. Ein Datensee kann zum Speichern einer großen Summe von Daten geeignet sein, die möglicherweise nie in ein Datenlager gelangen, in dem sie gemanagt, zusammengestellt und abgefragt werden. Datenseen können nicht gereinigte Rohdaten speichern und können optimiert werden, um dem Client zu erlauben, Daten in einem beliebigen Format hochzuladen, das für den Client günstig ist. In einigen Implementierungen stellen Datenseen eine Datei- und Dateisystemabstraktion dar, die einem großen Satz von Anwendungen ermöglicht, an den Daten zu arbeiten.
  • Ein Datenlager kann bereinigte Daten in definierten Formaten speichern. Die Daten in einem Datenlager können zur Analytik organisiert und optimiert sein, um stark granulare Abfragen und weitere Prozesse zu ermöglichen. Datenlager können relationale Schemas und mehrere eingeschränkte Verarbeitungsmodi enthalten, damit weniger Anwendungen, die an Daten, die in einem Datenlager gespeichert sind, arbeiten können, in Bezug auf Daten, die in einem Datensee gespeichert sind, vorliegen.
  • In einigen Fällen kann ein Datenlager zu führen teuer sein. Der Client der Datenbankplattform kann wünschen, einen Großteil seiner Daten in einem Datensee zu speichern und lediglich zusammengestellte und umgewandelte Daten in einem Datenlager zu speichern. Ausführungsformen der vorliegenden Offenbarung ermöglichen dem Client, seine Daten über einen Datensee und ein Datenlager zu speichern. Zusätzlich ermöglichen Ausführungsformen der Offenbarung dem Client, seine Daten in einem Datensee zu speichern, und ermöglichen dennoch der Datenbankplattform, die Daten im Datensee abzufragen und zu analysieren.
  • In einigen Fällen kann es wünschenswert sein, eine oder mehrere materialisierte Ansichten über eine externe Tabelle zu erzeugen. Dies kann besonders vorteilhaft sein, wenn ein Client wünscht, Daten in der externen Tabelle abzufragen, die außen einer Datenbankplattform gespeichert ist und nicht durch die Datenbankplattform gemanagt wird. Weil die externen Daten nicht gemanagt durch die Datenbankplattform werden, kann es besonders schwierig oder unwirtschaftlich sein, auf die externen Daten zuzugreifen und/oder sie zu lesen. Eine materialisierte Ansicht ist ein Datenbankobjekt, das die Ergebnisse einer Abfrage enthält. Eine materialisierte Ansicht kann eine lokale Kopie von Daten sein, die entfernt verortet ist, oder kann eine Untermenge der Zeilen und/oder der Spalten einer Tabelle oder eines Verbindungsergebnisses sein oder kann eine Zusammenfassung unter Verwendung einer Zusammenfassungsfunktion enthalten. Der Prozess des Erzeugens einer materialisierten Ansicht kann als Materialisierung bezeichnet werden. Eine Materialisierung ist eine Form des Zwischenspeicherns der Ergebnisse einer Abfrage in eine konkrete „materialisierte“ Tabelle, die auf der Grundlage von Änderungen, die an der ursprünglichen Basistabelle vorgenommen werden (in diesem Fall ist die Basistabelle die externe Tabelle), aktualisiert werden kann. Die materialisierte Ansicht ermöglicht einen effizienten Zugriff und verringert die Zeitspanne und die Rechenbetriebsmittel, die erforderlich sind, um auf eine Abfrage zu antworten. Wenn dieselben Abfrageparameter erneut angefordert werden, kann die materialisierte Ansicht statt der Basistabelle (d. h. der externen Tabelle) referenziert werden. Die materialisierte Ansicht wird durch die Datenbankplattform gemanagt und kann schneller und effizienter gelesen werden als der externe Speicher, in dem die externe Tabelle verortet ist.
  • In einem Beispiel wünscht ein Client, alle Daten in einem Datensee zu führen, der außerhalb einer Datenbankplattform liegt. Der Client wünscht, die Datenbankplattform zu verwenden, die Daten, die im Datensee gespeichert sind, zu analysieren und abzufragen. Die Datenbankplattform managt den Datensee nicht. Gemäß den Systemen, Verfahren und Einrichtungen, die hier offenbart sind, kann der Client eine externe Tabelle erstellen, die im Datensee gespeichert ist, und für die Datenbankplattform zugänglich ist. Die Datenbankplattform kann eine oder mehrere materialisierte Ansichten über die externe Tabelle erzeugen, derart, dass die eine oder die mehreren materialisierten Ansichten durch die Datenbankplattform gespeichert, gemanagt und aktualisiert werden. Wenn der Client eine Abfrageanforderung zur Datenbankplattform sendet, kann die Datenbankplattform durch Lesen der externen Tabelle direkt aus dem Datensee auf die Abfrage antworten. Allerdings kann die Datenbankplattform, um die Zeitspanne und die Verarbeitungsbetriebsmittel, die erforderlich sind, um auf die Abfrage zu antworten, zu verringern, stattdessen unter Bezugnahme auf die eine oder die mehreren materialisierten Ansichten, die über die externe Tabelle erzeugt werden, auf die Abfrage antworten.
  • In einer Ausführungsform und zusätzlich zum oben beschriebenen Beispiel antwortet die Datenbankplattform auf die Abfrage durch Bezugnahme auf Metadaten über die externe Tabelle. Die Metadaten werden durch die Datenbankplattform erzeugt, geführt, gespeichert und aktualisiert. Die Metadaten sind Informationen über die Daten in der externen Tabelle. Die Metadaten enthalten Informationen darüber, wie die Daten in der externen Tabelle gespeichert sind. In einer Ausführungsform können die Daten in der externen Tabelle (die in der externen Speicherplattform gespeichert ist) als eine Quellverzeichnishierarchie organisiert sein, wobei die Blätter der Hierarchie Dateien sind. Jedes Quellverzeichnis kann eine oder mehrere Dateien enthalten und das Quellverzeichnis kann als eine Partition in der externen Tabelle modelliert werden. Die externe Tabelle kann Millionen von Zeilen von Daten enthalten und kann sehr groß und schwierig zu speichern oder zu lesen sein. In einem Beispiel ist die externe Tabelle in sechs verschiedene Partitionen unterteilt und enthält jede der sechs Partitionen einen Abschnitt der Daten in der externen Tabelle. Ein Unterteilen der externen Tabellendaten in mehrere Partitionen hilft, die Daten zu organisieren und zu finden, wo bestimmte Daten in der Tabelle verortet sind.
  • Eine Analogie zu den Partitionen der externen Tabelle können verschiedene Lagergebäude in einem Lagerverbund sein. In der Analogie ist der Lagerverbund ähnlich der externen Tabelle und ist jedes getrennte Lagergebäude ähnlich einer Partition. Hunderttausende Elemente sind über den Lagerverbund hinweg gelagert. Weil sich so viele Elemente im Lagerverbund befinden, ist es nötig, die Elemente über die mehreren getrennten Lagergebäude zu organisieren. Die Elemente können über die mehreren getrennten Lagergebäude durch jegliche Mittel, die Sinn machen, organisiert werden. Zum Beispiel kann in einem Lagergebäude Kleidung gelagert sein, können in einem weiteren Lagergebäude Haushaltswaren gelagert sein, können in weiteren Lagergebäude Spielzeuge gelagert sein usw. Jedes Lagergebäude kann derart gekennzeichnet sein, dass die Elemente einfacher zu finden sind. Zum Beispiel weiß eine Person, wenn die Person einen Stoffbären finden möchte, dass sie zu dem Lagergebäude gehen muss, in dem die Spielzeuge gelagert sind. Das Lagergebäude, in dem die Spielzeuge gelagert sind, kann ferner in Regalzeilen organisiert sein. Das Spielzeuglagergebäude kann derart organisiert sein, dass alle Stofftiere sich in einer Regalzeile befinden. Deshalb kann die Person, die den Stoffbären sucht, wissen, das Gebäude zu besuchen, in dem Spielzeuge gelagert sind, und kann wissen, die Zeile zu besuchen, in der Stofftiere gelagert sind. Ferner kann hinsichtlich der Analogie zur Datenbanktechnologie jede Regalzeile im Lagergebäude des Lagerverbunds ähnlich einer Spalte von Datenbankdaten in einer Partition der externen Tabelle sein. Die Etiketten für jedes Lagergebäude und für jede Regalzeile sind ähnlich zu Metadaten in einem Datenbankkontext.
  • Ähnlich zur Analogie des Lagerverbunds können die Partitionen, die hier offenbart sind, erhebliche Vorteile zum Managen von Daten, Suchen von Daten und Organisieren von Daten bereitstellen. Jede Partition organisiert Daten in Zeilen und Spalten und speichert einen Abschnitt der Daten, die einer externen Tabelle (oder einer Datenbanktabelle, die durch die Datenbankplattform gespeichert und gemanagt wird) zugeordnet sind. Eine externe Tabelle oder eine interne Tabelle kann viele Partitionen besitzen. Das Partitionieren der Datenbankdaten unter den vielen Mikropartitionen kann in jeder Weise vorgenommen werden, die für diesen Datentyp Sinn macht. Zum Beispiel kann, wenn der Datenbank-Client ein Kreditkartenanbieter ist und die Daten Kreditkartentransaktionen sind, die Tabelle Spalten wie z. B. Kreditkartennummer, Kontoelementname, Händlername, Datum einer Kartentransaktion, Zeit einer Kartentransaktion, Typ von Waren oder Diensten, die mit einer Karte erworben wurden, usw. enthalten. Die Tabelle kann in einem Datensee oder einem Datenlager gespeichert sein, der bzw. das zum Datenbankanbieter extern ist und nicht durch den Datenbankanbieter gemanagt oder aktualisiert wird. Die Tabelle kann Millionen von Kreditkartentransaktionen enthalten, die einen wesentlichen Zeitraum umfassen, und jede Kreditkartentransaktion kann in einer Zeile der Tabelle gespeichert sein. Weil die Tabelle vielen Millionen Zeilen enthält, kann die Tabelle in Partitionen unterteilt sein. Im Falle von Kreditkartentransaktionen kann es vorteilhaft sein, die Tabelle auf der Grundlage der Zeit zu teilen. Zum Beispiel kann jede Partition einen Tag oder eine Woche von Kreditkartentransaktionen repräsentieren. Es ist zu bedenken, dass die Tabelle durch jegliche Mittel in Partitionen unterteilt werden kann, die für den Datenbank-Client und für den Datentyp, der in der Tabelle gespeichert ist, Sinn machen. Die Partitionen stellen wesentliche Vorteile zum Managen des Speichers der Millionen Zeilen von Daten in der Tabelle und zum Suchen bestimmter Informationen in der Tabelle bereit.
  • Eine Abfrage kann ausgeführt an einer externen oder einer internen Tabelle ausgeführt werden, um bestimmte Informationen in der Tabelle zu suchen. Ferner kann hinsichtlich des oben beschriebenen Beispiels der Kreditkartentransaktionen eine Abfrage danach streben, alle Transaktionen für einen bestimmten Anbieter über einen bestimmten Zeitraum zu finden. Zum Beispiel kann ein Client (in diesem Beispiel der Kreditkartenanbieter) eine Abfrage zum Datenbankanbieter senden und um einen Bericht aller Kredittransaktionen bitten, die im Einzelhandelsgeschäft A in den Monaten Januar, April und Mai aufgetreten sind. In dem Beispiel sind diese Kreditkartentransaktionen in einer externen Tabelle gespeichert, die nicht durch die Datenbankplattform gemanagt oder aktualisiert wird. Um die Abfrage zu beantworten, muss ein Betriebsmittelmanager (siehe 302) der Datenbankplattform die externe Tabelle durchsuchen, um jede der zutreffenden Kreditkartentransaktionen zu finden. Die externe Tabelle kann Millionen und Abermillionen von Zeilen enthalten und ein Durchsuchen der gesamten externen Tabelle durch den Betriebsmittelmanager wäre sehr zeitaufwändig und würde erhebliche Rechenbetriebsmittel erfordern. Die Partitionsorganisation zusammen mit den Systemen, Verfahren und Einrichtungen zur Speicherung von Metadaten externer Tabellen, die hier offenbart werden, schaffen wesentliche Vorteile durch Verkürzen der Abfrageantwortzeit und Verringern der Menge von Rechenbetriebsmitteln, die zum Beantworten der Abfrage erforderlich sind.
  • Ferner muss bezüglich des oben beschriebenen Beispiels der Betriebsmittelmanager auf die Abfrage, die alle Kreditkartentransaktionen im Einzelhandelsgeschäft A in den Monaten Januar, April und Mai angefordert hat, antworten. Die Kreditkartentransaktionen sind in einer externen Tabelle gespeichert, die nicht durch die Datenbankplattform oder den Betriebsmittelmanager gemanagt oder aktualisiert wird. Der Betriebsmittelmanager kann die Zellen von Daten durch Durchsuchen von Metadaten externer Tabellen finden. Die Metadaten externer Tabellen enthalten Informationen über die Daten, die in der externen Tabelle gespeichert sind, jedoch werden die Metadaten externer Tabellen durch die Datenbankplattform erzeugt, gespeichert und aktualisiert und werden als „intern“ bezüglich der Datenbankplattform erachtet. Die mehrstufigen Datenbankmetadaten, die hier beschrieben sind (siehe z. B. 10), ermöglichen dem Betriebsmittelmanager, die korrekten Daten, um auf die Abfrage zu antworten, schnell und effizient zu finden. Der Betriebsmittelmanager kann die korrekte Tabelle durch Durchsuchen kumulierter Tabellenmetadaten (siehe 1002) über alle der mehreren Tabellen in der Datenbank des Clients finden. Der Betriebsmittelmanager kann eine korrekte Gruppierung von Partitionen durch Durchsuchen mehrerer Gruppierungsausdruckseigenschaften (siehe 1014a-1014d) über die identifizierte Tabelle finden. Die Gruppierungsausdruckseigenschaften enthalten Informationen über Daten, die jeweils in den Partitionen in der Gruppierung gespeichert sind. Der Betriebsmittelmanager kann eine korrekte Partition durch Durchsuchen mehrerer Partitionsausdruckseigenschaften in der identifizierten Gruppierung von Partitionen finden. Der Betriebsmittelmanager kann eine korrekte Spalte durch Durchsuchen einer oder mehrerer Spaltenausdruckeigenschaften in der identifizierten Partition finden. Der Betriebsmittelmanager kann die eine oder die mehreren korrekten Zeilen durch Durchsuchen der identifizierten Spalte in der identifizierten Partition finden. Ferner kann, hinsichtlich des Beispiels, das die Kreditkartentransaktionen einbezieht, der Betriebsmittelmanager mehrere kumulierte Tabellenmetadaten durchsuchen, um eine Tabelle zu finden, die Kreditkartentransaktionen enthält. Der Betriebsmittelmanager kann die Gruppierungsausdruckseigenschaften durchsuchen, um Gruppierungen zu finden, die Daten für die Monate Januar, April und/oder Mai aufweisen. Zum Beispiel findet der Betriebsmittelmanager eine Gruppierung, die Kreditkartentransaktionen für den Monat Januar enthält (und ferner Transaktionen für weitere Monate enthalten kann). Der Betriebsmittelmanager liest die Partitionsausdruckseigenschaften für diese Gruppierung, um eine oder mehrere einzelne Partitionen zu finden, die Transaktionen für den Monat Januar enthalten. Der Betriebsmittelmanager liest Spaltenausdruckeigenschaften in jeder der identifizierten einzelnen Partitionen. Der Betriebsmittelmanager tastet die identifizierten Spalten ab, um zu die Anwendungszeilen finden, die eine Kreditkartentransaktion für das Einzelhandelsgeschäft A im Monat Januar (oder April oder Mai) aufweisen. Die Metadaten weisen den Betriebsmittelmanager zur korrekten externen Tabelle und zur korrekten Partition der externen Tabelle. Die Metadaten können ferner den Betriebsmittelmanager zu den korrekten Zeilen dieser Partition der externen Tabelle weisen. Durch Durchsuchen der Metadaten, die in der Datenbankplattform gespeichert sind, kann der Betriebsmittelmanager schnell finden, wo die korrekten Daten in der externen Tabelle gespeichert sind.
  • Wie in dem oben beschriebenen Beispiel veranschaulicht ist, schafft die Metadatenorganisation, die hier offenbart ist, wesentliche Vorteile, um die Abfrageantwortzeit zu beschleunigen, und ermöglicht dem Betriebsmittelmanager, die korrekte externe Tabelle, die korrekte Partition in der externen Tabelle und die korrekten Spalten und Zeilen in der externen Tabelle schnell zu identifizieren, um schnell auf eine Abfrage zu antworten. Der neuartige Metadatenspeicher, der hier offenbart ist, schafft eine mehrstufige Metadatenstruktur zum Führen von Informationen über Partitionen in einer externen Tabelle.
  • Bevor die Verfahren, Systeme und Einrichtungen, damit eine Datenbankplattform Operationen über eine externe Tabelle durchführen kann, offenbart und beschrieben werden, versteht sich, dass diese Offenbarung nicht auf die Konfigurationen, Prozessschritte und Materialien, die hier offenbart sind, beschränkt ist, da derartige Konfigurationen, Prozessschritte und Materialien etwas variieren können. Es versteht sich außerdem, dass die Terminologie, die hier eingesetzt wird, lediglich zum Beschreiben von Implementierungen verwendet wird und nicht vorgesehen ist, einschränkend zu sein, da der Umfang der Offenbarung lediglich durch die beigefügten Ansprüche und ihre Entsprechungen beschränkt ist.
  • Um weiteren Hintergrund zu den Offenbarungen, die hier bereitgestellt sind, bereitzustellen, ist eine Tabelle (die eine externe Tabelle oder eine interne Datenbanktabelle enthält), eine Sammlung in Beziehung stehender Daten, die in einem strukturierten Format gehalten werden, und kann Spalten und Zeilen enthalten. Eine Tabelle kann in Reaktion auf eine Datenmanipulationsanweisung (DML-Anweisung) wie z. B. eine Einsetzanweisung, eine Löschanweisung, eine Aktualisierungsanweisung, eine Zusammenführanweisung, usw. verändert werden. Derartige Änderungen können als eine Transaktion bezeichnet werden, die an der Tabelle auftrat. In einer Ausführungsform enthält jede Transaktion einen Zeitstempel, der angibt, wann die Transaktion empfangen wurde und/oder wann die Transaktion vollständig ausgeführt war. In einer Ausführungsform enthält eine Transaktion mehrere Änderungen, die an einer Tabelle vorgenommen wurden, und derartige Änderungen können sich auf eine oder mehrere Partitionen in der Tabelle auswirken. In einer Ausführungsform können Daten kontinuierlich aufgenommen werden oder können in bestimmten Zeitintervallen aufgenommen werden und die Aufnahme von Daten in die Tabelle ist eine Transaktion, die an der Tabelle auftritt. In einer Ausführungsform wird jedes Mal, wenn eine Transaktion an der Tabelle ausgeführt wird, eine neue Tabellenversion erzeugt, die eine oder mehrere neue Partitionen enthält. Ferner müssen möglicherweise jedes Mal, wenn eine Transaktion an der Tabelle ausgeführt wird, oder nachdem eine Schwellenwertanzahl von Transaktionen an der Tabelle ausgeführt wurde, die Metadaten für die Tabelle aktualisiert werden, um die neuen oder aktualisierte Daten, die in der Tabelle gespeichert sind, widerzuspiegeln.
  • Eine Tabelle kann Daten in mehreren Partitionen speichern, wobei die Partitionen unveränderliche Speichereinrichtungen sind. Wenn eine Transaktion an einer derartigen Tabelle ausgeführt wird, werden alle beeinflussten Partitionen neu erstellt, um neue Partitionen zu erzeugen, die die Änderungen der Transaktion widerspiegeln. Nachdem eine Transaktion vollständig ausgeführt worden ist, kann dann jede ursprüngliche Partition, die neu erstellt wurde, aus der Datenbank entfernt werden. Nach jeder Transaktion, die an der Tabelle ausgeführt worden ist, wird eine neue Version der Tabelle erzeugt. Die Tabelle kann über einen Zeitraum viele Versionen durchlaufen, wenn die Daten in der Tabelle viele Änderungen wie z. B. Einsetz-, Lösch-, Aktualisierungs- und/oder Zusammenführvorgänge erfahren. Jede Version der Tabelle kann Metadaten enthalten, die angeben, welche Transaktion die Tabelle erzeugt hat, wann die Transaktion angeordnet wurde, wann die Transaktion vollständig ausgeführt war und wie die Transaktion eine oder mehrere Zeilen in der Tabelle verändert hat. Die offenbarten Systeme, Verfahren und Einrichtungen zur kostengünstigen Tabellenversionierung können wirksam eingesetzt werden, um ein wirksames Mittel zu schaffen, um Tabellenmetadaten zu aktualisieren, nachdem eine oder mehrere Änderungen (Transaktionen) an der Tabelle aufgetreten sind. Derartige Systeme, Verfahren und Einrichtungen können implementiert werden, um Metadaten zu erzeugen, die in einer Datenbankplattform gespeichert sind, wobei die Metadaten Informationen über Daten enthalten, die in einer externen Tabelle, die nicht durch die Datenbankplattform gemanagt oder aktualisiert wird, gespeichert sind.
  • In einen Ausführungsform werden Metadaten in nicht veränderlichen Speicherdiensten (die hier als Mikropartitionen bezeichnet werden können) in der Cloud gespeichert und geführt. Diese Speicherdienste können z. B. Amazon S3 ®, Microsoft Azure Blob Storage ® und Google Cloud Storage ® enthalten. Viele dieser Dienste ermöglichen nicht, Daten direkt zu aktualisieren (d. h., sind nicht veränderlich oder unveränderlich). Datenmikropartitionen können lediglich hinzugefügt oder gelöscht, jedoch nie aktualisiert werden. In einer Ausführungsform erfordert ein Speichern und Führen von Metadaten in diesen Diensten, dass für jede Änderung an Metadaten, eine Metadatenpartition zum Speicherdienst hinzugefügt wird. Diese Metadatenmikropartitionen können im Hintergrund regelmäßig in größere „verdichtete“ oder konsolidierte Metadatenmikropartitionen konsolidiert werden.
  • In einer Ausführungsform werden alle Daten in Tabellen in eine unveränderliche Speichereinrichtung, die als eine Mikropartition bezeichnet wird, automatisch unterteilt. Die Mikropartition kann als eine Chargeneinheit betrachtet werden, wobei jede Partition zusammenhängende Speichereinheiten besitzt. Beispielhaft kann jede Mikropartition zwischen 50 MB und 500 MB unkomprimierter Daten enthalten (es ist festzuhalten, dass die tatsächliche Größe im Speicher kleiner sein kann, weil Daten komprimiert gespeichert werden können). Gruppen von Zeilen in Tabellen können in einzelne Partitionen abgebildet werden, die in einer säulenförmigen Weise organisiert sind. Diese Größe und Struktur ermöglichen eine extrem granulare Auswahl der Partitionen, die durchsucht werden sollen, die aus Millionen oder selbst hunderten Millionen Mikropartitionen bestehen können. Dieser granulare Auswahlprozess kann hier als „Beschneiden“ auf der Grundlage von Metadaten bezeichnet werden. Das Beschneiden umfasst ein Verwenden von Metadaten, um zu bestimmen, welche Abschnitte einer Tabelle, die Mikropartitionen oder Mikropartitionsgruppierungen in der Tabelle enthalten, für eine Abfrage nicht relevant sind und dann ein Vermeiden dieser nicht relevanten Mikropartitionen, wenn auf die Abfrage geantwortet wird, und lediglich die relevanten Mikropartitionen zu durchsuchen, um auf die Abfrage zu antworten. Metadaten können über alle Zeilen, die in einer Mikropartition gespeichert sind, automatisch gesammelt werden und enthalten Folgendes: den Bereich von Werten für jede der Spalten in der Mikropartition; die Anzahl verschiedener Werte und/oder zusätzliche Eigenschaften, die sowohl zur Optimierung als auch zur effizienten Abfrageverarbeitung verwendet werden. In einer Ausführungsform kann ein Partitionieren an allen Tabellen automatisch durchgeführt werden. Zum Beispiel können Tabellen unter Verwendung der Reihenfolge, die auftritt, wenn die Daten eingesetzt/geladen werden, transparent partitioniert werden.
  • Beim Beschreiben und Beanspruchen der Offenbarung wird die folgende Terminologie in Übereinstimmung mit den Definitionen, die unten dargelegt werden, verwendet.
  • Es ist festzuhalten, dass, wie in dieser Spezifikation und den beigefügten Ansprüchen verwendet, die Singularformen „ein“, „eine“ und „der/die/das“ Pluralreferenten enthalten, sofern es der Kontext nicht klar anders verlangt.
  • Wie hierin verwendet sind die Begriffe „umfassen“, „enthalten“, „einbinden“, „gekennzeichnet durch“ und ihre grammatikalischen Entsprechungen integrative oder unbegrenzte Begriffe, die zusätzliche nicht rezitierte Elemente oder Verfahrensschritte nicht ausschließen.
  • Wie hierin verwendet ist eine Datenbanktabelle eine Sammlung von Datensätzen (Zeilen). Jeder Datensatz enthält eine Sammlung von Werten von Tabellenmerkmale (Spalten). Datenbanktabellen sind typischerweise in mehreren kleineren Speichereinheiten (variierender Größe oder fester Größe), z. B. Dateien oder Blöcke, physisch gespeichert.
  • Eine genaue Beschreibung von Systemen und Verfahren im Einklang mit Ausführungsformen der vorliegenden Offenbarung ist unten vorgesehen. Während mehrere Ausführungsformen beschrieben werden, ist diese Offenbarung selbstverständlich nicht auf irgendeine Ausführungsform beschränkt, sondern umfasst stattdessen zahlreiche Alternativen, Änderungen und Entsprechungen. Zusätzlich können, während in der folgenden Beschreibung zahlreiche bestimmte Details dargelegt sind, um ein genaues Verständnis der Ausführungsformen, die hier offenbart sind, zu schaffen, einige Ausführungsformen ohne einige oder alle dieser Details praktiziert werden. Außerdem wurde aus Gründen der Klarheit bestimmtes technisches Material, das im verwandten Gebiet bekannt ist, nicht genau beschrieben, um ein unnötiges Verschleiern der Offenbarung zu vermeiden.
  • Unter Bezugnahme auf die Figuren veranschaulicht 1 ein schematisches Blockdiagramm eines Systems 100 zum Erzeugen, Aktualisieren und Abfragen einer externen Tabelle. Das System 100 enthält eine Datenbankplattform 102. Die Datenbankplattform 102 kann eine cloudbasierte Datenbankrechenplattform zum Speichern, Organisieren, Führen und Abfragen von Datenbankdaten sein. Die Datenbankplattform 102 kann in Kommunikation mit mehreren Client-Kontos sein. Eine Ausführungsform der Datenbankplattform 102 enthält das System 300, das in 3 veranschaulicht ist. Die Datenbankplattform 102 ist in Kommunikation mit einem Datensee 104, der Daten von einem Client 118 empfängt. Der Datensee 104 kann ein cloudbasiertes Datenspeicherbetriebsmittel enthalten, das Dateien und Rohdaten in ihrem nativen Format aufnehmen kann.
  • Eine externe Tabelle 106 kann auf der Grundlage von Daten im Datensee 104 erzeugt werden. Die externe Tabelle 106 enthält strukturierte oder halbstrukturierte Daten. Die externe Tabelle 106 ist für die Datenbankplattform 102 zugänglich, wird jedoch nicht durch die Datenbankplattform 102 gemanagt oder aktualisiert. In einer Ausführungsform ist die externe Tabelle 106 im Datensee 104 gespeichert und sind die Struktur und die Organisation der externen Tabelle 106 durch den Client 118 definiert. In einer Ausführungsform sind die Struktur und die Organisation der externen Tabelle 106 durch die Datenbankplattform 102 definiert. Der Datensee 104 enthält einen Speicher von Daten, die durch den Client 118 gemanagt werden, wobei der Client 118 dem Datensee 104 und der Datenbankplattform 102 zugeordnet ist. Der Datensee 104 kann außerhalb der Datenbankplattform 102 liegen, derart, dass die Datenbankplattform 102 nicht die Fähigkeit oder die Berechtigung besitzt, die Daten im Datensee 104 zu schreiben oder zu manipulieren. Die Datenbankplattform 102 kann Genehmigungen besitzen, die Daten, die im Datensee 104 gespeichert sind, zu lesen, die Daten, die im Datensee 104 gespeichert sind, abzufragen und/oder eine Angabe zu empfangen, wenn der Datensee 104 aktualisiert wird.
  • In einer Ausführungsform wird die externe Tabelle 106 auf der Grundlage eines Quellverzeichnisses im Datensee 104 erzeugt. Das Quellverzeichnis im Datensee 104 kann alternativ als ein Namensraum oder eine Quellendatei bezeichnet werden. Das Quellverzeichnis kann durch den Client 118 identifiziert werden und der Client kann manuell angeben, dass neue Daten in das Quellverzeichnis hochgeladen werden sollen. Der Datensee 104 ist ein System oder eine Ablage für Daten. Daten im Datensee 104 können in einem strukturierten oder einem nicht strukturierten Zustand in einem beliebigen Umfang gespeichert werden. Die Daten können unverändert gespeichert werden, ohne die Daten zunächst zu strukturieren. In einer Ausführungsform ist der Datensee 104 ein einzelner Speicher aller Unternehmensdaten für den Client 118, der Rohkopien von Quellsystemdaten und umgewandelten Daten enthält, die für Aufgaben wie z. B. Berichten, Visualisierung, Analytik, maschinelles Lernen usw. verwendet werden können. In einer Ausführungsform enthält der Datensee 104 strukturierte Daten aus relationalen Datenbanken (d. h. Zeilen und Spalten), halbstrukturierte Daten, nicht strukturierte Daten (z. B. E-Mails, Dokumente usw.) und Binärdaten (z. B. Bilder, Audio, Video usw.). Der Datensee 104 kann Massendaten für den Client 118 durch Schaffen eines einzelnen Punkts zum Sammeln, Organisieren und gemeinsamen Verwenden von Daten managen.
  • Der Datensee 104 kann von einem Datenlager unterschieden werden. Allerdings kann in bestimmten Ausführungsformen ein Datenlager statt eines Datensees 104 verwendet werden, der in 1 veranschaulicht ist. Ein Datenlager enthält eine Datenbank, die optimiert ist, relationale Daten zu analysieren, die aus Transaktionssystemen und Anwendungen einer Branche stammen. In einem Datenlager können die Datenstruktur und das Schema zur Optimierung für schnelle Abfragen im Voraus definiert werden. Die Daten in einem Datenlager können derart bereinigt, angereichert und umgewandelt werden, dass es als eine einzige Quelle der Wahrheit wirkt. Der Datensee 104 kann relationale Daten aus Anwendungen einer Branche und nicht relationale Daten z. B. aus mobilen Anwendungen, Einrichtungen des Internets der Dinge und sozialen Medien speichern. In einem Datensee 104 muss die Struktur oder das Schema der Daten nicht definiert werden, wenn Daten aufgenommen werden, derart, dass alle Daten ohne sorgfältigen Entwurf gespeichert werden können. In bestimmten Implementierungen kann es vorteilhaft sein, sowohl ein Datenlager als auch einen Datensee einzusetzen, und eine derartige Implementierung kann von den Systemen, den Verfahren und den Einrichtungen zum Erzeugen einer materialisierten Ansicht auf der Grundlage einer externen Tabelle, die hier offenbart sind, profitieren.
  • Der Datensee 104 kann eine beliebige Menge neuer Daten 108 importieren, die in Echtzeit aufgenommen werden können. Die neuen Daten 108 können aus mehreren Quellen gesammelt und in ihrem ursprünglichen Format zum Datensee 104 bewegt werden. Dieser Prozess kann dem Datensee 104 ermöglichen, Daten von beliebiger Größe zu skalieren, während Zeit zum Definieren von Datenstrukturen, Schemas und Umwandlungen gespart wird. Der Datensee 104 kann eine Fähigkeit bereitstellen, durch Durchsuchen, Katalogisieren und Indizieren der Daten zu verstehen, welche Daten im Datensee 104 gespeichert sind. Die Daten im Datensee 104 können gesichert und verschlüsselt werden, um sicherzustellen, dass die Daten geschützt sind.
  • Der Datensee 104 stellt Verzeichnisse für die externe Tabelle 106 und die materialisierte Ansicht 116 bereit. Die Verzeichnisse können in einem verschiedenen Dateiformat gespeichert sein als die Tabellen, die in den gemeinsam verwendeten Speichereinrichtungen der Datenbankplattform 102 gespeichert sind. Die Verzeichnisse des Datensees 104 können in einem Cloud-Speicher System wie z. B. Amazon Web Services™, Microsoft Azure™ usw. gespeichert sein. Der Datensee 104 kann von der Datenbankplattform 102 getrennt und unabhängig sein (siehe z. B. 3- 5).
  • Der Client 118 kann neue Daten 108 zum Datensee 104 hinzufügen. Die neuen Daten 108 können in einem beliebigen Dateiformat vorliegen. In einer Ausführungsform müssen die neuen Daten 108 in einem bestimmten Dateiformat vorliegen, um durch die Datenbankplattform 102 gelesen zu werden oder um in die externe Tabelle 106 aufgenommen zu werden. In einer Ausführungsform enthält die Datenbankplattform 102 gemeinsam verwendete Speichereinrichtungen zum Speichern von Datenbankdaten (diese können als „interne“ Daten, die durch die Datenbankplattform 102 gemanagt werden, bezeichnet werden). Der Client 118 kann Daten besitzen, die im Datensee 104 gespeichert sind, und kann ferner verschiedene oder replizierte Daten besitzen, die in den gemeinsam verwendeten Speichereinrichtungen der Datenbankplattform 102 gespeichert sind. In einer Ausführungsform besitzen die Daten, die im Datensee 104 gespeichert sind, und die Daten, die in den gemeinsam verwendeten Speichereinrichtungen der Datenbankplattform 102 gespeichert sind, verschiedene Dateiformate. In einer derartigen Ausführungsform kann die Datenbankplattform 102 konfiguriert sein, die verschiedenen Formate für Daten, die im Datensee 104 gespeichert sind, zu lesen und/oder diese verschiedenen Formate zum demselben Datenformat, das durch die Datenbankplattform 102 verwendet wird, umwandeln.
  • Wenn die neuen Daten 108 zum Datensee 104 hinzugefügt werden, wird eine Benachrichtigung 110 erzeugt und zu einem Aufnahmedienst 112 der Datenbankplattform 102 geliefert. Die Benachrichtigung 110 enthält eine Angabe, dass die neuen Daten 108 zum Datensee 104 hinzugefügt wurden. Die Benachrichtigung 110 kann durch den Datensee 104 automatisch erzeugt werden, kann durch den Client automatisch oder manuell erzeugt werden, kann durch die Datenbankplattform 102 automatisch oder manuell abgerufen werden usw. In einer Ausführungsform fragt die Datenbankplattform 102 den Datensee 104 in Schwellenwertzeiträumen ab, um zu bestimmen, ob neue Daten 108 zum Datensee 104 hinzugefügt wurden. In einer Ausführungsform wird die Benachrichtigung 110 zum Aufnahmedienst 112 geliefert, um anzugeben, dass neue Daten 108 durch den Datensee 104 empfangen wurden. Der Aufnahmedienst 112 kann veranlassen, dass auf der Grundlage der neuen Daten 108 eine Aktualisierung an der externen Tabelle 106 und ferner an einer materialisierten Ansicht 116 vorgenommen wird.
  • Der Aufnahmedienst 112 empfängt Benachrichtigungen vom Datensee 104, dass eine Aktualisierung an Daten, die im Datensee 104 gespeichert sind, vorgenommen wurde. Der Aufnahmedienst 112 kann eine Benachrichtigung empfangen, dass Daten im Quellverzeichnis (das alternativ als ein Namensraum oder eine Quellendatei bezeichnet werden kann) im Datensee aktualisiert worden sind. Der Aufnahmedienst 112 aktualisiert Metadaten für die externe Tabelle 106, um jegliche Änderungen, die an den Daten des Datensees 104 vorgenommen wurden, widerzuspiegeln.
  • Die neuen Daten 108 werden durch den Aufnahmedienst 112 der Datenbankplattform 102 gelesen und/oder abgerufen. Die neuen Daten 108 sind in einer externen Tabelle gespeichert 106. Die externe Tabelle kann mit der Datenbankplattform 102 in Kommunikation sein, muss jedoch nicht durch die Datenbankplattform gemanagt werden. In einer Ausführungsform kann die Datenbankplattform 102 Daten in der externen Tabelle 106 lesen, kann jedoch keine Daten zur externen Tabelle 106 schreiben. In einer Ausführungsform managt der Client 118 die externe Tabelle 106 und stellt Zugriff auf die externe Tabelle 106 zur Datenbankplattform 102 bereit. In einer Ausführungsform wird die externe Tabelle 106 durch einen cloudbasierten Datenlagerdienst, der von der Datenbankplattform 102 getrennt und unabhängig sein kann, gemanagt und/oder bereitgestellt. Wenn neue Daten 108 zum Datensee 104 hinzugefügt werden, wird die externe Tabelle 106 aktualisiert, um die neuen Daten 108 widerzuspiegeln.
  • Die Datenbankplattform 102 kann auf der Grundlage der externen Tabelle 106 eine oder mehrere materialisierte Ansichten 116 erzeugen. Eine materialisierte Ansicht 116 über die externe Tabelle 106 kann durch die Datenbankplattform 102 gemanagt werden und kann in den mehreren gemeinsam verwendeten Speichereinrichtungen (siehe z. B. 308), die der Datenbankplattform 102 zugeordnet sind, gespeichert sein. Wenn neue Daten 108 zum Datensee 104 hinzugefügt werden, wird die externe Tabelle 106 aktualisiert und wird die materialisierte Ansicht 116 über die externe Tabelle 106 aktualisiert.
  • Die Datenbankplattform 102 erzeugt die materialisierte Ansicht 116 über die externe Tabelle 106. Die Erzeugung der materialisierten Ansicht 116 über die externe Tabelle 106 kann in zwei Schritte zerlegt werden. In einem ersten Schritt wird eine nicht materialisierte externe Tabelle erzeugt. In einem zweiten Schritt wird eine materialisierte Ansicht über die nicht materialisierte externe Tabelle erzeugt. In bestimmten Implementierungen kann es vorteilhaft sein, die nicht materialisierte externe Tabelle aus der materialisierten Ansicht zu zerlegen, wie hier offenbart ist. Ein Zerlegen kann ermöglichen, dass mehrere verschiedene materialisierte Ansichten erzeugt werden, und jede der mehreren materialisierten Ansichten kann eine verschiedene Auswahl von Daten, verschiedenen Projektionen, verschiedenen Zusammenfassungen usw. enthalten, ohne zunächst alle Quelldaten zu materialisieren.
  • Die Kombination einer nicht materialisierten externen Tabelle 106 und einer materialisierten Ansicht 116 über die externe Tabelle 106 kann in Implementierungen vorteilhaft sein, in denen bereits eine große Datenmenge in einem Datensee 104 gespeichert ist und lediglich die jüngste Untermenge dieser Daten häufig abgefragt wird. In einer derartigen Implementierung kann es kostspielig sein, alle Daten im Datensee 104 zu materialisieren. Ferner kann ein Erzeugen einer materialisierten Ansicht über eine externe Tabelle eine Materialisierung lediglich des Abschnitts der Daten im Datensee 104, der am häufigsten abgefragt wird, erlauben.
  • Die Metadatenkomponente 114 erzeugt und aktualisiert Metadaten auf der Grundlage der Daten im Datensee 104 und/oder der externen Tabelle 106. Die Metadaten werden durch die Datenbankplattform 102 erzeugt, gemanagt, gespeichert und aktualisiert. Die Metadaten sind Informationen über die Daten, die im Datensee 104 und/oder der externen Tabelle 106 gespeichert sind. Die Metadaten können gemäß den verbesserten Metadatensystemen, die hier offenbart sind, z. B. denen, die in 10 und 11A-11C dargestellt sind, organisiert sein. Die Metadaten enthalten Informationen über die Daten, die im Datensee 104 und/oder der externen Tabelle 106 gespeichert sind, derart, dass ein Betriebsmittelmanager (siehe z. B. 302) der Datenbankplattform 102 Abfragen über die externe Tabelle 106 ausführen kann, ohne alle Daten in der externen Tabelle zu lesen.
  • Die Metadatenkomponente 114 erzeugt ferner Metadaten über die materialisierte Ansicht 116 und aktualisiert sei. Wenn der Datensee 104 und/oder die externe Tabelle 106 aktualisiert werden, kann die materialisierte Ansicht 116 aktualisiert werden, um die Aktualisierungen widerzuspiegeln. Die Metadaten können ferner aktualisiert durch die Metadatenkomponente 114 werden, um die Aktualisierungen, die an der materialisierten Ansicht 116 vorgenommen wurden, widerzuspiegeln. Wenn der Client 118 die externe Tabelle 106 abfragt, kann der Betriebsmittelmanager (siehe 302) der Datenbankplattform 102 die Abfrage an der materialisierten Ansicht 116 ausführen, wenn eine materialisierte Ansicht 116 vorhanden ist, die auf die Abfrage antworten kann. Die Datenbankplattform 102 wendet weniger Zeit und Verarbeitungsbetriebsmittel auf, wenn die Abfrage über der materialisierten Ansicht 116 statt der externen Tabelle 106 selbst ausgeführt wird.
  • In einer Ausführungsform sind die Daten in der externen Tabelle 106 in Partitionen organisiert, die unveränderliche Speichereinrichtungen bilden. In einer Ausführungsform sind die Daten in der externen Tabelle 106 in veränderlichen Speichereinrichtungen organisiert, die direkt aktualisiert werden können, jedoch interagiert die Datenbankplattform 102 mit der externen Tabelle 106, als ob die Daten nicht direkt aktualisiert werden können. Die Daten in der externen Tabelle 106 können in einem Dateiformat gespeichert werden, das von den Dateiformaten, die üblicherweise für interne Daten, die der Datenbankplattform zugeordnet sind, verwendet werden, verschieden ist. Der Betriebsmittelmanager 302 der Datenbankplattform 102 kann die Metadaten durchsuchen, um zu bestimmen, welche Partitionen in der externen Tabelle 106 konsumiert werden müssen, um schnell auf eine Abfrage zu antworten.
  • In einer Ausführungsform gibt der Client 118 eine Anweisung zur Datenbankplattform aus, um die externe Tabelle 106 zu erstellen, und die Anweisung definiert kein Schema für die externe Tabelle 106. In einer derartigen Ausführungsform wird die externe Tabelle 106 erzeugt, wobei kein Schema mit der Tabellendefinition definiert ist. Die externe Tabelle 106 kann eine Variantenspalte enthalten und alle Daten in der externen Tabelle 106 können unter Verwendung der intelligenten Spalte abgefragt werden.
  • Der Client 118 kann Metadaten einer externen Tabelle 106 in Form verschiedener Verfahren abfragen. In einer Ausführungsform zeigt eine Ansicht alle externen Tabellen in der Datenbank. Die Spalten in einem derartigen Ergebnis sind ähnlich denen normaler Tabellen, während die externe Tabelle 106 zusätzliche Spalten besitzt. In einer Ausführungsform enthält die externe Tabelle 106 eine Benachrichtigungskanalspalte, die einen Betriebsmittelnamen einer Warteschlange eines einfachen Warteschlangendiensts (SQS-Warteschlange), die im Backend erstellt wird, festlegt, derart, dass ein Client-Konto ein automatisches Hinzufügen von Dateien zur externen Tabelle 106 aufbauen kann. In einer Ausführungsform enthält die externe Tabelle 106 eine Ortsspalte, die den Ort festlegt, mit dem die externe Tabelle 106 konfiguriert ist.
  • Eine Metadatenansicht gibt die Verzeichnisse an, die Daten zur externen Tabelle 106 liefern. Wo die Quelle der Daten der Datensee 104 ist, können neue Dateien jederzeit hinzugefügt werden, können alte Dateien jederzeit gelöscht werden und können Dateien jederzeit aktualisiert werden. In einer derartigen Ausführungsform kann es vorteilhaft sein, eine Metadatenansicht aller Dateien, die Daten zur externen Tabelle 106 liefern, zu erzeugen. In einer Ausführungsform werden alle Verzeichnisse für die externe Tabelle 106 verfolgt und sind derartige Daten zum Betrachten in einem Informationsschema verfügbar. Verzeichnisse, die deregistriert oder gelöscht sind, können aus der Metadatenansicht entfernt werden.
  • Die materialisierte Ansicht 116 kann über eine externe Tabelle 106 erzeugt werden, um eine schnellere Abfrageantwortzeit bereitzustellen. Die materialisierte Ansicht 116 kann automatisch und inkrementell aktualisiert werden, um sicherzustellen, dass Daten immer bezüglich einer Hauptquelle der Wahrheit wie z. B. einem Quellverzeichnis im Datensee 104 aktuell sind. Die schnelle Abfrage 116 kann gegen die materialisierte Ansicht 116 verarbeitet werden, um eine Abfrageantwortzeit an häufig verwendeten Daten zu verbessern.
  • 2 ist ein schematisches Blockdiagramm eines Prozessablaufs 200 zum Managen externer Tabellen in einer Datenbankplattform 102. Das System 200 enthält eine Datenbankplattform 102 in Kommunikation mit einem Datensee 204 und einem Client 218. Die Datenbankplattform 102 kann in einen Betriebsmittelmanager (siehe z. B. 302) einer Datenbankplattform 102 einbezogen sein, wie hier offenbart ist.
  • Der Client 218 ist in Kommunikation mit einem Datensee 204, der durch den Client 218 gemanagt wird oder mit ihm verbunden ist und außerhalb der Datenbankplattform 102 liegt. In einer Ausführungsform ist die Datenbankplattform 102 in Kommunikation mit dem Datensee 204 derart, dass die Datenbankplattform 102 Daten, die in den Datensee 204 geschrieben werden, lesen kann, jedoch keine Daten in den Datensee 204 schreiben kann. Die Datenbankplattform 102 kann in eine cloudbasierte Datenbankrechenplattform einbezogen sein und der Datensee 204 kann eine getrennte und unabhängige cloudbasierte Speicherstruktur bilden.
  • Im Prozessablauf 200 fügt der Client 218 dem Datensee 204 Daten hinzu. Eine Benachrichtigungslauscherkomponente 220 empfängt eine Angabe, dass dem Datensee 204 Daten hinzugefügt wurden. Die Benachrichtigung kann durch den Datensee 204 oder den Client 218 automatisch oder manuell erzeugt werden. Die Benachrichtigungslauscherkomponente 220 liefert zu einer Aktualisierungskomponente 222 für externe Tabellen eine Angabe, dass dem Datensee 204 Daten hinzugefügt wurden und eine externe Tabelle neu geladen oder aktualisiert werden sollte, um die neuen Daten, die dem Datensee 204 hinzugefügt wurden, widerzuspiegeln. Die Benachrichtigungslauscherkomponente 220 kann in Kommunikation mit einer Quelltabelle im Datensee 204 sein, die als eine Quelltabelle für eine externe Tabelle dient, die durch die Datenbankplattform 102 abgefragt werden kann. Der Client 218 kann die Quelltabelle im Datensee 208 definieren und die Benachrichtigungslauscherkomponente 220 kann eine Benachrichtigung empfangen, wenn Daten zur Quelltabelle hinzugefügt oder in ihr aktualisiert werden.
  • Die Aktualisierungskomponente 222 für externe Tabellen aktualisiert eine externe Tabelle, die für die Datenbankplattform 102 lesbar ist. In einer Ausführungsform ist die Datenbankplattform 102 eine Komponente einer cloudbasierten Datenbankrechenplattform, die Datenbankdaten (die durch die cloudbasierte Datenbankrechenplattform gemanagt und gespeichert werden) in unveränderlichen Speichereinrichtungen, die hier als Partitionen bezeichnet werden, organisiert. In einer derartigen Ausführungsform müssen die Daten, die zum Datensee 204 hinzugefügt werden, nicht in Partitionen organisiert sein. Die Aktualisierungskomponente 222 für externe Tabellen kann eine oder mehrere Partitionen für die externe Tabelle auf der Grundlage der neuen Daten, die zum Datensee 204 hinzugefügt wurden, festlegen. In einer Ausführungsform besitzen die Daten im Datensee 204 im Vergleich mit internen Daten, die durch die cloudbasierte Datenbankplattform gemanagt werden, ein verschiedenes Dateiformat. Die Aktualisierungskomponente 222 für externe Tabellen kann konfiguriert sein, mehrere Dateiformate zu lesen und zu verstehen und Daten in dasselbe Dateiformat zu übersetzen, das durch die cloudbasierte Datenbankplattform verwendet wird.
  • Die Metadatenkomponente 224 erzeugt, organisiert und speichert Metadaten über die Daten, die in der externen Tabelle gespeichert sind. Die Metadaten verwenden die Partitionen für die externen Daten, die durch die Aktualisierungskomponente 222 für externe Tabellen festgelegt werden, als Grundlage. Beispielstrukturen für die Metadaten sind in 10 und 11A-11C ersichtlich. In einer Ausführungsform legt der Client 218 eine hierarchische Struktur für die Daten in der externen Tabelle fest. Der Client 218 kann festlegen, wie Ordner und Unterordner für die externen Daten organisiert werden, wie die Daten in Zeilen und Spalten unterteilt werden und/oder wie die externen Daten in Partitionen unterteilt werden. In einem Beispiel kann der Client 218 Versicherungsinformationen in der externen Tabelle speichern. In dem Beispiel kann der Client 218 festlegen, dass die Daten mit getrennten Spalten für das Jahr, den Monat, das Datum und die Zeit einer Versicherungstransaktion organisiert sein sollen. Der Client 218 kann festlegen, dass die Versicherungstransaktionen nach dem Ort organisiert sein sollen, derart, dass jeder Zustand oder Bereich in einer verschiedenen Partition gespeichert ist. In einer Ausführungsform lädt der Client 218 eine Datei in einen bestimmten Ordner im Datensee 204 hoch und der Ort der Datei leitet die Metadatenkomponente 224, um die korrekten Metadaten für die Datei zu erzeugen.
  • In einer Ausführungsform die Metadatenkomponente 224 erzeugt Änderungsverfolgungsmetadaten für eine Partition in der externen Tabelle, die geändert wurde. Die Benachrichtigungslauscherkomponente 220 kann eine Angabe empfangen, dass eine bestimmte Datei im Datensee 204 geändert wurde. Der bestimmte Unterordner im Quellverzeichnis kann Daten für eine bestimmte Partition in der externen Tabelle bereitstellen. Auf der Grundlage der Benachrichtigung kann die Datenbankplattform die Metadaten über die externe Tabelle aktualisieren.
  • Die Aktualisierungskomponente 226 für materialisierte Ansichten aktualisiert eine materialisierte Ansicht, die über die externe Tabelle erzeugt wird. Die materialisierte Ansicht kann durch die cloudbasierte Datenbankrechenplattform, die vom Datensee 204 getrennt ist, gespeichert und gemanagt werden. Die materialisierte Ansicht wird aktualisiert, um beliebige neue Daten, die zum Datensee 204 hinzugefügt wurden, widerzuspiegeln und/oder beliebige Aktualisierungen, die an den externen Daten vorgenommen wurden, wie z. B. zusammenführen oder löschen, widerzuspiegeln.
  • Die Erzeugungskomponente 228 für externe Tabellen erzeugt eine externe Tabelle auf der Grundlage von Daten im Datensee 204. Die externe Tabelle kann durch die Erzeugungskomponente 228 für externe Tabellen oder den Client 218 definiert werden. In einer Ausführungsform stellt der Client 218 der Datenbankplattform 102 Zugriff auf ein Quellverzeichnis im Datensee 204 bereit und gibt an, dass eine externe Tabelle auf der Grundlage des Quellverzeichnisses erzeugt werden soll.
  • In einer Ausführungsform stellt der Client 218 eine Angabe einer hierarchischen Struktur im Quellverzeichnis bereit, wobei die hierarchische Struktur durch den Client 218 manuell definiert worden sein kann. Die hierarchische Struktur kann die Organisation für die Daten im Quellverzeichnis, das Ordner und Unterordner für die Daten enthält, angeben. In einem Beispiel kann der Client 218 angeben, dass ein Ordner alle Kreditkartentransaktionen für das Jahr 2019 enthält. Der Client 218 kann ferner angeben, dass ein erster Unterordner alle Kreditkartentransaktionen für Januar im Jahr 2019 enthält, ein zweiter Unterordner alle Kreditkartentransaktionen für Februar im Jahr 2019 enthält usw. Der Client kann ferner eine Angabe einer Partitionierungsstruktur für die externe Tabelle, die das Quellverzeichnis als Grundlage verwendet, bereitstellen. Die Partitionierungsstruktur kann angeben, wie Daten in der externen Tabelle in Spalten, Zeilen und Partitionen organisiert sein sollen. Die Erzeugungskomponente 228 für externe Tabellen kann die externe Tabelle auf der Grundlage der hierarchischen Struktur, der Partitionierungsstruktur und dessen, wo die Dateien in den Ordner und den Unterordner der hierarchischen Struktur hochgeladen werden, definieren.
  • In einem Beispiel gibt der Client 218 an, dass die Partitionen in der externen Tabelle auf der Grundlage eines Orts organisiert sein sollen, derart, dass sich alle Kreditkartentransaktionen im Staat Kalifornien in einer Partition befinden, alle Kreditkartentransaktionen im Staat Maine sich in einer verschiedenen Partition befinden usw. Der Client 218 kann ferner angeben, dass die Partitionen in der externen Tabelle ferner auf der Grundlage des Zeitstempels für die Kreditkartentransaktion organisiert sein soll. Der Client kann Kreditkartentransaktionen für den Staat Kalifornien im Monat April im Jahr 2019 in einen Ordner für Kalifornien, in einen Unterordner für das Jahr 2019 in Kalifornien und ferner in einen Unterordner für den Monat April im Jahr 2019 in Kalifornien hochladen. Auf der Grundlage der hierarchischen Struktur und der Partitionierungsstruktur definiert die Erzeugungskomponente 228 für externe Tabellen eine Partition in der externen Tabelle, die Daten für Kreditkartentransaktionen in Kalifornien im April 2019 enthält.
  • Ordner und Unterordner können im Quellverzeichnis des Datensees gestapelt sein und können durch den Client definiert werden. Wenn Daten in einen bestimmten Unterordner im Quellverzeichnis hochgeladen werden, definiert die Erzeugungskomponente 228 für externe Tabellen die externe Tabelle auf der Grundlage davon, wo die Daten im Kontext der hierarchischen Struktur und der Partitionierungsstruktur, die durch den Client definiert wurden, hochgeladen wurden.
  • Die Abfragekomponente 230 empfängt eine Abfrage vom Client 218. Die Abfragekomponente 230 tastet die Metadaten ab, um eine oder mehrere Partitionen zu bestimmen, die nötig sind, um auf die Abfrage zu antworten. In einer Ausführungsform ist mindestens eine der einen oder der mehreren Partitionen in einer externen Tabelle gespeichert, die nicht durch die cloudbasierte Datenbankrechenplattform gemanagt oder gespeichert wird. Die Abfragekomponente 230 parst eine Ausführung der Abfrage in mehrere einzelne Unteraufgaben und weist die einzelnen Unteraufgaben mehreren Knoten einer Ausführungsplattform zu. Die Ausführungsplattform führt die Abfrage aus.
  • Die Sicherheitskomponente 232 managt Genehmigungen für die externe Tabelle. Wenn die Datenbankplattform 102 eine Genehmigung besitzt, Daten in der externen Tabelle zu betrachten, kann die Abfragekomponente 218 auf diese Daten zugreifen, um auf die Abfrage zu antworten.
  • Unter Bezugnahme auf 3 ist eine Datenverarbeitungsplattform 300 zum Betreiben der Verfahren und Systeme, die hier offenbart sind, veranschaulicht. Wie in 3 gezeigt ist, kann der Betriebsmittelmanager 302 an mehrere Client-Kontos 314a, 314b und 314n gekoppelt sein. Die Client-Kontos 314a, 314b und 314n können verschiedene Clients wie z. B. den Client 118, der in 1 veranschaulicht ist, repräsentieren. In bestimmten Implementierungen kann der Betriebsmittelmanager 302 eine beliebige Anzahl von Client-Kontos unterstützen, die Zugriff auf die Ausführungsplattform 304 und/oder den gemeinsam verwendeten Datenbankspeicher 308 verlangen. Client-Kontos 314a, 314b und 314n können z. B. Endanwender, die Anwenderdateien, die in die Datenbank aufgenommen werden sollen, und Datenspeicher- und Abrufanforderungen bereitstellen, Systemadministratoren, die die Systeme und Verfahren, die hier beschrieben sind, managen, und weitere Komponenten/Einrichtungen, die mit dem Betriebsmittelmanager 302 interagieren, enthalten.
  • Der Betriebsmittelmanager 302 stellt verschiedene Dienste und Funktionen bereit, die den Betrieb aller Systeme und Komponenten in der Datenverarbeitungsplattform 300 unterstützen. Der Betriebsmittelmanager 302 kann an gemeinsam verwendete Metadaten 312 gekoppelt sein, die der Gesamtheit von Daten, die überall in der Datenverarbeitungsplattform 300 gespeichert sind, zugeordnet sind. Die gemeinsam verwendeten Metadaten 312 enthalten Metadaten für Daten, die im gemeinsam verwendeten Datenbankspeicher 308 gespeichert sind, und enthält ferner Metadaten für Daten, die in externen Tabellen gespeichert sind (siehe 106). In einigen Ausführungsformen enthalten gemeinsam verwendete Metadaten 312 eine Zusammenfassung von Daten, die in entfernten Datenspeichersystemen gespeichert sind, sowie Daten, die aus einem lokalen Zwischenspeicher verfügbar sind. Zusätzlich können gemeinsam verwendete Metadaten 312 Informationen dahingehend enthalten, wie Daten in den entfernten Datenspeichersystemen und den lokalen Zwischenspeichern organisiert sind. Gemeinsam verwendete Metadaten 312 können Systemen und Diensten ermöglichen, zu bestimmen, ob ein Datenstück verarbeitet werden muss, ohne die tatsächlichen Daten aus einer Speichereinrichtung zu laden oder auf sie zuzugreifen. Die gemeinsam verwendeten Metadaten 312 können gemäß den Metadatenstrukturen, die in 10 und 11A-11C veranschaulicht sind, organisiert sein.
  • Der Betriebsmittelmanager 302 kann ferner an die Ausführungsplattform 304 gekoppelt sein, die mehrere Rechenbetriebsmittel bereitstellt, die verschiedene Datenspeicher- und Datenabrufaufgaben ausführen, wie unten genauer diskutiert wird. Die Ausführungsplattform 304 enthält mehrere Ausführungsknoten 306a, 306b, 306c und 306n, die konfiguriert sind, verschiedene Aufgaben, die der Datenbank zugeordnet sind, die ein Aufnehmen neuer Anwenderdateien und ein Erzeugen einer oder mehrerer Partitionen für eine Tabelle (die eine externe Tabelle oder eine Tabelle, die im gemeinsam verwendeten Datenbankspeicher 308 gespeichert ist) umfassen, auf der Grundlage der neuen Anwenderdateien zu verarbeiten. Die Ausführungsplattform 304 kann an den gemeinsam verwendeten Datenbankspeicher 308, der mehrere Datenspeichereinrichtungen 310a, 310b, 310c und 310n enthält, gekoppelt sein. In einigen Ausführungsformen enthält der gemeinsam verwendete Datenbankspeicher 308 cloudbasierte Speichereinrichtungen, die sich an einem oder mehreren geographischen Orten befinden. Zum Beispiel kann der gemeinsam verwendete Datenbankspeicher 308 ein Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur se. Der gemeinsam verwendete Datenbankspeicher 308 kann Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speichercluster oder eine sonstige Datenspeichertechnologie enthalten. Zusätzlich kann der gemeinsam verwendete Datenbankspeicher 308 verteilte Dateisysteme (wie z. B. verteilte Hadoop Dateisysteme (HDFS)), Objektspeichersysteme und dergleichen enthalten. Es ist zu bedenken, dass der gemeinsam verwendete Datenbankspeicher 308 durch ein oder mehrere Instanzen des Betriebsmittelmanagers 302 zugänglich sein kann, jedoch nicht für alle Client-Kontos 314a-314n zugänglich sein muss. In einer Ausführungsform wird eine einzelne Instanz des Betriebsmittelmanagers 302 durch mehrere Client-Kontos 314a-314n gemeinsam verwendet. In einer Ausführungsform besitzt jedes Client-Konto 314a-314n seinen eigenen Betriebsmittelmanager und/oder seinen eigenen gemeinsam verwendeten Datenbankspeicher 308, der zwischen mehreren Ausführungsknoten 306a-306n der Ausführungsplattform 304 gemeinsam verwendet wird. In einer Ausführungsform ist der Betriebsmittelmanager 302 verantwortlich, einem bestimmten Client-Konto 314a-314n Zugriff auf bestimmte Daten im gemeinsam verwendeten Datenbankspeicher 308 bereitzustellen.
  • In bestimmten Ausführungsformen sind die Kommunikationsanbindungen zwischen dem Betriebsmittelmanager 302 und Client-Kontos 314a-314n, gemeinsam verwendete Metadaten 312 und der Ausführungsplattform 304 mittels eines oder mehrerer Datenkommunikationsnetze implementiert. Ähnlich sind die Kommunikationsanbindungen zwischen der Ausführungsplattform 304 und dem gemeinsam verwendeten Datenbankspeicher 308 mittels eines oder mehrerer Datenkommunikationsnetze implementiert. Diese Datenkommunikationsnetze können ein beliebiges Kommunikationsprotokoll und einen beliebigen Typ eines Kommunikationsmediums verwenden. In einigen Ausführungsformen sind die Datenkommunikationsnetze eine Kombination von zwei oder mehr Datenkommunikationsnetzen (oder Unternetzen), die aneinandergekoppelt sind. In alternativen Ausführungsformen sind diese Kommunikationsanbindungen unter Verwendung eines beliebigen Typs eines Kommunikationsmediums und eines beliebigen Kommunikationsprotokolls implementiert.
  • Wie in 3 gezeigt ist, sind die Datenspeichereinrichtungen 310a-310n von den Rechenbetriebsmitteln, die der Ausführungsplattform 304 zugeordnet sind, entkoppelt. Diese Architektur unterstützt dynamische Änderungen an der Datenverarbeitungsplattform 300 auf der Grundlage der sich ändernden Datenspeicher-/Abrufanforderungen sowie der sich ändernden Anforderungen der Anwender und Systeme, die auf die Datenverarbeitungsplattform 300 zugreifen. Diese Architektur ermöglicht, dass die Ausführungsplattform 304 und der gemeinsam verwendete Datenbankspeicher 308 unendlich skalierbar sind. Die Unterstützung dynamischer Änderungen ermöglicht, die Datenverarbeitungsplattform 300 in Reaktion auf sich ändernde Anforderungen an die Systeme und Komponenten in der Datenverarbeitungsplattform 300 schnell zu skalieren. Das Entkoppeln der Rechenbetriebsmittel von den Datenspeichereinrichtungen unterstützt das Speichern großer Datenmengen, ohne eine entsprechende große Menge Rechenbetriebsmittel zu erfordern. Ähnlich unterstützt dieses Entkoppeln von Betriebsmitteln eine wesentliche Zunahme der Rechenbetriebsmittel, die zu einer bestimmten Zeit verwendet werden, ohne eine entsprechende Zunahme der verfügbaren Datenspeicherbetriebsmittel zu erfordern.
  • Der Betriebsmittelmanager 302, die gemeinsam verwendeten Metadaten 312, die Ausführungsplattform 304 und der gemeinsam verwendete Datenbankspeicher 308 sind in 3 als einzelne Komponenten gezeigt. Allerdings können sämtliche des Betriebsmittelmanagers 302, der gemeinsam verwendeten Metadaten 312, der Ausführungsplattform 304 und des gemeinsam verwendeten Datenbankspeichers 308 als ein verteiltes System (das z. B. über mehrere Systeme/Plattformen bei mehreren geographischen Orten verteilt ist) implementiert sein. Zusätzlich können der Betriebsmittelmanager 302, die gemeinsam verwendeten Metadaten 312, die Ausführungsplattform 304 und der gemeinsam verwendete Datenbankspeicher 308 jeweils abhängig von Änderungen der Anforderungen, die von Client-Kontos 314a-314n empfangen werden, und den sich ändernden Anfragen der Datenverarbeitungsplattform 300 (unabhängig voneinander) vergrößert oder verkleinert werden. Somit ist die Datenverarbeitungsplattform 300 dynamisch und unterstützt regelmäßige Änderungen, um die aktuellen Datenverarbeitungsanforderungen zu erfüllen.
  • 4 ist ein Blockdiagramm, das eine Ausführungsform des Betriebsmittelmanagers 302 darstellt. Wie in 4 gezeigt ist, enthält der Betriebsmittelmanager 302 einen Zugangsmanager 402 und einen Schlüsselmanager 404, die an eine Datenspeichereinrichtung 406 gekoppelt sind. Der Zugangsmanager 402 kann Authentifizierungs- und Genehmigungsaufgaben für die hier beschriebenen Systeme verarbeiten. Der Schlüsselmanager 404 kann das Speichern und die Authentifizierung von Schlüsseln, die während Authentifizierungs- und Genehmigungsaufgaben verwendet werden, managen. Ein Anforderungsverarbeitungsdienst 408 managt empfangene Datenspeicheranforderungen und Datenabrufanforderungen. Ein Managementkonsolendienst 410 unterstützt den Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und weitere Systemmanager.
  • Der Betriebsmittelmanager 302 kann auch einen Auftragskompilierer 412, eine Auftragsoptimierungseinrichtung 414 und eine Auftragsausführungseinrichtung 416 enthalten. Der Auftragskompilierer 412 parst Aufgaben wie z. B. Aufnahmeaufgaben und erzeugt den Ausführungscode für die Aufnahme von Anwenderdateien. Die Auftragsoptimierungseinrichtung 414 bestimmt das beste Verfahren, um Aufnahmeaufgaben auszuführen, auf der Grundlage der Daten, die verarbeitet und/oder aufgenommen werden müssen. Die Auftragsausführungseinrichtung 416 führt Code für Aufnahmeaufgaben, die durch den Betriebsmittelmanager 302 empfangen wurden, aus. Eine Auftragsplanungs- und Koordinationseinrichtung 418 kann empfangene Anwenderdateien zu den geeigneten Diensten oder Systemen zur Kompilierung, Optimierung und Auslieferung zur Ausführungsplattform 304 senden. Ein Manager 420 virtueller Lager managt den Betrieb mehrerer virtueller Lager, die in einer Ausführungsplattform implementiert sind.
  • Zusätzlich enthält der Betriebsmittelmanager 302 einen Konfigurations- und Metadatenmanager 422, der die Informationen in Bezug auf die Daten, die in den entfernten Datenspeichereinrichtungen und in den lokalen Zwischenspeichern gespeichert sind, managt. Eine Überwachungseinrichtung und Arbeitsbelastungsanalyseeinrichtung 424 beaufsichtigt die Prozesse, die durch den Betriebsmittelmanager 302 durchgeführt werden, und managt die Verteilung von Aufgaben (z. B. der Arbeitsbelastung) über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform. Der Konfigurations- und Metadatenmanager 422 und die Überwachungs- und Arbeitsbelastungsanalyseeinrichtung 424 sind an eine Datenspeichereinrichtung 426 gekoppelt.
  • Der Betriebsmittelmanager 302 enthält eine Datenbankplattform 102, wie in 2 beschrieben ist. Die Datenbankplattform 102 managt die Interaktion zwischen der Datenbankplattform 102 und einer externen Tabelle 106. Die externe Tabelle kann Daten enthalten, die in einer Quelltabelle eines Datensees 104 gespeichert sind.
  • 5 ist ein Blockdiagramm, das eine Ausführungsform einer Ausführungsplattform 304 darstellt. Wie in 5 gezeigt ist, enthält die Ausführungsplattform 904 mehrere virtuelle Lager, die das virtuelle Lager 1, das virtuelle Lager 2 und das virtuelle Lager n enthalten. Jedes virtuelle Lager enthält mehrere Ausführungsknoten, die jeweils einen Datenzwischenspeicher und einen Prozessor enthalten. Die virtuellen Lager können unter Verwendung der mehreren Ausführungsknoten mehrere Aufgaben parallel ausführen. Wie hier diskutiert wird, kann Ausführungsplattform 304 auf der Grundlage der aktuellen Verarbeitungsanforderungen der Systeme und Anwender in Echtzeit neue virtuelle Lager hinzufügen und bestehende virtuelle Lager aufgeben. Diese Flexibilität ermöglicht der Ausführungsplattform 304, große Mengen Rechenbetriebsmittel schnell bereitzustellen, wenn sie benötigt werden, ohne gezwungen zu sein, ein Bezahlen für diese Rechenbetriebsmittel fortzusetzen, wenn sie nicht mehr benötigt werden. Alle virtuellen Lager können auf Daten einer beliebigen Datenspeichereinrichtung (z. B. eine beliebige Speichereinrichtung im gemeinsam verwendeten Datenbankspeicher 308) zugreifen. Obwohl jedes virtuelle Lager, das in 5 gezeigt ist, drei Ausführungsknoten enthält, kann ein bestimmtes virtuelles Lager eine beliebige Anzahl Ausführungsknoten enthalten. Ferner ist die Anzahl von Ausführungsknoten in einem virtuellen Lager dynamisch, derart, dass neue Ausführungsknoten erstellt werden, wenn zusätzlicher Bedarf vorhanden ist, und bestehende Ausführungsknoten gelöscht werden, wenn sie nicht mehr nötig sind.
  • Jedes virtuelle Lager kann auf beliebige der Datenspeichereinrichtungen 310a-310n, die in 3 gezeigt sind, zugreifen. Somit sind die virtuellen Lager nicht notwendigerweise einer bestimmten Datenspeichereinrichtung zugewiesen und können stattdessen auf Daten einer beliebigen der Datenspeichereinrichtungen 310a-310n im gemeinsam verwendeten Datenbankspeicher 308 zugreifen. Ähnlich kann jeder der Ausführungsknoten, die in 5 gezeigt sind, auf Daten einer beliebigen der Datenspeichereinrichtungen 310a-310n zugreifen. In einigen Ausführungsformen kann ein bestimmtes virtuelles Lager oder ein bestimmter Ausführungsknoten einer bestimmten Datenspeichereinrichtung vorübergehend zugewiesen sein, jedoch kann das virtuelle Lager oder der Ausführungsknoten später auf Daten sonstiger Datenspeichereinrichtung zugreifen.
  • Im Beispiel von 5 enthält das virtuelle Lager 1 drei Ausführungsknoten 502a, 502b und 502n. Der Ausführungsknoten 502a enthält einen Zwischenspeicher 504b und einen Prozessor 506a. Der Ausführungsknoten 502b enthält einen Zwischenspeicher 504b und einen Prozessor 506b. Der Ausführungsknoten 502n enthält einen Zwischenspeicher 504n und einen Prozessor 506n. Jeder Ausführungsknoten 502a, 502b und 502n ist der Verarbeitung einer oder mehrerer Datenspeicher- und/oder Datenabrufaufgaben zugeordnet. Zum Beispiel kann ein virtuelles Lager Datenspeicher- und Datenabrufaufgaben, die einem internen Dienst wie z. B. einem Gruppierungsdienst, einem Aktualisierungsdienst einer materialisierten Ansicht, einem Dateikomprimierungsdienst, einem Speicherprozedurdienst oder einem Dateiaufrüstdienst zugeordnet sind, verarbeiten. In weiteren Implementierungen kann ein bestimmtes virtuelles Lager Datenspeicher- und Datenabrufaufgaben, die einem bestimmten Datenspeichersystem oder einer bestimmten Kategorie von Daten zugeordnet sind, verarbeiten.
  • Ähnlich dem virtuellen Lager 1, das oben diskutiert ist, enthält das virtuelle Lager 2 drei Ausführungsknoten 512a, 512b und 512n. Der Ausführungsknoten 512a enthält einen Zwischenspeicher 514a und einen Prozessor 516a. Der Ausführungsknoten 512b enthält einen Zwischenspeicher 514b und einen Prozessor 516b. Der Ausführungsknoten 512n enthält einen Zwischenspeicher 514n und einen Prozessor 516n. Zusätzlich enthält das virtuelle Lager 3 drei Ausführungsknoten 522a, 522b und 522n. Der Ausführungsknoten 522a enthält einen Zwischenspeicher 524a und einen Prozessor 526a. Der Ausführungsknoten 522b enthält einen Zwischenspeicher 524b und einen Prozessor 526b. Der Ausführungsknoten 522n enthält einen Zwischenspeicher 524n und einen Prozessor 526n.
  • In einigen Ausführungsformen sind die Ausführungsknoten, die in 5 gezeigt sind, in Bezug auf die Daten, die die Ausführungsknoten zwischenspeichern, zustandslos. Zum Beispiel speichern oder führen auf andere Weise diese Ausführungsknoten keine Zustandsinformationen über den Ausführungsknoten oder die Daten, die durch einen bestimmten Ausführungsknoten zwischengespeichert sind. Somit kann im Falle eines Ausführungsknotenfehlers der ausgefallene Knoten durch weitere Knoten transparent ersetzt werden. Da keine Zustandsinformationen vorliegen, die dem ausgefallenen Ausführungsknoten zugeordnet sind, kann der neue (Ersatz-)Ausführungsknoten den ausgefallenen Knoten ohne Sorge des Wiederherstellens eines bestimmten Zustands einfach ersetzen.
  • Obwohl die Ausführungsknoten, die in 5 gezeigt sind, jeweils einen Datenzwischenspeicher und einen Prozessor enthalten, können alternative Ausführungsformen Ausführungsknoten enthalten, die eine beliebige Anzahl Prozessoren und eine beliebige Anzahl Zwischenspeicher enthalten. Zusätzlich kann die Größe der Zwischenspeicher zwischen den verschiedenen Ausführungsknoten variieren. Die Zwischenspeicher, die in 5 gezeigt sind, speichern im lokalen Ausführungsknoten Daten, die von einer oder mehreren Datenspeichereinrichtungen im gemeinsam verwendeten Datenbankspeicher 308 abgerufen wurden. Somit verringern oder beseitigen die Zwischenspeicher die Engpassprobleme, die in Plattformen, die Daten aus entfernten Speichersystemen konsistent abrufen, auftreten. Statt auf Daten aus den entfernten Speichereinrichtungen wiederholt zuzugreifen, greifen die Systeme und Verfahren, die hier beschrieben sind, auf Daten aus den Zwischenspeichern in den Ausführungsknoten zu, was wesentlich schneller ist und das Engpassproblem, das oben diskutiert wird, vermeidet. In einigen Ausführungsformen sind die Zwischenspeicher unter Verwendung von Hochgeschwindigkeitsspeichereinrichtungen implementiert, die einen schnellen Zugriff auf die zwischengespeicherten Daten bereitstellen. Jeder Zwischenspeicher kann Daten einer beliebigen Speichereinrichtung im gemeinsam verwendeten Datenbankspeicher 308 speichern.
  • Ferner können die Zwischenspeicherbetriebsmittel und die Rechenbetriebsmittel zwischen verschiedenen Ausführungsknoten variieren. Zum Beispiel kann ein Ausführungsknoten erhebliche Rechenbetriebsmittel und minimale Zwischenspeicherbetriebsmittel enthalten, was den Ausführungsknotens für Aufgaben, die erhebliche Rechenbetriebsmittel erfordern, nützlich macht. Ein weiterer Ausführungsknoten kann erhebliche Zwischenspeicherbetriebsmittel und minimale Rechenbetriebsmittel enthalten, was diesen Ausführungsknoten für Aufgaben, die ein Zwischenspeichern großer Datenmengen erfordern, nützlich macht. Noch ein weiterer Ausführungsknoten kann Zwischenspeicherbetriebsmittel enthalten, die schnellere Ein-/Ausgabeoperationen bereitstellen, was für Aufgaben, die ein schnelles Durchsuchen großer Datenmengen erfordern, nützlich ist. In einigen Ausführungsformen werden die Zwischenspeicherbetriebsmittel und die Rechenbetriebsmittel, die einem bestimmten Ausführungsknoten zugeordnet sind, auf der Grundlage der erwarteten Aufgaben, die durch den Ausführungsknoten durchgeführt werden sollen, bestimmt, wenn der Ausführungsknoten erstellt wird.
  • Zusätzlich können sich die Zwischenspeicherbetriebsmittel und die Rechenbetriebsmittel, die einem bestimmten Ausführungsknoten zugeordnet sind, auf der Grundlage sich ändernder Aufgaben, die durch den Ausführungsknoten durchgeführt werden, im Zeitablauf ändern. Zum Beispiel können einem Ausführungsknoten mehr Verarbeitungsbetriebsmittel zugewiesen werden, wenn die Aufgaben, die durch den Ausführungsknoten durchgeführt werden, prozessorintensiver werden. Ähnlich können einem Ausführungsknoten mehr Zwischenspeicherbetriebsmittel zugewiesen werden, wenn die Aufgaben, die durch den Ausführungsknoten durchgeführt werden, eine größere Zwischenspeicherkapazität erfordern.
  • Obwohl die virtuellen Lager 1, 2 und n derselben Ausführungsplattform 304 zugeordnet sind, können die virtuellen Lager unter Verwendung mehrerer Rechensysteme bei mehreren geographischen Orten implementiert sein. Zum Beispiel kann das virtuelle Lager 1 durch ein Rechensystem bei einem ersten geographischen Ort implementiert sein, während die virtuellen Lager 2 und n durch ein weiteres Rechensystem bei einem zweiten geographischen Ort implementiert sind. In einigen Ausführungsformen sind diese verschiedenen Rechensysteme cloudbasierte Rechensysteme, die durch eine oder mehrere verschiedene Einheiten geführt werden.
  • Zusätzlich ist jedes virtuelle Lager in 5 derart gezeigt, dass es mehrere Ausführungsknoten besitzt. Die mehreren Ausführungsknoten, die jedem virtuellen Lager zugeordnet sind, können unter Verwendung mehrerer Rechensysteme bei mehreren geographischen Orten implementiert sein. Zum Beispiel implementiert eine Instanz des virtuellen Lagers 1 die Ausführungsknoten 502a und 502b in einer Rechenplattform bei einem geographischen Ort und implementiert den Ausführungsknoten 502n in einer verschiedenen Rechenplattform bei einem weiteren geographischen Ort. Das Wählen bestimmter Rechensysteme, um einen Ausführungsknoten zu implementieren, kann von verschiedenen Faktoren wie z. B. dem Niveau von Betriebsmitteln, die für einen bestimmten Ausführungsknoten benötigt werden (z. B. Verarbeitungsbetriebsmittelanforderungen und Zwischenspeicheranforderungen), den Betriebsmitteln, die in bestimmten Rechensystemen verfügbar sind, den Kommunikationsleistungsfähigkeiten von Netzen bei einem geographischen Ort oder zwischen geographischen Orten und davon, welche Rechensysteme bereits weitere Ausführungsknoten im virtuellen Lager implementieren, abhängen.
  • Die Ausführungsplattform 304 ist auch fehlertolerant. Zum Beispiel wird, wenn ein virtuelles Lager ausfällt, dieses virtuelle Lager schnell durch ein verschiedenes virtuelles Lager bei einem verschiedenen geographischen Ort ersetzt.
  • Eine bestimmte Ausführungsplattform 304 kann eine beliebige Anzahl virtueller Lager enthalten. Zusätzlich ist die Anzahl virtueller Lager in einer bestimmten Ausführungsplattform dynamisch, derart, dass neue virtuelle Lager erstellt werden, wenn zusätzliche Verarbeitungs- und/oder Zwischenspeicherbetriebsmittel benötigt werden. Ähnlich können bestehende virtuelle Lager gelöscht werden, wenn die Betriebsmittel, die dem virtuellen Lager zugeordnet sind, nicht mehr nötig sind.
  • In einigen Ausführungsformen können die virtuellen Lager an denselben Daten im gemeinsam verwendeten Datenbankspeicher 308 arbeiten, jedoch besitzt jedes virtuelle Lager seine eigenen Ausführungsknoten mit unabhängigen Verarbeitungs- und Zwischenspeicherbetriebsmitteln. Diese Konfiguration ermöglicht, dass Anforderungen an verschiedenen virtuellen Lagern unabhängig und ohne Störungen zwischen den Anforderungen verarbeitet werden. Dieses unabhängige Verarbeiten kombiniert mit der Fähigkeit, virtuelle Lager dynamisch hinzuzufügen und zu entfernen, unterstützt das Hinzufügen einer neuen Verarbeitungskapazität für neue Anwender ohne die Leistungsfähigkeit, die durch die existierenden Anwender beobachtet wird, zu beeinflussen.
  • Die Ausführungsplattform 304 kann Abfragen an einer externen Tabelle ausführen, wobei die externe Tabelle nicht durch die Datenbankplattform gemanagt wird, sondern durch die Datenbankplattform gelesen werden kann. Die Ausführungsplattform 302 kann derartige Abfragen durch Kommunizieren mit der externen Tabelle und Lesen von Daten direkt aus der externen Tabelle ausführen.
  • 6 ist ein schematisches Blockdiagramm einer Datenbankplattform 102. Die Datenbankplattform 102 enthält eine Datenseebenachrichtigungskomponente 602, eine Benachrichtigungskomponente 604 für externe Tabellen, eine Metadatenkomponente 606 für externe Tabellen, eine Metadatenaktualisierungskomponente 608, eine Erzeugungskomponente 610 für materialisierte Ansichten, eine Aktualisierungskomponente 612 für materialisierte Ansichten, eine Abfragekomponente 614 und eine Sicherheitskomponente 616. Die Datenbankplattform 102 kann in Kommunikation mit einem Datensee 620 sein, der eine externe Tabelle 622 enthalten kann. Die Datenbankplattform 102 kann ferner mit einer oder mehreren „internen“ Tabellen 626, die durch eine Datenbankplattform 102 gemanagt werden, in Kommunikation sein. Die Datenbankplattform 102 ist in Kommunikation mit Metadaten 624, die Informationen über eines oder mehrere der Datenelemente im Datensee 620, der externen Tabelle 622 und/oder der internen Tabelle 626 enthalten, und kann sie lesen und schreiben.
  • Die Datenseebenachrichtigungskomponente 602 empfängt eine Benachrichtigung, dass Daten in einem Datensee 620 hinzugefügt, gelöscht oder geändert wurden. Die Datenseebenachrichtigungskomponente 602 kann alternativ als ein Datenseebenachrichtigungslauscherkomponente bezeichnet werden. Die Datenseebenachrichtigungskomponente 602 kann den Datensee 620 proaktiv abfragen, um zu bestimmen, ob beliebige Daten hinzugefügt, gelöscht oder geändert wurden, seit die Datenbankplattform das letzte Mal Daten im Datensee gelesen hat. Die Datenseebenachrichtigungskomponente 602 kann eine Benachrichtigung vom Datensee 620 empfangen, die durch den Datenseeanbieter oder den Client automatisch oder manuell erzeugt wird.
  • In einer Ausführungsform ist die Datenseebenachrichtigungskomponente 602 konfiguriert, eine Aktualisierung am Quellverzeichnis im Datensee 620 zu detektieren, wobei die externe Tabelle 622 das Quellverzeichnis als Grundlage verwendet. In einer Ausführungsform empfängt die Datenseebenachrichtigungskomponente 602 eine Angabe, dass eine Datei dem Quellverzeichnis hinzugefügt, in ihm geändert oder aus ihm entfernt wurde. In einer Ausführungsform die ist Datenseebenachrichtigungskomponente 602 in Kommunikation mit einer einfachen Warteschlangendienstnachricht („SQS“-Nachricht). Diese Kommunikation kann durch den Client oder einen Systemadministrator aufgebaut werden, wenn die externe Tabelle 622 erzeugt wird. Die SQS-Warteschlangenkennung (ARN) kann zum Datensee 620 zurückgeliefert werden, derart, dass Push-Benachrichtigungen mittels SQS jedes Mal erzeugt werden, wenn eine Datei dem Datensee 620 hinzugefügt, in ihm aktualisiert oder aus ihm gelöscht wird. In einer Ausführungsform empfängt die Datenseebenachrichtigungskomponente 602 eine SQL-Anweisung, um eine Datei in einer externen Tabelle 622 zu registrieren und zu deregistrieren. Die SQL-Anweisung kann von einem Client empfangen werden und kann angeben, dass Metadaten auf der Grundlage des Ist-Zustands des Orts der externen Tabelle 622 aktualisiert werden sollen.
  • Die Benachrichtigungskomponente 604 für externe Tabellen empfängt eine Benachrichtigung, dass Daten einer externen Tabelle 622 hinzugefügt, aus ihr gelöscht oder in ihr geändert wurden. Die Benachrichtigungskomponente 604 für externe Tabellen kann alternativ als eine Benachrichtigungslauscherkomponente für externe Tabellen bezeichnet werden. Die Benachrichtigungskomponente 604 für externe Tabellen kann die externe Tabelle 622 proaktiv abfragen, um zu bestimmen, ob Daten hinzugefügt, gelöscht oder geändert wurde, seit die Datenbankplattform das letzte Mal Daten in der externen Tabelle 622 gelesen hat. Die Benachrichtigungskomponente 602 externer Tabellen kann eine Benachrichtigung von der externen Tabelle 622 oder dem Datensee 620 empfangen, die durch den Datenseeanbieter (d. h. auch den Anbieter der externen Tabelle) oder den Client automatisch oder manuell erzeugt wird. Die externe Tabelle 622 kann eine Quelltabelle bilden, die im Datensee 620 gespeichert ist. Die Quelltabelle kann durch den Client definiert werden und der Client kann Daten, die in der Quelltabelle gespeichert sind, hinzufügen, löschen oder modifizieren. Der Client kann eine externe Tabelle 622 mit der Datenbankplattform erstellen, indem der Datenbankplattform Lesegenehmigungen an der Quelltabelle im Datensee 620 gewährt werden.
  • Die Metadatenkomponente 606 für externe Tabellen erzeugt, managt und aktualisiert Metadaten 624, die Informationen über Daten, die in der externen Tabelle 622 gespeichert sind, enthalten. Die Metadaten 624 können gemäß den Metadatenstrukturen, die in 10 und 11A-11C offenbart sind, gespeichert sein. Die Metadatenkomponente 606 für externe Tabellen kann die Daten, die in der externen Tabelle 622 gespeichert sind, lesen, um die Metadaten 624 zu bestimmen. Die Metadatenkomponente 606 für externe Tabellen kann die Metadaten 624 auf der Grundlage davon bestimmen, wie Daten in der externen Tabelle 622 organisiert sind. Der Client kann Daten in der externen Tabelle 622 gemäß einer hierarchischen Struktur organisieren und die Details der hierarchischen Struktur können der Datenbankplattform bereitgestellt werden. Die hierarchische Organisationsstruktur für die externe Tabelle 622 enthält eine Angabe davon, wie Ordner und Unterordner von Daten in der externen Tabelle 622 organisiert sind. In einem Beispiel kann eine hierarchische Struktur angeben, dass ein Ordner alle Transaktionen für ein bestimmtes Jahr enthält und dass Unterordner in diesem Ordner alle Transaktionen für jeden Monat dieses Jahres enthalten. Die Daten in der externen Tabelle 622 können gemäß einem weiteren Parameter wie z. B. Ort oder Name in Partitionen unterteilt sein. Der Client lädt Dateien zu einem bestimmten Ordner in der externen Tabelle 622 hoch und der Ort der Datei (d. h., in welchen Ordner die Datei hochgeladen wird) führt die Metadatenkomponente 606 für externe Tabellen beim Erzeugen der Metadaten 624 über die externe Tabelle 622.
  • Die Metadatenaktualisierungskomponente 608 aktualisiert die Metadaten 624 über die externe Tabelle 622 in Reaktion auf Änderungen, die an der externen Tabelle 622 vorgenommen werden. Die Metadaten 624 für die externe Tabelle 622 werden aktualisiert, wenn Daten in der externen Tabelle 622 hinzugefügt, gelöscht oder aktualisiert werden.
  • Die Erzeugungskomponente 610 für materialisierte Ansichten erzeugt eine oder mehrere materialisierte Ansichten über die externe Tabelle 622. Die Erzeugungskomponente 610 für materialisierte Ansichten kann eine materialisierte Ansicht auf der Grundlage einer Abfrage, die vom Client empfangen wurde, erzeugen. Der Client kann manuell anfordern, dass eine materialisierte Ansicht für einen bestimmten Datensatz in der externen Tabelle 622 erzeugt wird. Die Datenbankplattform kann automatisch bestimmen, dass eine materialisierte Ansicht für einen bestimmten Datensatz in der externen Tabelle 622 erzeugt werden sollte, wenn dieser Datensatz für eine Abfrage gilt, die durch den Client häufig angefordert wird. Die materialisierte Ansicht ist bei der Datenbankplattform 102 gespeichert und kann im Zwischenspeicher oder im gemeinsam verwendeten Datenbankspeicher 308 gespeichert sein. Die materialisierte Ansicht kann in einem Zwischenspeicher gespeichert sein, der einem Knoten der Ausführungsplattform 304 zugeordnet ist.
  • Die Erzeugungskomponente 610 für materialisierte Ansichten erzeugt die materialisierte Ansicht auf der Grundlage der externen Tabelle 622. Die Erzeugungskomponente 610 für materialisierte Ansichten kann die materialisierte Ansicht derart erzeugen, dass sie ihre eigene Domäne besitzt und sowohl die Eigenschaften einer Tabelle als auch einer Ansicht mit zusätzlichen Informationen, die mit der externen Tabelle 622 verknüpft sind, und Versionierungsinformationen in Bezug auf die externe Tabelle 622 und/oder das Quellverzeichnis im Datensee 620 besitzt. Die materialisierte Ansicht ist eine deklarative Spezifikation eines beständigen Abfrageergebnisses, das automatisch geführt und durchsichtig verwendet wird. Die materialisierte Ansicht ist ein Datenbankobjekt, das die Ergebnisse eines Ergebnisses beständiger Abfragen an der externen Tabelle 622 und/oder dem Quellverzeichnis im Datensee 620 enthält. Die materialisierte Ansicht kann eine lokale Kopie von Daten sein, die entfernt verortet sind, kann eine Untermenge von Zeilen und/oder Spalten des Quellverzeichnisses oder eines Verbindungsergebnisses sein oder kann eine Zusammenfassung unter Verwendung einer Zusammenfassungsfunktion sein. Die Erzeugungskomponente 610 für materialisierte Ansichten kann konfiguriert sein, die materialisierte Ansicht durch Zwischenspeichern der Ergebnisse einer Abfrage durch den Prozess einer Materialisierung zu erzeugen, derart, dass das zwischengespeicherte Abfrageergebnis als eine konkrete „materialisierte“ Tabelle gespeichert ist, die aus der ursprünglichen externen Tabelle 622 und/oder dem ursprünglichen Quellverzeichnis im Datensee 620 aktualisiert werden kann. Die materialisierte Ansicht kann eine verbesserte Leistungsfähigkeit von Datenbankabfragen in großen Auswahl-, Verbindungs- oder Zusammenfassungsanweisungen bereitstellen. Die materialisierte Ansicht schafft zusätzlichen Speicher, der im Vergleich zum Quellverzeichnis klein ist, die materialisierte Ansicht kann automatisch geführt werden und die materialisierte Ansicht kann ohne Ändern einer bestehenden Arbeitslast an der externen Tabelle 622 und/oder dem Quellverzeichnis im Datensee 620 durchsichtig verwendet werden. Die materialisierte Ansicht enthält zusätzliche mit ihrem Management verknüpfte Informationen, die eine Quellverzeichniskennung, ein Satz von Partitionen, die seit der letzten Aktualisierungsversion der materialisierten Ansicht materialisiert wurden, und einen Satz von Partitionen, die seit einer letzten kompakten Version der materialisierten Ansicht entfernt wurden, enthalten.
  • In einer Ausführungsform speichert die Erzeugungskomponente 610 für materialisierte Ansichten in der materialisierten Ansicht dieselben Informationen wie für Tabellen, z. B. Zustandsinformationen, und für Ansichten, z. B. Ansichtdefinitionen. Zusätzlich speichert die Erzeugungskomponente 610 für materialisierte Ansichten eine Quellverzeichniskennung. Die materialisierte Ansicht wird während der Kompilierung mit der Quellverzeichniskennung markiert, um das Quellverzeichnis anzugeben, das zur Wartung und inkrementellen Aktualisierung der materialisierten Ansicht verwendet wird. Die Erzeugungskomponente 610 für materialisierte Ansichten speichert ferner eine Angabe eines Typs einer materialisierten Ansicht, wobei der Typ einer materialisierten Ansicht einen Aufzählungstyp angibt, der verwendet wird, um den Umfang einer materialisierten Ansicht (z. B. Projektion, Zusammenfassung, Kurzfassung, Verbinden usw.) zu bestimmen. Zusätzlich kann die Erzeugungskomponente 610 für materialisierte Ansichten Informationen enthalten, die für eine DML-Versionierung, die der Tabellenversion, die der materialisierten Ansicht zugeordnet ist, hinzugefügt wird, spezifisch sind. Die materialisierte Ansicht kann mit einer Zeit einer vorhergehenden Aktualisierung und einer Zeit einer vorhergehenden Verdichtung der materialisierten Ansicht markiert werden.
  • Die Aktualisierungskomponente 612 für materialisierte Ansichten aktualisiert eine materialisierte Ansicht, die über eine externe Tabelle erzeugt wird. Die Aktualisierungskomponente 612 für materialisierte Ansichten kann ferner materialisierte Ansichten aktualisieren, die über interne Tabellen 626, die durch die Datenbankplattform 102 gemanagt werden, erzeugt werden. Die Aktualisierungskomponente 612 für materialisierte Ansichten aktualisiert eine materialisierte Ansicht über eine externe Tabelle, wenn Daten zur externen Tabelle hinzugefügt, aus ihr gelöscht oder in ihr aktualisiert werden. Die materialisierte Ansicht kann aktualisiert werden, nachdem eine Schwellenwertanzahl von Änderungen an der externen Tabelle vorgenommen wurde, nachdem eine Schwellenwertzeitdauer seit der letzten Aktualisierung verstrichen ist, nach sämtlichen Aktualisierungen an der externen Tabelle oder auf der Grundlage einer beliebigen geeigneten Metrik. In einer Ausführungsform kann der Client definieren, wann und wie häufig die materialisierte Ansicht aktualisiert wird und/oder kann Parameter für eine annehmbare Menge von Inkonsistenz oder Veraltung zwischen der externen Tabelle und der materialisierten Ansicht definieren.
  • Die Aktualisierungskomponente 612 für materialisierte Ansichten kann ein Aktualisierungskonstrukt führen, das den Satz von Partitionen, die in die materialisierte Ansicht eingesetzt werden sollen, angibt, indem das Protokoll von hinzugefügten Partitionen, die zum Quellverzeichnis des Datensees 620 seit der letzten Aktualisierung der materialisierten Ansicht hinzugefügt wurden, angibt. Die Aktualisierungskomponente 612 für materialisierte Ansichten führt ein kompaktes Konstrukt, das den Satz von Partitionen angibt, die aus der materialisierten Ansicht entfernt werden sollen, durch Abrufen des Protokolls von Partitionen, die seit der letzten Verdichtung der materialisierten Ansicht aus dem Quellverzeichnis entfernt wurden.
  • Die Aktualisierungskomponente 612 für materialisierte Ansichten ist konfiguriert, eine Aktualisierung an der materialisierten Ansicht durch Hinzufügen einer oder mehrerer Partitionen oder neuen Zeilen zur materialisierten Ansicht durchzuführen. Die Aktualisierungskomponente 612 für materialisierte Ansichten empfängt eine Angabe von der Datenseebenachrichtigungskomponente 602 und/oder der Benachrichtigungskomponente 604 für externe Tabellen, dass eine Partition seit der letzten Aktualisierung der materialisierten Ansicht in das Quellverzeichnis des Datensees 620 eingesetzt wurde. Die Aktualisierungskomponente 612 für materialisierte Ansichten setzt dann die Partition in die materialisierte Ansicht ein. Die Aktualisierungskomponente 612 für materialisierte Ansichten kann für jede materialisierte Ansicht, die sie erzeugt, eine einzelne Quellenverzeichniskennung empfangen. In einer Ausführungsform wird die Aktualisierungskomponente 612 für materialisierte Ansichten durch ein Konto, das eine Anweisung ausgibt, manuell ausgelöst, aktiviert oder deaktiviert. In einer Ausführungsform aktualisiert die Aktualisierungskomponente 612 für materialisierte Ansichten die materialisierte Ansicht automatisch, wenn die Aktualisierungskomponente 612 für materialisierte Ansichten aktiviert wird.
  • In einer Ausführungsform führt die Aktualisierungskomponente 612 für materialisierte Ansichten eine Einsetzanweisung aus. Die Aktualisierungskomponente 612 für materialisierte Ansichten empfängt ein Protokoll neuer Partitionen, die seit einer vorhergehenden Aktualisierung der externen Tabelle und/oder der materialisierten Ansicht zum Quellverzeichnis des Datensees 620 hinzugefügt wurden. Die Aktualisierungskomponente 612 für materialisierte Ansichten setzt die neue Partition in die materialisierte Ansicht ein und kann konfiguriert sein, die neuen Partitionen in einer Spalte der materialisierten Ansicht zu gruppieren und die neuen Partitionen in der materialisierten Ansicht zu ordnen. In einer Ausführungsform sind die Metadaten für die neue Partition zwischen dem Quellverzeichnis des Datensees 620 und der externen Tabelle 622 konsistent.
  • Die Abfragekomponente 614 bestimmt einen Abfrageplan, um Abfragen über eine externe Tabelle auszuführen. Der Betriebsmittelmanager 302 kann eine Abfrage von einem Client empfangen. Die Abfrage kann eine Abfrage in der strukturierten Abfragesprache (SQL-Abfrage), die bestimmte Parameter besitzt, enthalten. Die Abfragekomponente 614 liest die gemeinsam verwendeten Metadaten 312, um zu bestimmen, wo die zutreffenden Dateien zum Antworten auf die Abfrage gespeichert sind. Die zutreffenden Dateien können in „internen“ Daten gespeichert sein, die im gemeinsam verwendeten Datenbankspeicher 308, der durch die Datenbankplattform 102 gemanagt wird, gespeichert sind, können in einem Zwischenspeicher in der Ausführungsplattform 304 gespeichert sein, können in der externen Tabelle 106 gespeichert sein, können in materialisierten Ansichten gespeichert sein oder können in beliebigen Kombinationen der oben beschriebenen gespeichert sein. Die Abfragekomponente 614 bestimmt die Dateien, die nötig sind, um auf die Abfrage zu antworten, und bestimmt ferner, wobei diese Dateien über den gemeinsam verwendeten Datenbankspeicher 308, den Zwischenspeicher in der Ausführungsplattform 304, die externe Tabelle 106 und/oder materialisierte Ansichten verortet sind. Die Abfragekomponente 614 erzeugt einen Abfrageplan, der eine oder mehrere einzelne Unteraufgaben enthält, die ausgeführt werden sollen, um auf die Abfrage zu antworten. Die Abfragekomponente 614 weist die eine oder die mehreren einzelnen Unteraufgaben verschiedenen Knoten der Ausführungsplattform 304 zur Verarbeitung zu. Die Abfragekomponente 614 weist die eine oder die mehreren einzelnen Unteraufgaben auf der Grundlage davon zu, wo die Dateien gespeichert sind. Zum Beispiel wird dann, wenn ein bestimmter Ausführungsknoten eine materialisierte Ansicht, die Daten, die zum Antworten auf die Abfrage nötig sind, enthält, zwischengespeichert hat, dem Ausführungsknoten eine Unteraufgabe im Zusammenhang mit diesen Daten zugewiesen. Ferner wird z. B. dann, wenn ein bestimmter Ausführungsknoten einen Abschnitt der externen Tabelle oder der „internen“ Daten, die durch die Datenbankplattform gemanagt werden, zwischengespeichert hat, dem Ausführungsknoten eine Unteraufgabe im Zusammenhang mit den Daten zugewiesen. Die Abfrage wird durch die Ausführungsplattform ausgeführt und kann durch den Betriebsmittelmanager 302 zum Client zurückgegeben werden.
  • Die Sicherheitskomponente 616 managt Genehmigungen für den Datensee 620, die externe Tabelle 106, die Datenbankplattform 102, den gemeinsam verwendeten Datenbankspeicher 308 und/oder materialisierte Ansichten. Die Sicherheitskomponente 616 führt ein oder mehrere Sicherheitsprotokolle aus, um Daten in beliebigen des Quellverzeichnisses des Datensees 620, der externen Tabelle 622, der Metadaten 624, der internen Tabelle 626 und/oder der materialisierten Ansicht zu schützen. In einer Ausführungsform stellt die Sicherheitskomponente 616 einem Konto eine Kontoeinstellung bereit, die dem Quellverzeichnis zugeordnet ist, derart, dass das Konto eine externe Tabelle und/oder eine materialisierte Ansicht, die auf der Grundlage des Quellverzeichnisses erzeugt werden soll, anfordern kann. Daher kann die Sicherheitskomponente 616 ferner einem zweiten Konto, das dem Quellverzeichnis zugeordnet ist, eine Kontoeinstellung bereitstellen, derart, dass das zweite Konto keine Genehmigung besitzt, eine externe Tabelle oder eine materialisierte Ansicht anzufordern. In einer Ausführungsform verschlüsselt die Sicherheitskomponente 616 Daten im Quellverzeichnis, der externen Tabelle oder der materialisierten Ansicht. In einer Ausführungsform die Sicherheitskomponente 616 verschlüsselt oder chiffriert Daten in dem Quellverzeichnis, der externen Tabelle oder der materialisierten Ansicht in vorgegebenen Zeitzeiträumen aufgrund einer Client-Anforderung und/oder dann, wenn Daten aktualisiert werden, neu.
  • In einer Ausführungsform wird die Arbeit, die durch die Datenbankplattform 102 durchgeführt wird, im Hintergrund durchgeführt und kann in einer kontinuierlichen Weise auftreten. In einer Ausführungsform ist die Datenbankplattform 102 konfiguriert, sobald eine materialisierte Ansicht auf der Grundlage einer externen Tabelle 622 erzeugt wird, die Frische der materialisierten Ansicht aufrechtzuerhalten. In einer Ausführungsform kann ein maximales Budget zur Wartung materialisierter Ansichten durch einen Client verändert werden. Der Client kann ein erhebliches Budget für Wartungsoperationen bestimmter materialisierter Ansichten bereitstellen, jedoch ein kleineres Budget für weitere materialisierten Ansichten bereitstellen. Der Client kann Zugriff auf mehrere Prioritätseinstellungen für Wartungsoperationen verschiedener materialisierter Ansichten besitzen. Der Client kann ferner Informationen empfangen, die angeben, wie häufig und wie effizient eine materialisierte Ansicht aktualisiert oder verdichtet wird.
  • 7 ist ein schematisches Blockdiagramm eines Beispielprozessablaufs 700 zum Abfragen über eine externe Tabelle. Der Prozessablauf 700 kann durch einen Betriebsmittelmanager 302 und eine Ausführungsplattform 304, die hier beschrieben sind, ausgeführt werden. Der Client 118 kann ein Konto enthalten, das dem Betriebsmittelmanager 302 zugeordnet ist (d. h. der Datenbankplattform 102 zugeordnet ist) und ferner einem Datensee 104 zugeordnet ist, der die Daten für die externe Tabelle 106 speichert. Der Client 118 liefert eine Abfrage zum Betriebsmittelmanager 302. Die Abfrage kann einen Befehl in der strukturierten Abfragesprache (SQL-Befehl) enthalten. Der Betriebsmittelmanager 302 empfängt bei 702 die Abfrage vom Client-Konto und die Abfrage enthält ein oder mehrere Abfrageprädikate. Der Betriebsmittelmanager 302 nimmt bei 704 auf Metadaten Bezug, um die Partitionen zu identifizieren, die nötig sind, um auf die Abfrage zu antworten, indem bestimmt wird, welche Partitionen in der externen Tabelle und/oder dem gemeinsam verwendeten Datenbankspeicher 308 Daten enthalten, die das eine oder die mehreren Abfrageprädikate erfüllen. Der Betriebsmittelmanager 302 erzeugt bei 706 einen Abfrageplan, der mehrere einzelne Unteraufgaben enthält, die verarbeitet werden müssen, um auf die Abfrage zu antworten. Der Betriebsmittelmanager 302 weist bei 708 die mehreren einzelnen Unteraufgaben einem oder mehreren Knoten einer Ausführungsplattform zu.
  • Der Betriebsmittelmanager 302 kann die mehreren einzelnen Unteraufgaben auf der Grundlage von Metadaten und ferner auf der Grundlage davon, wo die identifizierten Partitionen gespeichert sind, zuweisen. Zum Beispiel kann der Betriebsmittelmanager 302 auf Metadaten Bezug nehmen, um zu lernen, dass eine erste identifizierte Partition im Zwischenspeicher eines ersten Ausführungsknotens gespeichert ist. Der Betriebsmittelmanager 302 kann dann die erste identifizierte Partition dem ersten Ausführungsknoten zuweisen, um die Abfrageantwortzeit zu beschleunigen und die Verarbeitungslast zu verringern, um ein Abrufen der Partition aus einer externen Tabelle oder dem gemeinsam verwendeten Datenbankspeicher 308 zu vermeiden. Ferner kann der Betriebsmittelmanager 302 z. B. bestimmen, dass in einer materialisierten Ansicht auf eine identifizierte Partition Bezug genommen wird. Der Betriebsmittelmanager 302 kann einen Ausführungsknoten zuweisen, um die materialisierte Ansicht zu lesen, um eine der einzelnen Unteraufgaben des Abfrageplans auszuführen.
  • Im Prozessablauf 700 besitzt ein Beispielausführungsknoten 306 der Ausführungsplattform 304 Zugriff auf die externe Tabelle 106. Der Ausführungsknoten 306 empfängt einen Befehl vom Betriebsmittelmanager 302, bei 710 eine diskrete Unteraufgabe des Abfrageplans auszuführen, wobei die diskrete Unteraufgabe erfordert, dass der Ausführungsknoten 306 Daten in der externen Tabelle 106 liest. Der Ausführungsknoten 306 greift bei 712 auf die externe Tabelle zu, um eine oder mehrere Partitionen in der externen Tabelle, die in der diskreten Unteraufgabe festgelegt werden, zu lesen. Der Ausführungsknoten 306 verarbeitet bei 714 die Aufgabe durch Lesen einer oder mehrerer Partitionen in der externen Tabelle und Filtern von Zeilen, die die Abfrageprädikate nicht erfüllen, um lediglich die Zeilen zurückzugeben, die die Abfrageprädikate erfüllen.
  • In einer Ausführungsform umfasst das Bezugnehmen auf Metadaten bei 704, um Partitionen zu identifizieren, die nötig sind, um auf die Abfrage zu antworten, ein Bezugnehmen auf gemeinsam verwendete Metadaten 312, um Partitionen in der externen Tabelle zu identifizieren und ferner Partitionen im internen Datenbankspeicher (wie z. B. Zwischenspeicher und/oder Daten im gemeinsam verwendeten Datenbankspeicher 308) zu identifizieren, die nötig sind, auf die Abfrage zu antworten. Das Bezugnehmen auf die Metadaten bei 704 kann ferner ein Bestimmen davon enthalten, ob eine materialisierte Ansicht über beliebige Daten in der externen Tabelle oder einer internen Tabelle erzeugt wurde. Falls die externe Tabelle und/oder die interne Tabelle seit einer jüngsten Aktualisierung der entsprechenden materialisierten Ansicht geändert wurden, kann der Abfrageplan ein Ergänzen der materialisierten Ansicht mit Daten in der externen Tabelle oder die interne Tabelle umfassen. Dies kann erreicht werden, indem Metadaten für die materialisierte Ansicht gelesen werden, um einen Zeitstempel zu bestimmen, wenn die materialisierte Ansicht aktualisiert wurde, und ferner indem Metadaten für die entsprechende externe Tabelle und/oder interne Tabelle gelesen werden, um Zeitstempel zu bestimmen, wenn jüngste Änderungen an der externen Tabelle und/oder der internen Tabelle vorgenommen wurden. Die Zeitstempel können verglichen werden, um zu bestimmen, wie viele Änderungen und welche Änderungen seit der jüngsten Aktualisierung der entsprechenden materialisierten Ansicht an der externen Tabelle und/oder der internen Tabelle vorgenommen wurden. Ein Ergänzen der materialisierten Ansicht kann ferner durch Lesen von Metadaten, um zu bestimmen, welche Änderungen bei bestimmten Zeitstempeln vorgenommen wurden, erreicht werden. Die Zeitstempel können Informationen darüber enthalten, welche Änderungen vorgenommen wurden, z. B. welche Anweisungen in der Datenmanipulationssprache (DML-Anweisungen) wie z. B. Aktualisierungs-, Lösch- und/oder Zusammenführanweisungen ausgeführt wurden. Die materialisierte Ansicht kann auf der Grundlage dieser Metadaten ergänzt werden, um zu bestimmen, welche Zeilen in der materialisierten Ansicht in Bezug auf die externe Tabelle und/oder die interne Tabelle veraltet sind. Die Zeilen, die als veraltet bestimmt werden, werden nicht aus der materialisierten Ansicht gelesen, sondern werden stattdessen aus der internen Tabelle und/oder der externen Tabelle gelesen.
  • 8 veranschaulicht ein schematisches Blockdiagramm eines Beispielprozessablaufs 800 zum inkrementellen Aktualisieren einer materialisierten Ansicht. Der Prozessablauf 800 kann durch eine beliebige geeignete Recheneinrichtung ausgeführt werden, die z. B. einen Betriebsmittelmanager 302 und/oder eine Datenbankplattform 102 und speziell eine Erzeugungskomponente 610 für materialisierte Ansichten und/oder eine Aktualisierungskomponente 612 für materialisierte Ansichten enthält. Der Prozessablauf 800 enthält bei 802 ein Erzeugen einer materialisierten Ansicht, das auf der Grundlage einer Quelltabelle erfolgt (in einer Ausführungsform kann, wie hier offenbart ist, die Quelltabelle eine externe Tabelle sein, die z. B. ein Datenseequellverzeichnis als Grundlage verwendet). Der Prozessablauf 800 umfasst bei 804 ein Aktualisieren der Quelltabelle, was ein Einsetzen einer Partition bei 806 und/oder ein Entfernen einer Partition bei 808 umfassen kann. Der Prozessablauf umfasst bei 810 ein Abfragen der materialisierten Ansicht und der Quelltabelle, um jegliche Aktualisierungen der Quelltabelle, die in der materialisierten Ansicht nicht widergespiegelt sind, zu detektieren. Der Prozessablauf 800 enthält bei 812 ein Anwenden der Aktualisierung auf die materialisierte Ansicht.
  • In dem Beispiel, das in 8 veranschaulicht ist, wird bei 802 die materialisierte Ansicht durch Durchsuchen einer Quelltabelle erzeugt. Die Quelltabelle enthält den Datensatz {1 2 3 4 5 6}, wie veranschaulicht ist. Die entsprechende materialisierte Ansicht enthält die Datensätze [1 (1 2 3)] und [2(4 5 6)], die Partitionen in der Datenbank angeben können, wobei die Partitionen unveränderliche Speicherobjekte in der Datenbank sind.
  • In dem Beispiel, das in 8 veranschaulicht ist, wird die Quelltabelle bei 804 (siehe Δ1 ) durch Hinzufügen von (+7) und Entfernen von (-2) aktualisiert. Bei 806 (siehe Δ2) werden durch Hinzufügen von (+8) und Hinzufügen von (+9) zwei Partitionen in die Quelltabelle eingesetzt. Bei 808 (siehe A3) werden durch Entfernen von (-1) und (-3) zwei Partitionen aus der Quelltabelle entfernt. Wie in Δ (Delta) veranschaulicht ist, enthält die Gesamtaktualisierung der Quelltabelle {+7 +8 +9 -1 -2 -3}, was jede der verschiedenen Aktualisierungen (siehe Δ1, Δ2 und Δ3), die an der Quelltabelle vorgenommen werden, enthält.
  • In dem Beispiel, das in 8 veranschaulicht ist, werden bei 810 die materialisierte Ansicht und die Quelltabelle abgefragt. Die Abfrage 810 enthält ein Zusammenführen der materialisierten Ansicht und der Quelltabelle. Die Quelltabelle wird durchsucht und die Partitionen {7 8 9} werden in der Quelltabelle detektiert und diese Partitionen werden in der materialisierten Ansicht nicht detektiert. Die materialisierte Ansicht wird durchsucht und die Partition (1 2 3) wird in der materialisierten Ansicht detektiert und wird in der Quelltabelle nicht detektiert.
  • In dem Beispiel, das in 8 veranschaulicht ist, wird bei 812 die Aktualisierung auf die materialisierte Ansicht angewendet. Die materialisierte Ansicht wird durchsucht und das System detektiert die Partitionen [1(1 2 3)] und [2(456)] und das System detektiert, dass die Partition [1(1 2 3)] in der materialisierten Ansicht vorhanden ist und entfernt werden sollte. Das System löscht die Partition [1(1 2 3)] derart, dass die Partition [2(4 5 6)] verbleibt. Das System durchsucht die Quelltabelle und entdeckt die Partition {7 8 9} und setzt diese Partition in die materialisierte Ansicht ein, derart, dass die materialisierte Ansicht die Partitionen [2(4 5 6)] und [3(7 8 9)] enthält.
  • 9 veranschaulicht ein schematisches Blockdiagramm eines Beispielprozessablaufs 900 zum Aktualisieren einer materialisierten Ansicht über eine externe Tabelle. Der Prozessablauf 900 kann durch eine beliebige geeignete Recheneinrichtung ausgeführt werden, die z. B. einen Betriebsmittelmanager 302 und/oder eine Datenbankplattform 102 und speziell eine Erzeugungskomponente 610 für materialisierte Ansichten und/oder eine Aktualisierungskomponente 612 für materialisierte Ansichten der Datenbankplattform 102 enthält. Die materialisierte Ansicht wird über eine externe Tabelle erzeugt, derart, dass die materialisierte Ansicht mit einer Datenbankplattform 102 erzeugt, aktualisiert und gespeichert wird und die Quelltabelle für die materialisierte Ansicht (d. h. die externe Tabelle 106) nicht durch die Datenbankplattform gemanagt, gespeichert oder aktualisiert wird. Die materialisierte Ansicht befindet sich in der Datenbankplattform 102 und die Quelltabelle befindet sich außerhalb der Datenbankplattform 102. Die materialisierte Ansicht kann in einem beständigen Speicher wie z. B. dem gemeinsam verwendeten Datenbankspeicher 308 gespeichert sein oder kann in einem Zwischenspeicher wie z. B. einem Zwischenspeicher in einem Ausführungsknoten 306 der Ausführungsplattform 304 gespeichert sein. Die Quelltabelle für die materialisierte Ansicht (d. h. die externe Tabelle) kann in einem beständigen Speicher in einem Datensee gespeichert sein.
  • Der Prozessablauf 900 enthält bei 902 eine anfängliche Aktualisierung der materialisierten Ansicht. Die anfängliche Aktualisierung bei 902 umfasst ein Durchsuchen der externen Tabelle (der Quelltabelle für die materialisierte Ansicht) und ein Aktualisieren der materialisierten Ansicht. Der Prozessablauf 900 enthält, dass bei 904 Aktualisierungen an der externen Tabelle vorgenommen werden. Die Aktualisierungen können durch einen Client initiiert werden, der mit einem Datensee, der die externe Tabelle unterstützt, in Kommunikation ist, und die Aktualisierungen können durch einen Anbieter des Datensees implementiert werden. In dem Beispiel in 9 werden die Aktualisierungen an der Mikropartition 5 (MP5) und der Mikropartition 6 (MP6) vorgenommen. Die Aktualisierungen können ein Modifizieren eines Eintrags in einer oder mehreren Zeilen von MP5 und MP6 umfassen.
  • Der Prozessablauf 900 enthält Einsetzvorgänge, die bei 906 an der externen Tabelle vorgenommen werden. Die Einsetzvorgänge können durch einen Client initiiert werden, der mit einem Datensee, der die externe Tabelle unterstützt, in Kommunikation ist, und die Einsetzvorgänge können durch einen Anbieter des Datensees implementiert werden. Im Beispiel in 9 werden die Einsetzvorgänge, die bei 906 durchgeführt werden, an der Mikropartition 1 (MP1) und der Mikropartition 2 (MP2) ausgeführt. Die Einsetzvorgänge können eine oder mehrere Zeilen enthalten, die zu MP1 oder MP2 hinzugefügt werden. Die Einsetzvorgänge können ein Hinzufügen von MP1 oder MP2 enthalten, wenn eine oder mehrere dieser Partitionen zuvor nicht vorhanden waren.
  • Der Prozessablauf 900 enthält Löschvorgänge, die bei 908 an der externen Tabelle ausgeführt werden. Die Löschvorgänge können durch einen Client initiiert werden, der mit einem Datensee, der die externe Tabelle unterstützt, in Kommunikation ist, und Löschvorgänge können durch einen Anbieter des Datensees implementiert werden. Im Beispiel in 9 werden die Löschvorgänge, die bei 908 durchgeführt werden, an der Mikropartition 3 (MP3) und der Mikropartition 4 (MP4) ausgeführt. Die Löschvorgänge können enthalten, dass eine oder mehrere Zeilen aus MP3 und/oder MP4 entfernt werden. Die Löschvorgänge können enthalten, dass MP3 und/oder MP4 vollständig entfernt werden.
  • Der Prozessablauf 900 enthält ein Anwenden von Änderungen, die an der externen Tabelle (d. h. der Quelltabelle für die materialisierte Ansicht) vorgenommen wurden, auf die materialisierte Ansicht bei 910. Das Anwenden der Änderungen bei 910 enthält ein Erzeugen einer neuen MP5 und einer neuen MP6, die die aktualisierten Zeilen gemäß den Aktualisierungen, die bei 904 an der externen Tabelle vorgenommen wurden, aufweisen. Das Anwenden der Aktualisierungen enthält ein Entfernen und Ersetzen der geänderten Zeilen. Das Anwenden der Änderungen bei 910 enthält ein Erzeugen einer neuen MP1 und einer neuen MP2, die eingesetzte Zeilen gemäß den Einsetzvorgängen, die bei 906 an der externen Tabelle vorgenommen wurden, besitzen. Das Anwenden der Änderungen bei 910 enthält ein Erzeugen einer neuen MP3 und einer neuen MP4, wobei die gelöschten Zeilen gemäß den Löschvorgängen, die bei 908 an der externen Tabelle vorgenommen wurden, entfernt sind. Der Prozessablauf 900 umfasst ein Abfragen der materialisierten Ansicht bei 912. Weil die materialisierte Ansicht aktualisiert wurde, um Aktualisierungen, die an der externen Tabelle vorgenommen wurden, widerzuspiegeln, können Abfragen über der materialisierten Ansicht statt der externen Tabelle selbst ausgeführt werden, um Abfrageantwortzeiten zu beschleunigen.
  • 10 ist ein schematisches Diagramm einer Datenstruktur 1000 zum Speichern von Datenbankmetadaten, was in beständigem Speicher und einem Zwischenspeicher enthält. Die Datenstruktur 1000 kann auf das Speichern von Metadaten für externe Tabellen, die nicht durch eine Datenbankplattform 102 gemanagt werden, und/oder für interne Tabellen, die durch die Datenbankplattform 102 gemanagt und gespeichert werden, angewendet werden. Die Datenstruktur 1000 enthält kumulierte Tabellenmetadaten 1002, die Informationen über eine Tabelle enthalten. Die Tabelle kann eine externe Tabelle oder eine interne Tabelle sein. Die Tabelle kann mehrere Dateien oder Partitionen enthalten, die jeweils mehrere Spalten und Zeilen, die Daten speichern, enthalten können. Die kumulierten Tabellenmetadaten 1002 enthalten globale Informationen über die Tabelle und können Zusammenfassungsinformationen, die in jeder von mehreren Gruppierungsausdruckseigenschaften 1014a, 1014b, 1014c und 1014d (die hier gemeinsam als „1014“ referenziert werden können) gespeichert sind, enthalten. Die Gruppierungsausdruckseigenschaften 1014 enthalten zusammengefasste Partitionsstatistiken, kumulierte Spalteneigenschaften, usw. über eine Partition 1006 oder eine Sammlung von Partitionen der Tabelle. Es ist zu bedenken, dass die Partitionen 1006, die in 10 veranschaulicht sind, jeweils eine verschiedene Untermenge der Daten, die in der Tabelle gespeichert sind, enthalten können, und dieselben Spalten enthalten können oder verschiedene Spalten, die verschiedene Typen von Informationen speichern, enthalten können. Die Partitionen 1006 der Tabelle enthalten jeweils eine oder mehrere Spalten und können jeweils dieselben Typen von Spalten oder verschiedene Typen von Spalten besitzen. Eine Ausdruckseigenschaft kann für jede Spalte jeder Partition 1006 der Tabelle oder für eine Sammlung von Partitionen 1006 der Tabelle, wie in 10 veranschaulicht ist, gespeichert werden. Die Datenstruktur 1000 enthält Partitionsstatistiken 1004 für jede Partition 1006 der Tabelle (die Partitionsstatistiken 1004 können hier alternativ als „Partitionsausdruckseigenschaften“ bezeichnet werden). Die Partitionsstatistiken 1004 können einen minimalen/maximalen Datenpunkt für die entsprechende Partition 1006, einen Datentyp, der in der entsprechenden Partition 1006 gespeichert ist, eine Trennstruktur der entsprechenden Partition 1006 usw. enthalten. Wie in 10 veranschaulicht ist, ist eine Ausdruckseigenschaft 1008 von Spalte 1 für die erste Spalte in jeder der verschiedenen Partitionen 1006 gespeichert. Ferner ist eine Ausdruckseigenschaft 1010 von Spalte 2 für die zweite Spalte in jeder der verschiedenen Partitionen 1006 gespeichert. Ferner ist eine Ausdruckseigenschaft 1012 von Spalte 3 für die dritte Spalte in jeder der verschiedenen Partitionen gespeichert. Es ist zu bedenken, dass jede der Partitionen 1006 eine beliebige geeignete Anzahl von Spalten enthalten kann und dass eine Ausdruckseigenschaft für jede der Spalten oder für eine beliebige geeignete Anzahl der Spalten, die in jeder Partition der Tabelle gespeichert sind, gespeichert sein kann. Die Ausdruckseigenschaften 1008 von Spalte 1, die Ausdruckseigenschaften 1010 von Spalte 2 und die Ausdruckseigenschaften 1012 von Spalte 3 zusammen mit beliebigen zusätzlichen Spaltenausdruckeigenschaften, die enthalten sein können, wie für geeignet erachtet wird, können als Teil einer Metadatenpartition gespeichert sein. Eine Metadatenpartition kann in unveränderlichem Speicher bestehen bleiben und die Gruppierungsausdruckseigenschaften 1014 können auch in einer Metadatenpartition in unveränderlichem Speicher gespeichert sein. Ein Metadatenmanager kann alle Metadatenpartitionen führen, die Metadatenpartitionen enthalten, die die Gruppierungsausdruckseigenschaften 1014 und Partitionsstatistiken 1004 und/oder die Spaltenausdruckeigenschaften 1008-1012 umfassen.
  • Die kumulierten Tabellenmetadaten 1002 enthalten globale Informationen über alle Partitionen in der Anwendungstabelle. Zum Beispiel können die kumulierten Tabellenmetadaten 1002 ein globales Minimum und ein globales Maximum für die gesamte Tabelle, die Millionen oder selbst hunderte Millionen Partitionen enthalten kann, enthalten. Die kumulierten Tabellenmetadaten 1002 können beliebige geeignete Informationen über die Daten, die in der Tabelle gespeichert sind, die z. B. Mindest-/Höchstwerte, eine Nullzählung, eine Zusammenfassung der Datenbankdaten, die insgesamt über die Tabelle gespeichert sind, einen Datentyp, der über die Tabelle gespeichert ist, einen eindeutigen für die Daten, die in der Tabelle gespeichert sind, usw. enthalten.
  • Die Gruppierungsausdruckseigenschaften 1014a-1014d enthalten Informationen über Datenbankdaten, die in einer zugeordneten Gruppierung von Partitionen gespeichert sind. Zum Beispiel ist eine Beispielgruppierungsausdruckseigenschaft Partitionen zugeordnet, die von 3040 bis 3090 nummeriert sind, derart, dass die Beispielgruppierungsausdruckseigenschaft fünfzig verschiedenen Partitionen zugeordnet ist. Die Beispielgruppierungsausdruckseigenschaft enthält Informationen über diese fünfzig verschiedenen Partitionen. Eine Gruppierungsausdruckseigenschaft 1014 kann beliebige geeignete Informationen über die Partitionen, denen sie zugeordnet war, enthalten. Zum Beispiel kann eine Gruppierungsausdruckseigenschaft 1014 ein globales Minimum/Maximum für den gemeinsamen Satz von Partitionen, ein Minimum/Maximum für jede der Partitionen in der Gruppierung, eine globale Nullzählung, eine Nullzählung für jede der Partitionen in der Gruppierung, eine globale Zusammenfassung von Daten, die insgesamt über die Gruppierung von Partitionen gespeichert sind, eine Zusammenfassung von Daten, die jeweils in den Partitionen in der Gruppierung gespeichert sind, usw. enthalten. Die Gruppierungsausdruckseigenschaft 1014 kann globale Informationen für alle Partitionen in der Gruppierung von Partitionen, die der Gruppierungsausdruckseigenschaft 1014 zugeordnet ist, enthalten und kann ferner Informationen, die für jede der Partitionen in der zugeordneten Gruppierung spezifisch sind, enthalten.
  • Die Metadatenstruktur, die in 10 offenbart ist, schafft eine erhöhte Granularität in kumulierten Tabellenmetadaten 1002 über weitere Ausführungsformen von Datenbankmetadatenstrukturen. Die Gruppierungsausdruckseigenschaften 1014 stellen wertvolle globale Metadaten im Zusammenhang mit einer Sammlung von Partitionen 1006 der Datenbank bereit. Ferner stellt jede der säulenförmigen Ausdruckseigenschaften 1008, 1010, 1012 wertvolle Informationen über eine Spalte einer Partition 1006 der Tabelle bereit.
  • Die Metadatenstrukturen, die hier offenbart sind, die die Datenstruktur 1000, die in 10 gezeigt ist, enthalten, erhöhen den Wirkungsgrad beim Antworten auf Datenbankabfragen. Eine Datenbankabfrage kann eine beliebige Sammlung von Daten aus der Datenbank und/oder einer externen Tabelle anfordern und kann zum Erstellen fortschrittlicher Analysen und Metriken über die Datenbankdaten und/oder die Daten, die in einer externen Tabelle gespeichert sind, verwendet werden. Die Ausführung einiger Abfragen, insbesondere für eine sehr große Datenbank, eine externe Tabelle und/oder einen Datensee kann extrem kostenintensiv sein, sowohl hinsichtlich der Zeit als auch der Rechenbetriebsmittel. Wenn es nötig ist, Metadaten und/oder Datenbankdaten für jede Datei oder Partition jeder Tabelle einer Datenbank zu durchsuchen, kann es viele Minuten oder selbst Stunden dauern, auf eine Abfrage zu antworten. In bestimmten Implementierungen kann dies keine zulässige Verwendung von Rechenbetriebsmitteln sein. Die Datenstruktur 1000, die hier offenbart ist, schafft eine erhöhte Metadatengranularität und ermöglicht ein mehrstufiges Beschneiden von Datenbankdaten und/oder Daten, die in einer externen Tabelle gespeichert sind. Während einer Kompilierung und Optimierung einer Abfrage an der Datenbank kann ein Prozessor die kumulierten Tabellenmetadaten 1002 durchsuchen, um zu bestimmen, ob die Tabelle Informationen im Zusammenhang mit der Abfrage enthält. In Reaktion auf ein Bestimmen auf der Grundlage der kumulierten Tabellenmetadaten 1002, dass die Tabelle Informationen im Zusammenhang mit der Abfrage enthält, kann der Prozessor jede der Gruppierungsausdruckseigenschaften 1014 durchsuchen, um zu bestimmen, welche Gruppierung von Partitionen der Tabelle Informationen im Zusammenhang mit der Abfrage enthält. In Reaktion auf ein Bestimmen auf der Grundlage einer ersten kumulierten Ausdruckseigenschaft, dass eine erste Gruppierung von Partitionen keine Informationen im Zusammenhang mit der Abfrage enthält, kann der Prozessor das Datenbankdurchsuchen der ersten Gruppierung von Partitionen einstellen. In Reaktion auf ein Bestimmen auf der Grundlage einer zweiten kumulierten Ausdruckseigenschaft, dass eine zweite Gruppierung von Partitionen Informationen im Zusammenhang mit der Abfrage enthält, kann der Prozessor fortfahren, Ausdruckseigenschaften für diese zweite Gruppierung von Partitionen zu durchsuchen. Der Prozessor kann effizient bestimmen, welche Partitionen relevante Daten enthalten und welche Spalten welcher Partitionen relevante Daten enthalten. Der Prozessor kann fortfahren, lediglich die eine oder die mehreren relevanten Spalte und die eine oder die mehreren relevanten Partitionen zu durchsuchen, die Informationen enthalten, die für eine Datenbankabfrage relevant sind. Dies schafft ein kostengünstiges Mittel zum Antworten auf eine Datenbankabfrage in Form von mehrstufigem Beschneiden auf der Grundlage mehrstufiger Tabellenmetadaten.
  • Um die Kosteneffizienz von Datenbankabfragen weiter zu erhöhen, kann ein Betriebsmittelmanager (der auch als ein „globaler Dienst“ bezeichnet werden kann) die kumulierten Tabellenmetadaten 1002 zum schnelleren Abruf in einem Zwischenspeicher speichern. Metadaten für die Datenbank können in einem Metadatenspeicher getrennt und unabhängig von mehreren gemeinsam verwendeten Speichereinrichtungen, die Datenbankdaten gemeinsam speichern, gespeichert sein. In einer verschiedenen Ausführungsform können Metadaten für die Datenbank in den mehreren gemeinsam verwendeten Speichereinrichtungen, die Datenbankdaten gemeinsam speichern, gespeichert sein. In verschiedenen Ausführungsformen können Metadaten in metadatenspezifische Partitionen, die keine Datenbankdaten enthalten, gespeichert sein und/oder können in Partitionen gespeichert sein, die auch Datenbankdaten enthalten. Die Metadaten können über Plattenspeicher wie z. B. die mehreren gemeinsam verwendeten Speichereinrichtungen gespeichert sein und können auch in einem Zwischenspeicher im Betriebsmittelmanager gespeichert sein.
  • 11A-11C veranschaulichen die Erzeugung kumulierter Tabellenmetadaten 1102 über mehrere Versionen einer Tabelle. Die Tabelle kann in einer Datenbankplattform gespeichert sein oder kann eine externe Tabelle sein. Die Metadatenversionierung, die in 11A-11C dargestellt ist, kann durch eine beliebige geeignete Recheneinrichtung, die eine Datenbankplattform 102 und speziell eine Metadatenkomponente 606 für externe Tabellen und/oder eine Metadatenaktualisierungskomponente 608 enthält, ausgeführt werden. Das Aktualisieren und Versionieren von Tabellenmetadaten kann durch Empfangen einer Benachrichtigung von einem Datensee, dass eine Quelltabelle, die eine externe Tabelle unterstützt, geändert wurde, veranlasst werden. Die Metadatenstruktur, die in 11A-11C dargestellt ist, folgt der Datenstruktur 1000, die in 10 offenbart ist. Entsprechend liegen kumulierte Tabellenmetadaten 1102 vor, die globale Informationen über die Tabelle zusammen mit Gruppierungsausdruckseigenschaften 1104 für jede Gruppierung von Tabellenpartitionen enthalten. Ferner enthält die Tabelle mehrere Partitionen, die jeweils als eine unveränderliche Speichereinrichtung zum Speichern von Datenbankdaten, die nicht direkt aktualisiert werden können, dienen.
  • 11A veranschaulicht Metadaten für eine erste Version (V1) der Tabelle. Die Tabelle besitzt kumulierte Tabellenmetadaten 1102a einer Version eins und Gruppierungsausdruckseigenschaften 1104a einer Version eins, die jeweils globale Informationen über eine Gruppierung von Partitionen 1106 der Tabelle enthalten. Version 1 der Partitionen, die A1, B1, C1, D1, E1, F1, G1 und H1 enthalten, sind in 11A veranschaulicht. Die Tabelle enthält mehrere Partitionen, die jeweils eine Untermeng der Datenbankdaten in der Tabelle speichern.
  • 11B veranschaulicht Metadaten für eine zweite Version (V2) der Tabelle, die eine zweite Version der Partitionen, die A2, B2, C2, D2, E2, F2, G2, H2, 12, J2, K2 und L2 enthalten, enthält. Die durchgestrichenen Partitionen (C2, E2 und G2) veranschaulichen Partitionen, die durch eine Transaktionsausführung an der Tabelle gelöscht wurden. Die neuen Partitionen (12, J2, K2 und L2) veranschaulichen Partitionen, die durch eine Transaktion, die an der Tabelle ausgeführt wurde, zur Tabelle hinzugefügt wurden. Die nicht durchgestrichenen bestehenden Partitionen (A2, B2, D2, F2 und H2) veranschaulichen Partitionen, die durch beliebige Transaktion, die an der Tabelle ausgeführt wurden, nicht geändert wurden. Wie in 11B gezeigt ist, werden kumulierte Tabellenmetadaten 1102b einer Version zwei in Reaktion darauf erzeugt, dass eine neue Version der Tabelle, die durch eine oder mehrere Transaktionen erzeugt wird, an der Tabelle ausgeführt werden. Ferner werden neue Gruppierungsausdruckseigenschaften 1104b der Version zwei in Reaktion darauf erzeugt, dass die neue Version der Tabelle, die ist durch die eine oder die mehreren Transaktionen erzeugt wird, an der Tabelle ausgeführt wird. In einer Ausführungsform müssen dann, wenn Partitionen aus einer Gruppierung von Partitionen gelöscht werden, jedoch keine neuen Partitionen zur Gruppierung hinzugefügt wurden, die Gruppierungsausdruckseigenschaften 1104b nicht neuberechnet werden. Der Mindestwert, der Höchstwert, die Anzahl von Nullen und die Anzahl verschiedener Werte können nun überschätzt werden, können jedoch durch den Datenbank-Client immer noch als sicher erachtet werden. Die überschätzten Werte können einen Optimierer zu suboptimalen Entscheidungen, jedoch nicht zu falschen Abfrageergebnissen führen. In dieser Ausführungsform können die Gruppierungsausdruckseigenschaften 1104b aus Gründen der Optimierereffizienz immer noch neuberechnet werden. In dem Beispiel, das in 11B veranschaulicht ist, sind, nachdem die Partitionen C2, E2 und G2 gelöscht wurden, die bestehenden Gruppierungsausdruckseigenschaften 1104b für die erste und die zweite Gruppierung noch sicher zu verwenden. Diese Gruppierungsausdruckseigenschaften 1104b müssen nicht neuberechnet werden oder können in einer späteren Phase neuberechnet werden. Für jede neue Version der Tabelle können die Gruppierungsausdruckseigenschaften für Gruppierungen neu hinzugefügter Partitionen berechnet werden und dies kann zu einer effizienten Berechnung globaler Gruppierungsausdruckseigenschaften führen. Jede der Partitionen 1106 der Tabelle bildet eine unveränderliche Speichereinrichtung, die nicht direkt aktualisiert werden kann. Deshalb wird in Reaktion darauf, dass eine Transaktion wie z. B. eine DML-Anweisung an der Tabelle ausgeführt wird, eine neue Partition erzeugt, um die Transaktion widerzuspiegeln und die vorhergehende Partition zu ersetzen.
  • 11C veranschaulicht Metadaten für eine dritte Version (V3) der Tabelle. Wie veranschaulicht ist wurden in Version drei neue Partitionen, die die Partitionen M3, N3, O3 und P3 enthalten, zur Tabelle hinzugefügt. Eine aktualisierte Version drei kumulierter Tabellenmetadaten 1102c stellt globale Informationen über die Tabelle bereit und eine aktualisierte Gruppierungsausdruckseigenschaften 1104c einer Version drei stellen jeweils globale Informationen über ihre zugeordneten Gruppierungen von Partitionen einer Version drei bereit.
  • 12 ist ein schematisches Ablaufplandiagramm eines Verfahrens 1200 zum Führen einer externen Tabelle in einem Datenbanksystem. Das Verfahren 1200 kann durch eine beliebige geeignete Recheneinrichtung wie z. B. einen Betriebsmittelmanager 302 oder eine Datenbankplattform 102, die hier offenbart sind, durchgeführt werden.
  • Das Verfahren 1200 beginnt und die Recheneinrichtung empfängt bei 1202 einen Lesezugriff auf ein Quellverzeichnis in einer Datenspeicherplattform. Die Recheneinrichtung ist einer Datenbankplattform zugeordnet, die von der Datenspeicherplattform getrennt ist. Die Recheneinrichtung definiert bei 1204 eine externe Tabelle auf der Grundlage des Quellverzeichnisses. Die Recheneinrichtung verbindet bei 1206 die Datenbankplattform zur externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Die Recheneinrichtung erzeugt bei 1208 Metadaten für die externe Tabelle, wobei die Metadaten Informationen über Daten, die in der externen Tabelle gespeichert sind, enthalten. Die Recheneinrichtung empfängt bei 1210 eine Benachrichtigung, dass eine Änderung am Quellverzeichnis vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder eine Aktualisierung enthält. Die Recheneinrichtung aktualisiert bei 1212 die Metadaten für die externe Tabelle in Reaktion darauf, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • 13 ist ein schematisches Ablaufplandiagramm eines Verfahrens 1300 zum Definieren einer externen Tabelle in einem Datenbanksystem. Das Verfahren 1300 kann durch eine geeignete Recheneinrichtung wie z. B. einen Betriebsmittelmanager 302 oder eine Datenbankplattform 102, die hier offenbart sind, durchgeführt werden.
  • Das Verfahren 1300 beginnt und die Recheneinrichtung empfängt bei 1302 eine Angabe einer hierarchischen Struktur in einem Quellverzeichnis, wobei die hierarchische Struktur Ordner und Unterordner für Daten im Quellverzeichnis definiert. Die Recheneinrichtung empfängt bei 1304 eine Angabe einer Partitionierungsstruktur für Daten im Quellverzeichnis. Die Recheneinrichtung definiert bei 1306 Partitionen in einer externen Tabelle auf der Grundlage davon, wo Dateien in der hierarchischen Struktur hochgeladen sind, und ferner auf der Grundlage der Partitionierungsstruktur.
  • 14 ist ein schematisches Ablaufplandiagramm eines Verfahrens 1400 zum Abfragen einer externen Tabelle in einem Datenbanksystem. Das Verfahren 1400 kann durch eine beliebige geeignete Recheneinrichtung wie z. B. einen Betriebsmittelmanager 302 oder eine Datenbankplattform 102, die hier offenbart ist, durchgeführt werden.
  • Das Verfahren 1400 beginnt und die Recheneinrichtung verbindet bei 1402 eine Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Die Recheneinrichtung empfängt bei 1404 eine Abfrage, die ein Prädikat enthält, wobei die Abfrage mindestens auf Daten in der externen Tabelle gerichtet ist. Die Recheneinrichtung bestimmt bei 1406 auf der Grundlage von Metadaten eine oder mehrere Partitionen in der externen Tabelle, die Daten enthalten, die das Prädikat erfüllen. Die Recheneinrichtung beschneidet bei 1408 auf der Grundlage der Metadaten alle Partitionen in der externen Tabelle, die keine Daten enthalten, die das Prädikat erfüllen. Die Recheneinrichtung erzeugt bei 1410 einen Abfrageplan, der mehrere einzelne Unteraufgaben enthält. Die Recheneinrichtung weist bei 1412 auf der Grundlage der Metadaten die mehreren einzelnen Unteraufgaben einem oder mehreren Knoten in einer Ausführungsplattform zu.
  • 15 ist ein schematisches Ablaufplandiagramm eines Verfahrens 1500 zum Erzeugen einer materialisierten Ansicht über eine externe Tabelle in einem Datenbanksystem. Das Verfahren 1500 kann durch eine beliebige geeignete Recheneinrichtung wie z. B. einen Betriebsmittelmanager 302 oder eine Datenbankplattform 102, die hier offenbart sind, durchgeführt werden.
  • Das Verfahren 1500 beginnt und die Recheneinrichtung verbindet bei 1502 eine Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Die Recheneinrichtung erzeugt bei 1504 eine materialisierte Ansicht über die externe Tabelle. Die Recheneinrichtung empfängt bei 1506 eine Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder eine Aktualisierung enthält. Die Recheneinrichtung aktualisiert bei 1508 in Reaktion darauf, dass die externe Tabelle geändert wurde, die materialisierte Ansicht derart, dass die materialisierte Ansicht eine genaue Repräsentation der externen Tabelle umfasst.
  • 16 ist ein schematisches Ablaufplandiagramm eines Verfahrens 1600 zum Abfragen einer externen Tabelle in einem Datenbanksystem. Das Verfahren 1600 kann durch eine beliebige geeignete Recheneinrichtung wie z. B. einen Betriebsmittelmanager 302 oder eine Datenbankplattform 102, die hier offenbart sind, durchgeführt werden.
  • Das Verfahren 1600 beginnt und die Recheneinrichtung verbindet bei 1602 eine Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Die Recheneinrichtung empfängt bei 1604 eine Abfrage, die ein Prädikat enthält, wobei die Abfrage mindestens auf Daten in der externen Tabelle gerichtet ist. Die Recheneinrichtung bestimmt bei 1606 auf der Grundlage von Metadaten eine oder mehrere Partitionen in der externen Tabelle, die Daten enthalten, die das Prädikat erfüllen. Die Recheneinrichtung beschneidet bei 1608 auf der Grundlage der Metadaten alle Partitionen in der externen Tabelle, die keine Daten enthalten, die das Prädikat erfüllen. Die Recheneinrichtung erzeugt bei 1610 einen Abfrageplan, der mehrere einzelne Unteraufgaben enthält. Die Recheneinrichtung liest bei 1612 die Metadaten, um zu bestimmen, ob eine erste Partition in einem Zwischenspeicher eines beliebigen bestimmten Knotens der Ausführungsplattform gespeichert ist. Die Recheneinrichtung weist in Reaktion darauf, dass die erste Partition im Zwischenspeicher des bestimmten Knotens der Ausführungsplattform gespeichert ist, bei 1614 die erste Partition zu dem bestimmten Knoten, der durch den bestimmten Knoten verarbeitet werden soll, zu.
  • 17 ist ein Blockdiagramm, das eine Beispielrecheneinrichtung 1700 darstellt. In einigen Ausführungsformen wird die Recheneinrichtung 1700 verwendet, um eines oder mehrere der Systeme und Komponenten, die hier diskutiert werden, zu implementieren. Ferner kann die Recheneinrichtung 1700 mit beliebigen der Systeme und Komponenten, die hier beschrieben sind, interagieren. Entsprechend kann die Recheneinrichtung 1700 verwendet werden, um verschiedene Prozeduren und Aufgaben, wie z. B. diejenigen, die hier diskutiert werden, durchzuführen. Die Recheneinrichtung 1700 kann als ein Server, ein Client oder eine beliebige weitere Recheneinheit arbeiten. Die Recheneinrichtung 1700 kann irgendeine einer breiten Vielzahl von Recheneinrichtungen wie z. B. ein Desktopcomputer, ein Notebook-Computer, ein Server-Computer, ein handgeführter Computer, ein Tablet und dergleichen sein.
  • Die Recheneinrichtung 1700 enthält einen oder mehrere Prozessoren 1702, eine oder mehrere Speichereinrichtungen 1704, eine oder mehrere Schnittstellen 1706, eine oder mehrere Massenspeichereinrichtungen 1708 und eine oder mehrere Ein-/Ausgabe-Einrichtungen (Ein-/Ausgabe-Einrichtungen) 1710, die alle an einen Bus 1712 gekoppelt sind. Ein oder mehrere Prozessoren 1702 enthalten einen oder mehrere Prozessoren oder eine oder mehrere Steuereinheiten, die Befehle ausführen, die in einer oder mehreren Speichereinrichtungen 1704 und/oder einer oder mehreren Massenspeichereinrichtungen 1708 gespeichert. Ein oder mehrere Prozessoren 1702 können auch verschiedene Typen computerlesbarer Medien wie z. B. Zwischenspeicher enthalten.
  • Die eine oder die mehreren Speichereinrichtungen 1704 enthalten verschiedene computerlesbare Medien wie z. B. flüchtige Speicher (z. B. Schreib-/Lese-Speicher (RAM)) und/oder nichtflüchtige Speicher (z. B. Festwertspeicher (ROM)). Die eine oder die mehreren Speichereinrichtungen 1704 können auch umschreibbaren ROM wie z. B. Flash-Speicher enthalten.
  • Die eine oder die mehreren Massenspeichereinrichtungen 1708 enthalten verschiedene computerlesbare Medien wie z. B. Magnetbänder, magnetische Datenträger, optische Platten, Festkörperspeicher (z. B. Flash-Speicher) usw. Verschiedene Laufwerke können auch in einer oder mehreren Massenspeichereinrichtungen 1708 enthalten sein, um ein Lesen von und/oder ein Schreiben zu den verschiedenen computerlesbaren Medien zu ermöglichen. Die eine oder die mehreren Massenspeichereinrichtungen 1708 enthalten austauschbare Medien und/oder nicht austauschbare Medien.
  • Die eine oder die mehreren I/O-Einrichtungen 1710 enthalten verschiedene Einrichtungen, die ermöglichen, dass Daten und/oder weitere Informationen von der Recheneinrichtung 1700 eingegeben oder abgerufen werden. Die eine oder die mehreren Beispiel-I/O-Einrichtungen 1710 enthalten Cursorsteuereinrichtungen, Tastaturen, Tastenfelder, Mikrofone, Überwachungseinrichtungen oder weitere Anzeigeeinrichtungen, Lautsprecher, Drucker, Netzschnittstellenkarten, Modems, Objektive, CCDs oder weitere Bildaufnahmeeinrichtungen und dergleichen.
  • Die eine oder die mehreren Schnittstellen 1706 enthalten verschiedene Schnittstellen, die Recheneinrichtung 1700 ermöglichen, mit weiteren Systemen, Einrichtungen oder Rechenumgebungen zu interagieren. Eine oder mehrere Beispielschnittstellen 1706 enthalten eine beliebige Anzahl verschiedener Netzschnittstellen wie z. B. Schnittstellen zu lokalen Netzen (LANs), Großraumnetzen (WANs), Drahtlosnetzen und dem Internet.
  • Der Bus 1712 ermöglicht dem einen oder den mehreren Prozessoren 1702, der einen oder den mehreren Speichereinrichtungen 1704, der einen oder den mehreren Schnittstellen 1706, der einen oder den mehreren Massenspeichereinrichtungen 1708 und der einen oder den mehrere I/O-Einrichtungen 1710 sowie weiteren Einrichtungen oder Komponenten, die an den Bus 1712 gekoppelt sind, miteinander zu kommunizieren. Der Bus 912 repräsentiert einen oder mehrere Typen von Busstrukturen wie z. B. einen Systembus, einen PCI-Bus, einen IEEE 1394-Bus, einen USB-Bus usw.
  • Veranschaulichend sind Programme und weitere ausführbare Programmkomponenten hier als einzelne Blöcke gezeigt, obwohl sich versteht, dass derartige Programme und Komponenten sich zu verschiedenen Zeiten in verschiedenen Speicherkomponenten der Recheneinrichtung 1700 befinden können und durch einen oder mehrere Prozessoren 1702 ausgeführt werden. Alternativ können die Systeme und Prozeduren, die hier beschrieben sind, in Hardware oder einer Kombination von Hardware, Software und/oder Firmware implementiert sein. Zum Beispiel können eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs) programmiert sein, eines oder mehrere der Systeme und eine oder mehrere der Prozeduren, die hier beschrieben sind, auszuführen. Wie hierin verwendet sind die Begriffe „Modul“ oder „Komponente“ dazu vorgesehen, die Implementierungsvorrichtung zum Erreichen eines Prozesses wie z. B. durch Hardware oder eine Kombination von Hardware, Software und/oder Firmware zum Zweck des Durchführens aller oder Teile der Operationen, die hier offenbart sind, zu vermitteln. Die Begriffe „Modul“ oder „Komponente“ sind dazu vorgesehen, unabhängig zu vermitteln, wie die Module, Komponenten oder ihre Funktionalität oder Hardware in verschiedenen Ausführungsformen implementiert werden kann.
  • Beispiele
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist ein System zum Erzeugen einer materialisierten Ansicht über eine externe Tabelle. Das System enthält ein Mittel zum Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das System enthält ein Mittel zum Erzeugen einer materialisierten Ansicht über die externe Tabelle. Das System enthält ein Mittel zum Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst. Das System enthält ein Mittel zum Aktualisieren der materialisierten Ansicht in Reaktion darauf, dass die externe Tabelle geändert wurde, derart, dass die materialisierte Ansicht eine genaue Repräsentation der externen Tabelle umfasst.
  • Beispiel 2 ist ein System nach Beispiel 1, wobei die externe Tabelle ein Quellverzeichnis in einer Datenspeicherplattform als Grundlage verwendet und die Datenspeicherplattform von der Datenbankplattform getrennt ist.
  • Beispiel 3 ist ein System nach einem der Beispiele 1-2, das ferner ein Mittel zum Bestimmen von Inhalt für die materialisierte Ansicht umfasst, wobei das Mittel zum Bestimmen des Inhalts Folgendes umfasst: ein Mittel zum Empfangen einer Angabe, die materialisierte Ansicht mit dem Inhalt zu erzeugen, und/oder ein Mittel zum Empfangen einer Abfrage an der externen Tabelle, wobei die Abfrage auf den Inhalt gerichtet ist, und/oder ein Mittel zum Bestimmen des Inhalts auf der Grundlage einer oder mehrerer Zeilen oder Partitionen der externen Tabelle, die häufig abgefragt werden.
  • Beispiel 4 ist ein System nach einem der Beispiele 1-3, wobei das Mittel zum Empfangen der Benachrichtigung Folgendes umfasst: ein Mittel zum Abfragen der Datenspeicherplattform, um zu bestimmen, ob beliebige Änderungen am Quellverzeichnis vorgenommen wurden, und/oder ein Mittel zum Empfangen einer Benachrichtigung von der Datenspeicherplattform, dass eine Änderung am Quellverzeichnis vorgenommen wurde, und/oder ein Mittel zum Empfangen einer Benachrichtigung von einem Client, der dem Quellverzeichnis zugeordnet ist, wobei die Benachrichtigung angibt, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 5 ist ein System nach einem der Beispiele 1-4, wobei das Mittel zum Aktualisieren der materialisierten Ansicht ein Mittel zum Erzeugen einer neuen materialisierten Ansicht und ein Mittel zum Entfernen einer ursprünglichen materialisierten Ansicht, die nun in Bezug auf die externe Tabelle veraltet ist, umfasst.
  • Beispiel 6 ist ein System nach einem der Beispiele 1-5, das ferner Folgendes umfasst: ein Mittel zum Empfangen einer Abfrage; ein Mittel zum Bestimmen einer oder mehrerer Partitionen in der externen Tabelle, die nötig sind, um auf die Abfrage zu antworten, durch Lesen von Metadaten für die externe Tabelle; und ein Mittel zum Bestimmen, ob eine entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen erzeugt wurde.
  • Beispiel 7 ist ein System nach einem der Beispiele 1-6, das ferner Folgendes umfasst: ein Mittel zum Erzeugen eines Abfrageplans zum Antworten auf die Abfrage, wobei der Abfrageplan mehrere einzelne Unteraufgaben umfasst; und ein Mittel zum Zuweisen der mehreren einzelnen Unteraufgaben zu einem oder mehreren Knoten einer Ausführungsplattform; wobei in Reaktion darauf, dass die entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen vorliegt, mindestens eine der mehreren einzelnen Unteraufgaben ein Lesen der entsprechenden materialisierten Ansicht umfasst; und in Reaktion darauf, dass keine entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen vorliegt, mindestens eine der mehreren einzelnen Unteraufgaben ein Lesen der externen Tabelle umfasst.
  • Beispiel 8 ist ein System nach einem der Beispiele 1-7, das ferner Mittel zum Bestimmen davon umfasst, ob die entsprechende materialisierte Ansicht in Bezug auf die mindestens eine der einen oder der mehreren Partitionen veraltet ist.
  • Beispiel 9 ist ein System nach einem der Beispiele 1-8, das ferner Mittel zum Erzeugen von Metadaten für die materialisierte Ansicht umfasst, wobei die Metadaten Folgendes umfassen: eine Kennung einer oder mehrerer Partitionen der externen Tabelle, die in der materialisierten Ansicht materialisiert sind, und/oder ein Mindest-/Höchstwert-Paar für jede der einen oder der mehreren Partitionen, die in der materialisierten Ansicht materialisiert sind, und/oder einen Zeitstempel für eine jüngste Aktualisierung der materialisierten Ansicht.
  • Beispiel 10 ist ein System nach einem der Beispiele 1-9, das ferner Folgendes umfasst: ein Mittel zum Lesen eines Zeitstempels für eine jüngste Änderung an der externen Tabelle für jede der einen oder der mehreren Partitionen, die in der materialisierten Ansicht materialisiert sind; ein Mittel zum Lesen des Zeitstempels für die jüngste Aktualisierung der materialisierten Ansicht und ein Mittel zum Bestimmen davon, ob die materialisierte Ansicht in Bezug auf die externe Tabelle veraltet ist, auf der Grundlage des Zeitstempels für die jüngste Aktualisierung der materialisierten Ansicht und jedes Zeitstempels für die jüngste Änderung an der externen Tabelle für jede der einen oder der mehreren Partitionen, die in der materialisierten Ansicht materialisiert sind.
  • Beispiel 11 ist ein Verfahren zum Erzeugen einer materialisierten Ansicht über eine externe Tabelle. Das Verfahren umfasst ein Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das Verfahren umfasst ein Erzeugen durch die Datenbankplattform einer materialisierten Ansicht über die externe Tabelle. Das Verfahren umfasst ein Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst. Das Verfahren enthält in Reaktion darauf, dass die externe Tabelle geändert wurde, ein Aktualisieren der materialisierten Ansicht derart, dass die materialisierte Ansicht eine genaue Repräsentation der externen Tabelle umfasst.
  • Beispiel 12 ist ein Verfahren nach Beispiel 11, wobei die externe Tabelle ein Quellverzeichnis in einer Datenspeicherplattform als Grundlage verwendet und die Datenspeicherplattform von der Datenbankplattform getrennt ist.
  • Beispiel 13 ist ein Verfahren nach einem der Beispiele 11-12, das ferner ein Bestimmen von Inhalt für die materialisierte Ansicht durch Folgendes umfasst: Empfangen einer Angabe, die materialisierte Ansicht mit dem Inhalt zu erzeugen; und/oder Empfangen einer Abfrage an der externen Tabelle, wobei die Abfrage auf den Inhalt gerichtet ist; und/oder Bestimmen des Inhalts auf der Grundlage einer oder mehrerer Zeilen oder Partitionen der externen Tabelle, die häufig abgefragt werden.
  • Beispiel 14 ist ein Verfahren nach einem der Beispiele 11-13, wobei das Empfangen der Benachrichtigung Folgendes umfasst: Abfragen der Datenspeicherplattform, um zu bestimmen, ob jegliche Änderungen am Quellverzeichnis vorgenommen wurden; und/oder Empfangen einer Benachrichtigung von der Datenspeicherplattform, dass eine Änderung am Quellverzeichnis vorgenommen wurde; und/oder Empfangen einer Benachrichtigung von einem Client, der dem Quellverzeichnis zugeordnet ist, wobei die Benachrichtigung angibt, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 15 ist ein Verfahren nach einem der Beispiele 11-14, wobei das Aktualisieren der materialisierten Ansicht ein Erzeugen einer neuen materialisierten Ansicht und ein Entfernen einer ursprünglichen materialisierten Ansicht, die nun in Bezug auf die externe Tabelle veraltet ist, umfasst.
  • Beispiel 16 ist ein Verfahren nach einem der Beispiele 11-15, das ferner Folgendes umfasst: Empfangen einer Abfrage; Bestimmen einer oder mehrerer Partitionen in der externen Tabelle, die nötig sind, um auf die Abfrage zu antworten, durch Lesen von Metadaten für die externe Tabelle und Bestimmen, ob eine entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen erzeugt wurde.
  • Beispiel 17 ist ein Verfahren nach einem der Beispiele 11-16, das ferner Folgendes umfasst: Erzeugen eines Abfrageplans zum Antworten auf die Abfrage, wobei der Abfrageplan mehrere einzelne Unteraufgaben umfasst; und Zuweisen der mehreren einzelnen Unteraufgaben zu einem oder mehreren Knoten einer Ausführungsplattform; wobei in Reaktion darauf, dass die entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen vorliegt, mindestens eine der mehreren einzelnen Unteraufgaben ein Lesen der entsprechenden materialisierten Ansicht umfasst; und in Reaktion darauf, dass keine entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen vorliegt, mindestens eine der mehreren einzelnen Unteraufgaben ein Lesen der externen Tabelle umfasst.
  • Beispiel 18 ist ein Verfahren nach einem der Beispiele 11-17, das ferner ein Bestimmen davon umfasst, ob die entsprechende materialisierte Ansicht in Bezug auf die mindestens eine der einen oder der mehreren Partitionen veraltet ist.
  • Beispiel 19 ist ein Verfahren nach einem der Beispiele 11-18, das ferner ein Erzeugen von Metadaten für die materialisierte Ansicht umfasst, wobei die Metadaten Folgendes umfassen: eine Kennung einer oder mehrerer Partitionen der externen Tabelle, die in der materialisierten Ansicht materialisiert sind; und/oder ein Mindest-/Höchstwert-Paar für jede der einen oder der mehreren Partitionen, die in der materialisierten Ansicht materialisiert sind; und/oder einen Zeitstempel für eine jüngste Aktualisierung der materialisierten Ansicht.
  • Beispiel 20 ist ein Verfahren nach einem der Beispiele 11-19, das ferner Folgendes umfasst: Lesen eines Zeitstempels für eine jüngste Änderung an der externen Tabelle für jede der einen oder der mehreren Partitionen, die in der materialisierten Ansicht materialisiert sind; Lesen des Zeitstempels für die jüngste Aktualisierung der materialisierten Ansicht und Bestimmen davon, ob die materialisierte Ansicht in Bezug auf die externe Tabelle veraltet ist, auf der Grundlage des Zeitstempels für die jüngste Aktualisierung der materialisierten Ansicht und jedes Zeitstempels für die jüngste Änderung an der externen Tabelle für jede der einen oder der mehreren Partitionen, die in der materialisierten Ansicht materialisiert sind.
  • Beispiel 21 ist ein Prozessor, der programmierbar ist, Befehle auszuführen, die in nichttransitorischen computerlesbaren Speichermedien gespeichert sind. Die Befehle enthalten ein Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Die Befehle enthalten ein Erzeugen durch die Datenbankplattform einer materialisierten Ansicht über die externe Tabelle. Die Befehle umfassen ein Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst. Die Befehle enthalten, in Reaktion darauf, dass die externe Tabelle geändert wurde, ein Aktualisieren der materialisierten Ansicht derart, dass die materialisierte Ansicht eine genaue Repräsentation der externen Tabelle umfasst. Die Befehle sind derart ausgelegt, dass die externe Tabelle ein Quellverzeichnis in einer Datenspeicherplattform als Grundlage verwendet, wobei die Datenspeicherplattform von der Datenbankplattform getrennt ist.
  • Beispiel 22 ist ein Prozessor nach Beispiel 21, wobei die Befehle ferner ein Bestimmen von Inhalt für die materialisierte Ansicht durch Folgendes umfassen: Empfangen einer Angabe, die materialisierte Ansicht mit dem Inhalt zu erzeugen; und/oder Empfangen einer Abfrage an der externen Tabelle, wobei die Abfrage auf den Inhalt gerichtet ist; und/oder Bestimmen des Inhalts auf der Grundlage einer oder mehrerer Zeilen oder Partitionen der externen Tabelle, die häufig abgefragt werden.
  • Beispiel 23 ist ein Prozessor nach einem der Beispiele 21-22, wobei das Empfangen der Benachrichtigung Folgendes umfasst: Abfragen der Datenspeicherplattform, um zu bestimmen, ob jegliche Änderungen am Quellverzeichnis vorgenommen wurden; und/oder Empfangen einer Benachrichtigung von der Datenspeicherplattform, dass eine Änderung am Quellverzeichnis vorgenommen wurde; und/oder Empfangen einer Benachrichtigung von einem Client, der dem Quellverzeichnis zugeordnet ist, wobei die Benachrichtigung angibt, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 24 ist ein Prozessor nach einem der Beispiele 21-23, wobei das Aktualisieren der materialisierten Ansicht ein Erzeugen einer neuen materialisierten Ansicht und ein Entfernen einer ursprünglichen materialisierten Ansicht, die nun in Bezug auf die externe Tabelle veraltet ist, umfasst.
  • Beispiel 25 ist ein Prozessor nach einem der Beispiele 21-24, wobei die Befehle ferner Folgendes umfassen: Empfangen einer Abfrage; Bestimmen einer oder mehrerer Partitionen in der externen Tabelle, die nötig sind, um auf die Abfrage zu antworten, durch Lesen von Metadaten für die externe Tabelle; Bestimmen, ob eine entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen erzeugt wurde; Erzeugen eines Abfrageplans zum Antworten auf die Abfrage, wobei der Abfrageplan mehrere einzelne Unteraufgaben umfasst; und Zuweisen der mehreren einzelnen Unteraufgaben zu einem oder mehreren Knoten einer Ausführungsplattform; wobei in Reaktion darauf, dass die entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen vorliegt, mindestens eine der mehreren einzelnen Unteraufgaben ein Lesen der entsprechenden materialisierten Ansicht umfasst; und in Reaktion darauf, dass keine entsprechende materialisierte Ansicht für mindestens eine der einen oder der mehreren Partitionen vorliegt, mindestens eine der mehreren einzelnen Unteraufgaben ein Lesen der externen Tabelle umfasst.
  • Beispiel 26 ist ein System zum Abfragen über eine externe Tabelle. Das System enthält ein Mittel zum Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das System enthält ein Mittel zum Empfangen einer Abfrage, die ein Prädikat umfasst, wobei die Abfrage mindestens auf Daten in der externen Tabelle gerichtet ist. Das System enthält ein Mittel zum Bestimmen auf der Grundlage von Metadaten einer oder mehrerer Partitionen in der externen Tabelle, die Daten enthalten, die das Prädikat erfüllen. Das System enthält ein Mittel zum Beschneiden auf der Grundlage der Metadaten aller Partitionen in der externen Tabelle, die keine Daten umfassen, die das Prädikat erfüllen. Das System enthält ein Mittel zum Erzeugen eines Abfrageplans, der mehrere einzelne Unteraufgaben umfasst. Das System enthält ein Mittel zum Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform.
  • Beispiel 27 ist ein System nach Beispiel 26, wobei die externe Tabelle ein Quellverzeichnis in einer Datenspeicherplattform als Grundlage verwendet und die Datenspeicherplattform von der Datenbankplattform getrennt ist.
  • Beispiel 28 ist ein System nach einem der Beispiele 26-27, das ferner Folgendes umfasst: ein Mittel zum Bestimmen auf der Grundlage der Metadaten einer oder mehrerer Partitionen in internen Datenbankdaten, die Daten umfassen, die das Prädikat erfüllen; und ein Mittel zum Beschneiden auf der Grundlage der Metadaten aller Partitionen in den internen Datenbankdaten, die keine Daten umfassen, die das Prädikat erfüllen; wobei die Datenbankplattform Lesezugriff und ferner Schreibzugriff auf die internen Datenbankdaten besitzt.
  • Beispiel 29 ist ein System nach einem der Beispiele 26-28, wobei in Reaktion darauf, dass eine oder mehrere Partitionen jeder der externen Tabelle und der internen Datenbankdaten vorliegen, die Daten, die das Prädikat erfüllen, umfassen, die mehreren einzelnen Unteraufgaben des Abfrageplans Aufgaben zum Verarbeiten von Partitionen in der externen Tabelle und ferner zum Verarbeiten von Partitionen in den internen Datenbankdaten umfassen.
  • Beispiel 30 ist ein System nach einem der Beispiele 26-29, wobei das Mittel zum Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten ferner Folgendes umfasst: ein Mittel zum Lesen der Metadaten, um zu bestimmen, ob eine erste Partition in einem Zwischenspeicher eines beliebigen bestimmten Knotens der Ausführungsplattform gespeichert ist; und ein Mittel, um in Reaktion darauf, dass die erste Partition im Zwischenspeicher des bestimmten Knotens der Ausführungsplattform gespeichert ist, die erste Partition zum bestimmten Knoten zuzuweisen.
  • Beispiel 31 ist ein System nach einem der Beispiele 26-30, das ferner ein Mittel zum Erzeugen der Metadaten umfasst, wobei die Metadaten Informationen über Daten, die in der externen Tabelle gespeichert sind, umfassen und die Informationen Folgendes umfassen: kumulierte Tabellenmetadaten für die externe Tabelle und/oder eine Gruppierungsausdruckseigenschaft für eine Gruppierung von Partitionen in der externen Tabelle und/oder eine Ausdruckseigenschaft für eine Partition der externen Tabelle und/oder Partitionsstatistiken für eine Partition der externen Tabelle und/oder eine Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  • Beispiel 32 ist ein System nach einem der Beispiele 26-31, das ferner ein Mittel zum Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde, umfasst, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst.
  • Beispiel 33 ist ein System nach einem der Beispiele 26-32, das ferner ein Mittel zum Aktualisieren der Metadaten in Reaktion darauf, dass die Änderung an der externen Tabelle vorgenommen wurde, umfasst.
  • Beispiel 34 ist ein System nach einem der Beispiele 26-33, das ferner ein Mittel zum Aktualisieren der Metadaten in Reaktion darauf, dass eine Schwellenwertanzahl von Änderungen an der externen Tabelle vorgenommen wurde, umfasst.
  • Beispiel 35 ist ein System nach einem der Beispiele 26-34, das ferner ein Mittel zum Speichern der Metadaten in einem Partitionsspeicherobjekt in einer gemeinsam verwendeten Speicherplattform, die der Datenbankplattform zugeordnet ist, umfasst, wobei die gemeinsam verwendete Speicherplattform von der externen Tabelle getrennt ist.
  • Beispiel 36 ein Verfahren zum Abfragen über eine externe Tabelle. Das Verfahren umfasst ein Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das Verfahren umfasst ein Empfangen einer Abfrage, die ein Prädikat umfasst, wobei die Abfrage mindestens auf Daten in der externen Tabelle gerichtet ist. Das Verfahren umfasst ein Bestimmen auf der Grundlage von Metadaten einer oder mehrerer Partitionen in der externen Tabelle, die Daten enthalten, die das Prädikat erfüllen. Das Verfahren umfasst ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in der externen Tabelle, die keine Daten umfassen, die das Prädikat erfüllen. Das Verfahren umfasst ein Erzeugen eines Abfrageplans, der mehrere einzelne Unteraufgaben umfasst. Das Verfahren umfasst ein Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform.
  • Beispiel 37 ist ein Verfahren nach Beispiel 36, wobei die externe Tabelle ein Quellverzeichnis in einer Datenspeicherplattform als Grundlage verwendet und die Datenspeicherplattform von der Datenbankplattform getrennt ist.
  • Beispiel 38 ist ein Verfahren nach einem der Beispiele 36-37, das ferner Folgendes umfasst: Bestimmen auf der Grundlage der Metadaten einer oder mehrerer Partitionen in internen Datenbankdaten, die Daten umfassen, die das Prädikat erfüllen; und Beschneiden auf der Grundlage der Metadaten aller Partitionen in den internen Datenbankdaten, die keine Daten umfassen, die das Prädikat erfüllen; wobei die Datenbankplattform Lesezugriff und ferner Schreibzugriff auf die internen Datenbankdaten besitzt.
  • Beispiel 39 ist ein Verfahren nach einem der Beispiele 36-38, wobei in Reaktion darauf, dass eine oder mehrere Partitionen jeder der externen Tabelle und der internen Datenbankdaten vorliegen, die Daten, die das Prädikat erfüllen, umfassen, die mehreren einzelnen Unteraufgaben des Abfrageplans Aufgaben zum Verarbeiten von Partitionen in der externen Tabelle und ferner zum Verarbeiten von Partitionen in den internen Datenbankdaten umfassen.
  • Beispiel 40 ist ein Verfahren nach einem der Beispiele 36-39, wobei das Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten ferner Folgendes umfasst: Lesen der Metadaten, um zu bestimmen, ob eine erste Partition in einem Zwischenspeicher eines beliebigen bestimmten Knotens der Ausführungsplattform gespeichert ist; und in Reaktion darauf, dass die erste Partition im Zwischenspeicher des bestimmten Knotens der Ausführungsplattform gespeichert ist, Zuweisen der ersten Partition zum bestimmten Knoten.
  • Beispiel 41 ist ein Verfahren nach einem der Beispiele 36-40, das ferner ein Erzeugen der Metadaten umfasst, wobei die Metadaten Informationen über Daten, die in der externen Tabelle gespeichert sind, umfassen und die Informationen Folgendes umfassen: kumulierte Tabellenmetadaten für die externe Tabelle und/oder eine Gruppierungsausdruckseigenschaft für eine Gruppierung von Partitionen in der externen Tabelle und/oder eine Ausdruckseigenschaft für eine Partition der externen Tabelle und/oder Partitionsstatistiken für eine Partition der externen Tabelle und/oder eine Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  • Beispiel 42 ist ein Verfahren nach einem der Beispiele 36-41, das ferner ein Empfangen einer Benachrichtigung umfasst, dass eine Änderung an der externen Tabelle vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst.
  • Beispiel 43 ist ein Verfahren nach einem der Beispiele 36-42, das ferner ein Aktualisieren der Metadaten in Reaktion darauf umfasst, dass die Änderung an der externen Tabelle vorgenommen wurde.
  • Beispiel 44 ist ein Verfahren nach einem der Beispiele 36-43, das ferner ein Aktualisieren der Metadaten in Reaktion darauf umfasst, dass eine Schwellenwertanzahl von Änderungen an der externen Tabelle vorgenommen wurde.
  • Beispiel 45 ist ein Verfahren nach einem der Beispiele 36-44, das ferner ein Speichern der Metadaten in einem Partitionsspeicherobjekt in einer gemeinsam verwendeten Speicherplattform, die der Datenbankplattform zugeordnet ist, umfasst, wobei die gemeinsam verwendete Speicherplattform von der externen Tabelle getrennt ist.
  • Beispiel 47 ist ein Prozessor, der programmierbar ist, Befehle auszuführen, die in nichttransitorischen computerlesbaren Speichermedien gespeichert sind, wobei die Befehle Folgendes umfassen: Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt; Empfangen einer Abfrage, die ein Prädikat umfasst, wobei die Abfrage mindestens auf Daten in der externen Tabelle gerichtet ist; Bestimmen auf der Grundlage von Metadaten einer oder mehrerer Partitionen in der externen Tabelle, die Daten enthalten, die das Prädikat erfüllen; Beschneiden auf der Grundlage der Metadaten aller Partitionen in der externen Tabelle, die keine Daten umfassen, die das Prädikat erfüllen; Erzeugen eines Abfrageplans, der mehrere einzelne Unteraufgaben umfasst; und Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform; wobei die externe Tabelle ein Quellverzeichnis in einer Datenspeicherplattform als Grundlage verwendet und die Datenspeicherplattform von der Datenbankplattform getrennt ist.
  • Beispiel 48 ist ein Prozessor nach Beispiel 47, wobei die Befehle ferner Folgendes umfassen: Bestimmen auf der Grundlage der Metadaten einer oder mehrerer Partitionen in internen Datenbankdaten, die Daten umfassen, die das Prädikat erfüllen; und Beschneiden auf der Grundlage der Metadaten aller Partitionen in den internen Datenbankdaten, die keine Daten umfassen, die das Prädikat erfüllen; wobei die Datenbankplattform Lesezugriff und ferner Schreibzugriff auf die internen Datenbankdaten besitzt; und wobei in Reaktion darauf, dass eine oder mehrere Partitionen jeder der externen Tabelle und der internen Datenbankdaten vorliegen, die Daten, die das Prädikat erfüllen, umfassen, die mehreren einzelnen Unteraufgaben des Abfrageplans Aufgaben zum Verarbeiten von Datenpartitionen in der externen Tabelle und ferner zum Verarbeiten von Partitionen in den internen Datenbankdaten umfassen.
  • Beispiel 49 ist ein Prozessor nach einem der Beispiele 47-48, wobei das Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten ferner Folgendes umfasst: Lesen der Metadaten, um zu bestimmen, ob eine erste Partition in einem Zwischenspeicher eines beliebigen bestimmten Knotens der Ausführungsplattform gespeichert ist; und in Reaktion darauf, dass die erste Partition im Zwischenspeicher des bestimmten Knotens der Ausführungsplattform gespeichert ist, Zuweisen der ersten Partition zum bestimmten Knoten.
  • Beispiel 50 ist ein Prozessor nach einem der Beispiele 47-49, wobei die Befehle ferner ein Erzeugen der Metadaten umfassen, die Metadaten Informationen über Daten, die in der externen Tabelle gespeichert sind, umfassen und die Informationen Folgendes umfassen: kumulierte Tabellenmetadaten für die externe Tabelle und/oder eine Gruppierungsausdruckseigenschaft für eine Gruppierung von Partitionen in der externen Tabelle und/oder eine Ausdruckseigenschaft für eine Partition der externen Tabelle und/oder Partitionsstatistiken für eine Partition der externen Tabelle und/oder eine Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  • Beispiel 51 ist ein Prozessor nach einem der Beispiele 47-50, wobei die Befehle ferner Folgendes umfassen: Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst; und Aktualisieren der Metadaten in Reaktion darauf, dass die Änderung an der externen Tabelle vorgenommen wurde.
  • Beispiel 52 ist ein System. Das System enthält ein Mittel zum Empfangen durch eine Datenbankplattform eines Lesezugriffs auf ein Quellverzeichnis in einer Datenspeicherplattform, die von der Datenbankplattform getrennt ist. Das System enthält ein Mittel zum Definieren einer externen Tabelle auf der Grundlage des Quellverzeichnisses. Das System enthält ein Mittel zum Verbinden der Datenbankplattform mit der externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das System enthält ein Mittel zum Erzeugen von Metadaten für die externe Tabelle, wobei die Metadaten Informationen über Daten umfassen, die in der externen Tabelle gespeichert sind. Das System enthält ein Mittel zum Empfangen einer Benachrichtigung, dass eine Änderung am Quellverzeichnis vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst. Das System enthält ein Mittel zum Aktualisieren der Metadaten für die externe Tabelle in Reaktion darauf, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 53 ist ein System nach Beispiel 52, wobei das Mittel zum Erzeugen der Metadaten Folgendes umfasst: ein Mittel zum Definieren kumulierter Tabellenmetadaten für die externe Tabelle und/oder ein Mittel zum Definieren einer Gruppierungsausdruckseigenschaft für eine Gruppierung von Partitionen in der externen Tabelle und/oder ein Mittel zum Definieren einer Ausdruckseigenschaft für eine Partition der externen Tabelle und/oder ein Mittel zum Definieren von Partitionsstatistiken für eine Partition der externen Tabelle und/oder ein Mittel zum Definieren einer Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  • Beispiel 54 ist ein System nach einem der Beispiele 52-53, das ferner ein Mittel zum Speichern der Metadaten in einem Partitionsspeicherobjekt in einer gemeinsam verwendeten Speicherplattform, die der Datenbankplattform zugeordnet ist, umfasst, wobei die gemeinsam verwendete Speicherplattform von der Datenspeicherplattform getrennt ist.
  • Beispiel 55 ist ein System nach einem der Beispiele 52-54, wobei das Mittel zum Aktualisieren der Metadaten Folgendes umfasst: ein Mittel zum Aktualisieren der Metadaten in Reaktion darauf, dass eine beliebige Änderung am Quellverzeichnis vorgenommen wurde; und/oder ein Mittel zum Aktualisieren der Metadaten in Schwellenwertzeiträumen und/oder ein Mittel zum Aktualisieren der Metadaten in Reaktion darauf, dass eine Schwellenwertanzahl von Änderungen am Quellverzeichnis vorgenommen wurde; und/oder Mittel zum Aktualisieren der Metadaten in Reaktion auf eine Client-Anforderung, die Metadaten zu aktualisieren.
  • Beispiel 56 ist ein System nach einem der Beispiele 52-55, das ferner ein Mittel zum Lesen mehrerer verschiedener Dateiformate im Quellverzeichnis umfasst.
  • Beispiel 57 ist ein System nach einem der Beispiele 52-56, wobei das Mittel zum Empfangen der Benachrichtigung Folgendes umfasst: ein Mittel zum Abfragen der Datenspeicherplattform, um zu bestimmen, ob jegliche Änderungen am Quellverzeichnis vorgenommen wurden; und/oder ein Mittel zum Empfangen einer Benachrichtigung von der Datenspeicherplattform, dass eine Änderung am Quellverzeichnis vorgenommen wurde; und/oder ein Mittel zum Empfangen einer Benachrichtigung von einem Client, der dem Quellverzeichnis zugeordnet ist, wobei die Benachrichtigung angibt, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 58 ist ein System nach einem der Beispiele 52-57, wobei das Mittel zum Definieren der externen Tabelle auf der Grundlage des Quellverzeichnisses Folgendes umfasst: ein Mittel zum Empfangen einer Angabe von einer hierarchischen Struktur im Quellverzeichnis, wobei die hierarchische Struktur Ordner und Unterordner für Daten im Quellverzeichnis definiert; ein Mittel zum Empfangen einer Angabe einer Partitionierungsstruktur für Daten im Quellverzeichnis und ein Mittel zum Definieren von Partitionen in der externen Tabelle auf der Grundlage davon, wo Dateien in der hierarchischen Struktur hochgeladen sind, und ferner auf der Grundlage der Partitionierungsstruktur.
  • Beispiel 59 ist ein System nach einem der Beispiele 52-58, wobei das Mittel zum Definieren der Partitionen in der externen Tabelle ein Mittel zum Erzeugen von Metadaten für die Partitionen in der externen Tabelle und ein Mittel zum Weisen der Metadaten zu den geeigneten Ordnern und Unterordnern im Quellverzeichnis umfasst.
  • Beispiel 60 ist ein System nach einem der Beispiele 52-59, wobei das Mittel zum Empfangen der Benachrichtigung ein Mittel zum Empfangen einer Benachrichtigung, dass ein bestimmter Unterordner im Quellverzeichnis geändert wurde, umfasst.
  • Beispiel 61 ist ein System nach einem der Beispiele 52-60, das ferner Folgendes umfasst: ein Mittel zum Identifizieren einer bestimmten Partition in der externen Tabelle, die dem bestimmten Unterordner im Quellverzeichnis entspricht; und ein Mittel zum Erzeugen von Änderungsverfolgungsmetadaten für die bestimmte Partition, die angeben, wie der bestimmte Unterordner geändert wurde und wann der bestimmte Unterordner geändert wurde.
  • Beispiel 62 ist ein Verfahren. Das Verfahren umfasst ein Empfangen durch eine Datenbankplattform eines Lesezugriffs auf ein Quellverzeichnis in einer Datenspeicherplattform, die von der Datenbankplattform getrennt ist. Das Verfahren umfasst ein Definieren einer externen Tabelle auf der Grundlage des Quellverzeichnisses. Das Verfahren umfasst ein Verbinden der Datenbankplattform mit der externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt. Das Verfahren umfasst ein Erzeugen von Metadaten für die externe Tabelle, wobei die Metadaten Informationen über Daten umfassen, die in der externen Tabelle gespeichert sind. Das Verfahren umfasst ein Empfangen einer Benachrichtigung, dass eine Änderung am Quellverzeichnis vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst. Das Verfahren umfasst ein Aktualisieren der Metadaten für die externe Tabelle in Reaktion darauf, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 63 ist ein Verfahren nach Beispiel 62, wobei das Erzeugen der Metadaten Folgendes umfasst: Definieren kumulierter Tabellenmetadaten für die externe Tabelle und/oder Definieren einer Gruppierungsausdruckseigenschaft für eine Gruppierung von Partitionen in der externen Tabelle und/oder Definieren einer Ausdruckseigenschaft für eine Partition der externen Tabelle und/oder Definieren von Partitionsstatistiken für eine Partition der externen Tabelle und/oder Definieren einer Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  • Beispiel 64 ist ein Verfahren nach einem der Beispiele 62-63, das ferner ein Speichern der Metadaten in einem Partitionsspeicherobjekt in einer gemeinsam verwendeten Speicherplattform, die der Datenbankplattform zugeordnet ist, umfasst, wobei die gemeinsam verwendete Speicherplattform von der Datenspeicherplattform getrennt ist.
  • Beispiel 65 ist ein Verfahren nach einem der Beispiele 62-64, wobei das Aktualisieren der Metadaten Folgendes umfasst: Aktualisieren der Metadaten in Reaktion darauf, dass eine beliebige Änderung am Quellverzeichnis vorgenommen wurde; und/oder Aktualisieren der Metadaten in Schwellenwertzeiträumen und/oder Aktualisieren der Metadaten in Reaktion darauf, dass eine Schwellenwertanzahl von Änderungen am Quellverzeichnis vorgenommen wurde; und/oder Aktualisieren der Metadaten in Reaktion auf eine Client-Anforderung, die Metadaten zu aktualisieren.
  • Beispiel 66 ist ein Verfahren nach einem der Beispiele 62-65, das ferner ein Lesen mehrerer verschiedener Dateiformate im Quellverzeichnis umfasst.
  • Beispiel 67 ist ein Verfahren nach einem der Beispiele 62-66, wobei das Empfangen der Benachrichtigung Folgendes umfasst: Abfragen der Datenspeicherplattform, um zu bestimmen, ob jegliche Änderungen am Quellverzeichnis vorgenommen wurden; und/oder Empfangen einer Benachrichtigung von der Datenspeicherplattform, dass eine Änderung am Quellverzeichnis vorgenommen wurde; und/oder Empfangen einer Benachrichtigung von einem Client, der dem Quellverzeichnis zugeordnet ist, wobei die Benachrichtigung angibt, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 68 ist ein Verfahren nach einem der Beispiele 62-67, wobei das Definieren der externen Tabelle auf der Grundlage des Quellverzeichnisses Folgendes umfasst: Empfangen einer Angabe einer hierarchischen Struktur im Quellverzeichnis, wobei die hierarchische Struktur Ordner und Unterordner für Daten im Quellverzeichnis definiert; Empfangen einer Angabe einer Partitionierungsstruktur für Daten im Quellverzeichnis und Definieren von Partitionen in der externen Tabelle auf der Grundlage davon, wo Dateien in der hierarchischen Struktur hochgeladen sind, und ferner auf der Grundlage der Partitionierungsstruktur.
  • Beispiel 69 ist ein Verfahren nach einem der Beispiele 62-68, wobei das Definieren der Partitionen in der externen Tabelle ein Erzeugen von Metadaten für die Partitionen in der externen Tabelle und ein Weisen der Metadaten zu den geeigneten Ordnern und Unterordnern im Quellverzeichnis umfasst.
  • Beispiel 70 ist ein Verfahren nach einem der Beispiele 62-69, wobei das Empfangen der Benachrichtigung ein Mittel zum Empfangen einer Benachrichtigung, das ein bestimmter Unterordner im Quellverzeichnis geändert wurde, umfasst.
  • Beispiel 71 ist ein Verfahren nach einem der Beispiele 62-70, das ferner Folgendes umfasst: Identifizieren einer bestimmten Partition in der externen Tabelle, die dem bestimmten Unterordner im Quellverzeichnis entspricht; und Erzeugen von Änderungsverfolgungsmetadaten für die bestimmte Partition, die angeben, wie der bestimmte Unterordner geändert wurde und wann der bestimmte Unterordner geändert wurde.
  • Beispiel 72 ist ein Prozessor, der programmierbar ist, Befehle auszuführen, die in nichttransitorischen computerlesbaren Speichermedien gespeichert sind, wobei die Befehle Folgendes umfassen: Empfangen durch eine Datenbankplattform eines Lesezugriffs auf ein Quellverzeichnis in einer Datenspeicherplattform, die von der Datenbankplattform getrennt ist; Definieren einer externen Tabelle auf der Grundlage des Quellverzeichnisses; Verbinden der Datenbankplattform mit der externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt; Erzeugen von Metadaten für die externe Tabelle, wobei die Metadaten Informationen über Daten umfassen, die in der externen Tabelle gespeichert sind; Empfangen einer Benachrichtigung, dass eine Änderung am Quellverzeichnis vorgenommen wurde, wobei die Änderung ein Einsetzen, ein Löschen oder ein Aktualisieren umfasst; und Aktualisieren der Metadaten für die externe Tabelle in Reaktion darauf, dass die Änderung am Quellverzeichnis vorgenommen wurde.
  • Beispiel 73 ist ein Prozessor nach Beispiel 72, wobei das Erzeugen der Metadaten Folgendes umfasst: Definieren kumulierter Tabellenmetadaten für die externe Tabelle und/oder Definieren einer Gruppierungsausdruckseigenschaft für eine Gruppierung von Partitionen in der externen Tabelle und/oder Definieren einer Ausdruckseigenschaft für eine Partition der externen Tabelle und/oder Definieren von Partitionsstatistiken für eine Partition der externen Tabelle und/oder Definieren einer Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  • Beispiel 74 ist ein Prozessor nach einem der Beispiele 72-73, wobei die Befehle ferner ein Speichern der Metadaten in einem Partitionsspeicherobjekt in einer gemeinsam verwendeten Speicherplattform, die der Datenbankplattform zugeordnet ist, umfassen, wobei die gemeinsam verwendete Speicherplattform von der Datenspeicherplattform getrennt ist.
  • Beispiel 75 ist ein Prozessor nach einem der Beispiele 72-74, wobei das Aktualisieren der Metadaten Folgendes umfasst: Aktualisieren der Metadaten in Reaktion darauf, dass eine Änderung am Quellverzeichnis vorgenommen wurde, und/oder Aktualisieren der Metadaten in Schwellenwertzeiträumen und/oder Aktualisieren der Metadaten in Reaktion darauf, dass eine Schwellenwertanzahl von Änderungen am Quellverzeichnis vorgenommen wurde, und/oder Aktualisieren der Metadaten in Reaktion auf eine Client-Anforderung, die Metadaten zu aktualisieren.
  • Beispiel 76 ist ein Prozessor nach einem der Beispiele 72-75, wobei das Definieren der externen Tabelle auf der Grundlage des Quellverzeichnisses Folgendes umfasst: Empfangen einer Angabe einer hierarchischen Struktur im Quellverzeichnis, wobei die hierarchische Struktur Ordner und Unterordner für Daten im Quellverzeichnis definiert; Empfangen einer Angabe einer Partitionierungsstruktur für Daten im Quellverzeichnis und Definieren von Partitionen in der externen Tabelle auf der Grundlage davon, wo Dateien in der hierarchischen Struktur hochgeladen sind, und ferner auf der Grundlage der Partitionierungsstruktur.
  • In einem weiteren Beispiel sind Systeme, ein Computerprogramm, das die Schritte eines Verfahrens durchführt und Einrichtungen zum Abfragen über eine externe Tabelle sind offenbart. Darin umfasst ein Verfahren ein Verbinden einer Datenbankplattform mit einer externen Tabelle derart, dass die Datenbankplattform Lesezugriff auf die externe Tabelle besitzt und keinen Schreibzugriff auf die externe Tabelle besitzt; umfasst ferner ein Empfangen einer Abfrage, die ein Prädikat umfasst, wobei die Abfrage mindestens auf Daten in der externen Tabelle gerichtet ist; enthält ferner ein Bestimmen auf der Grundlage von Metadaten einer oder mehrerer Partitionen in der externen Tabelle, die Daten enthalten, die das Prädikat erfüllen; enthält ferner ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in der externen Tabelle, die keine Daten umfassen, die das Prädikat erfüllen; umfasst ferner ein Erzeugen eines Abfrageplans, der mehrere einzelne Unteraufgaben umfasst; und enthält ferner ein Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform.
  • Verschiedene Techniken oder bestimmte Aspekte oder Abschnitte davon können die Form von Programmcode (d. h. Befehlen), der in materiellen Medien wie z. B. Disketten, CD-ROMs, Festplatten, einem nichttransitorischen computerlesbaren Speichermedium oder einem sonstigen maschinenlesbaren Speichermedium verkörpert ist, annehmen, wobei dann, wenn der Programmcode in eine Maschine wie z. B. einen Computer geladen wird und durch sie ausgeführt wird, die Maschine eine Vorrichtung zum Praktizieren der verschiedenen Techniken wird. Im Falle einer Programmcodeausführung in programmierbaren Computern kann die Recheneinrichtung einen Prozessor, ein Speichermedium, das durch den Prozessor lesbar ist (was flüchtige und nichtflüchtige Speicher und/oder Speicherelemente enthält), mindestens eine Eingabeeinrichtung und mindestens eine Ausgabeeinrichtung enthalten. Der flüchtige und der nichtflüchtige Speicher und/oder die flüchtigen und nichtflüchtigen Speicherelemente können ein RAM, ein EPROM, ein Flash-Laufwerk, ein optisches Laufwerk, eine magnetische Festplatte oder ein weiteres Medium zum Speichern elektronischer Daten sein. Ein oder mehrere Programme, die die verschiedenen Techniken, die hier beschrieben sind, implementieren oder verwenden können, können eine Anwendungsprogrammierschnittstelle (API), wiederverwendbare Steuerelemente und dergleichen verwenden. Derartige Programme können in einer höheren prozeduralen, funktionellen oder objektorientierten Programmiersprache implementiert sein, um mit einem Computersystem zu kommunizieren. Allerdings können das ein oder die mehreren Programme in Assembler- oder Maschinensprache implementiert werden, wenn es gewünscht ist. In jedem Fall kann die Sprache eine kompilierte oder eine interpretierte Sprache sein und mit Hardware-Implementierungen kombiniert werden.
  • Selbstverständlich können viele der Funktionseinheiten, die in dieser Spezifikation beschrieben sind, als eine oder mehrere Komponenten, was ein Ausdruck ist, der verwendet wird, um ihre Implementierungsunabhängigkeit besonders zu betonen, implementiert sein. Zum Beispiel kann eine Komponente als eine Hardware-Schaltung, die kundenspezifische umfassend integrierte (VLSI) Schaltungen oder Gate-Anordnungen, handelsübliche Halbleiter wie z. B. Logikchips, Transistoren oder weitere diskrete Komponenten implementiert sein. Eine Komponente kann auch in programmierbaren Hardware-Einrichtungen wie z. B. feldprogrammierbare Gate-Arrays, programmierbare Anordnungslogik, programmierbare Logikeinrichtungen oder dergleichen implementiert sein.
  • Komponenten können zur Ausführung durch verschiedenen Typen von Prozessoren auch in Software implementiert werden. Eine identifizierte Komponente von ausführbarem Code kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computerbefehlen, die zum Beispiel als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können, umfassen. Dennoch müssen die ausführbaren Programme einer identifizierten Komponente nicht physisch gemeinsam verortet sein, sondern können unterschiedlichen Befehle umfassen, die an verschiedenen Orten gespeichert sind und, wenn sie logisch miteinander verbunden werden, die Komponente umfassen und den angegebenen Zweck für die Komponente erreichen.
  • Tatsächlich kann eine Komponente von ausführbarem Code ein einzelner Befehl oder viele Befehle sein und kann selbst über mehrere verschiedene Codesegmente, zwischen verschiedenen Programmen und über mehrere Speichereinrichtungen verteilt sein. Ähnlich können Betriebsdaten hier in Komponenten identifiziert und veranschaulicht sein und können in einer beliebigen geeigneten Form verkörpert und in einer beliebigen geeigneten Datentypstruktur organisiert sein. Die Betriebsdaten können als ein einzelner Datensatz gesammelt sein oder können über verschiedene Orte, was über verschiedene Speichereinrichtungen enthält, verteilt sein und können mindestens teilweise lediglich als elektronische Signale in einem System oder einem Netz vorliegen. Die Komponenten können passiv oder aktiv sein, was Agenten enthält, die betreibbar sind, um gewünschte Funktionen durchzuführen.
  • Eine Bezugnahme im Verlauf dieser Spezifikation auf „ein Beispiel“ bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Verbindung mit dem Beispiel beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit nimmt die Erscheinungsform der Wortverbindung „in einem Beispiel“ an verschiedenen Stellen im Verlauf dieser Spezifikation nicht notwendigerweise alle auf dieselbe Ausführungsform Bezug.
  • Wie hierin verwendet können mehrere Elemente, Strukturelemente, kompositorische Elemente und/oder Materialien zweckmäßigerweise in einer gemeinsamen Liste präsentiert werden. Allerdings sollten diese Listen ausgelegt werden, als, ob jedes Element der Liste einzeln als ein getrenntes und eindeutiges Element identifiziert ist. Somit sollte kein einzelnes Element einer derartigen Liste ausschließlich auf der Grundlage seiner Präsentation in einer gemeinsamen Gruppe ohne gegensätzlich Angaben als eine faktische Entsprechung irgendeines weiteren Elements derselben Liste ausgelegt werden. Zusätzlich kann hier auf verschiedene Ausführungsformen und Beispiele der vorliegenden Offenbarung zusammen mit Alternativen ihrer verschiedenen Komponenten Bezug genommen werden. Es versteht sich, dass derartige Ausführungsformen, Beispiele und Alternativen nicht als faktische Entsprechungen voneinander ausgelegt werden sollen, sondern als getrennte und eigenständige Repräsentationen der vorliegenden Offenbarung erachtet werden sollen.
  • Obwohl das Vorhergehende zur Verdeutlichung relativ genau beschrieben wurde, wird deutlich werden, dass bestimmte Änderung und Modifikationen vorgenommen werden können, ohne von dessen Prinzipien abzuweichen. Es ist festzuhalten, dass viele alternative Arten des Implementierens sowohl der Prozesse als auch der Vorrichtungen, die hier beschrieben sind, vorliegen. Entsprechend sollen die vorliegenden Ausführungsformen veranschaulichend und nicht einschränkend betrachtet werden.
  • Fachleute werden begrüßen, dass viele Änderungen an den Details der oben beschriebenen Ausführungsformen vorgenommen werden können, ohne von den zugrunde liegenden Prinzipien der Offenbarung abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/385774 [0001]

Claims (36)

  1. Computerprogramm, das Befehle umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, verursachen, dass der eine oder die mehreren Prozessoren Operationen durchführen, wobei die Operationen Folgendes umfassen: Verbinden einer Datenbankplattform mit einer externen Tabelle, wobei die Datenbankplattform keinen Schreibzugriff auf die externe Tabelle besitzt; Erzeugen einer oder mehrerer materialisierter Ansichten über die externe Tabelle; Speichern der einen oder der mehreren materialisierten Ansichten in einer Datenspeicherplattform, auf die die Datenbankplattform Schreibzugriff besitzt; Aktualisieren der einen oder der mehreren materialisierten Ansichten, um beliebige Änderungen, die an der externen Tabelle vorgenommen werden, widerzuspiegeln; Empfangen einer Abfrage, die ein oder mehrere Prädikate umfasst; und Beantworten der Abfrage mindestens teilweise unter Bezugnahme auf eine oder mehrere der einen oder der mehreren materialisierten Ansichten.
  2. Computerprogramm nach Anspruch 1, wobei die externe Tabelle ein Quellverzeichnis in einer externen Datenspeicherplattform, die von der Datenbankplattform getrennt ist, als Grundlage verwendet.
  3. Computerprogramm nach Anspruch 1, wobei die Operationen ferner Folgendes umfassen: Identifizieren auf der Grundlage von Metadaten einer oder mehrerer Partitionen in der externen Tabelle, die Daten umfassen, die die Abfrage erfüllen; Erzeugen eines Abfrageplans zum Verarbeiten der Abfrage, wobei der Abfrageplan die mehreren einzelnen Unteraufgaben umfasst, die mehreren einzelnen Unteraufgaben eine oder mehrere Aufgaben umfassen, um eine oder mehrere der einen oder der mehreren materialisierten Ansichten nach Daten zu durchsuchen, die die Abfrage erfüllen, und die mehreren einzelnen Unteraufgaben ferner eine oder mehrere Aufgaben umfassen, um die eine oder die mehreren identifizierten Partitionen in der externen Tabelle nach Daten zu durchsuchen, die die Abfrage erfüllen; und Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform zum Ausführen des Abfrageplans.
  4. Computerprogramm nach Anspruch 3, wobei die Operationen ferner Folgendes umfassen: Identifizieren auf der Grundlage der Metadaten einer oder mehrerer Partitionen in internen Datenbankdaten, die Daten umfassen, die das eine oder die mehreren Prädikate erfüllen, wobei die internen Datenbankdaten in der Datenspeicherplattform gespeichert sind, auf die die Datenbankplattform Schreibzugriff besitzt, wobei die mehreren einzelnen Unteraufgaben ferner eine oder mehrere Aufgaben umfassen, um die eine oder die mehreren identifizierten Partitionen in den internen Datenbankdaten nach Daten zu durchsuchen, die die Abfrage erfüllen.
  5. Computerprogramm nach Anspruch 4, wobei die Operationen ferner ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in den internen Datenbankdaten, die keine Daten enthalten, die die Abfrage erfüllen, umfassen.
  6. Computerprogramm nach einem der Ansprüche 3-5, wobei das Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten ferner Folgendes umfasst: Lesen der Metadaten, um zu bestimmen, ob eine erste Partition in einem Zwischenspeicher eines von mehreren Knoten der Ausführungsplattform gespeichert ist; und Zuweisen zum bestimmten Knoten in Reaktion darauf, dass die erste Partition im Zwischenspeicher eines bestimmten Knoten der Ausführungsplattform gespeichert ist, einer Aufgabe zum Durchsuchen der ersten Partition.
  7. Computerprogramm nach einem der Ansprüche 3-5, wobei die Operationen ferner ein Erzeugen der Metadaten umfassen, wobei die Metadaten Informationen über Daten, die in der externen Tabelle gespeichert sind, umfassen und die Informationen Folgendes umfassen: kumulierte Tabellenmetadaten für die externe Tabelle und/oder Partitionsstatistiken für eine Partition der externen Tabelle und/oder eine Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  8. Computerprogramm nach einem der Ansprüche 3-5, wobei die Operationen ferner Folgendes umfassen: Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde; und Aktualisieren der Metadaten in Reaktion darauf, dass die Änderung an der externen Tabelle vorgenommen wurde.
  9. Computerprogramm nach Anspruch 8, wobei die Änderung ein Hinzufügen einer Datei und/oder ein Löschen einer Datei und/oder ein Aktualisieren einer Datei an einem Quellort der externen Tabelle umfasst.
  10. Computerprogramm nach einem der Ansprüche 3-5, wobei die Operationen ferner ein Aktualisieren der Metadaten in Reaktion darauf, dass eine Schwellenwertanzahl von Änderungen an der externen Tabelle vorgenommen wurde, umfassen.
  11. Computerprogramm nach einem der Ansprüche 3-5, wobei die Operationen ferner ein Speichern der Metadaten in einem Partitionsspeicherobjekt in der Datenspeicherplattform, auf die die Datenbankplattform Schreibzugriff besitzt, umfassen.
  12. Computerprogramm nach einem der Ansprüche 3-5, wobei die Operationen ferner ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in der externen Tabelle, die keine Daten enthalten, die das eine oder die mehreren Prädikate erfüllen, umfassen.
  13. System, das Folgendes umfasst: mindestens einen Prozessor und ein oder mehrere computerlesbare Speichermedien, die Befehle enthalten, die durch den mindestens einen Prozessor ausführbar sind, um zu verursachen, dass der mindestens eine Prozessor Operationen durchführt, die Folgendes umfassen: Verbinden einer Datenbankplattform mit einer externen Tabelle, wobei die Datenbankplattform keinen Schreibzugriff auf die externe Tabelle besitzt; Erzeugen einer oder mehrerer materialisierter Ansichten über die externe Tabelle; Speichern der einen oder der mehreren materialisierten Ansichten in einer Datenspeicherplattform, auf die die Datenbankplattform Schreibzugriff besitzt; Aktualisieren der einen oder der mehreren materialisierten Ansichten, um beliebige Änderungen, die an der externen Tabelle vorgenommen werden, widerzuspiegeln; Empfangen einer Abfrage, die ein oder mehrere Prädikate umfasst; und Beantworten der Abfrage mindestens teilweise unter Bezugnahme auf eine oder mehrere der einen oder der mehreren materialisierten Ansichten.
  14. System nach Anspruch 13, wobei die externe Tabelle ein Quellverzeichnis in einer externen Datenspeicherplattform, die von der Datenbankplattform getrennt ist, als Grundlage verwendet.
  15. System nach Anspruch 13, wobei die Operationen ferner Folgendes umfassen: Identifizieren auf der Grundlage von Metadaten einer oder mehrerer Partitionen in der externen Tabelle, die Daten umfassen, die die Abfrage erfüllen; Erzeugen eines Abfrageplans zum Verarbeiten der Abfrage, wobei der Abfrageplan die mehreren einzelnen Unteraufgaben umfasst, die mehreren einzelnen Unteraufgaben eine oder mehrere Aufgaben umfassen, um eine oder mehrere der einen oder der mehreren materialisierten Ansichten nach Daten zu durchsuchen, die die Abfrage erfüllen, und die mehreren einzelnen Unteraufgaben ferner eine oder mehrere Aufgaben umfassen, um die eine oder die mehreren identifizierten Partitionen in der externen Tabelle nach Daten zu durchsuchen, die die Abfrage erfüllen; und Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform zum Ausführen des Abfrageplans.
  16. System nach Anspruch 15, wobei die Operationen ferner Folgendes umfassen: Identifizieren auf der Grundlage der Metadaten einer oder mehrerer Partitionen in internen Datenbankdaten, die Daten umfassen, die das eine oder die mehreren Prädikate erfüllen, wobei die internen Datenbankdaten in der Datenspeicherplattform gespeichert sind, auf die die Datenbankplattform Schreibzugriff besitzt, wobei die mehreren einzelnen Unteraufgaben ferner eine oder mehrere Aufgaben umfassen, um die eine oder die mehreren identifizierten Partitionen in den internen Datenbankdaten nach Daten zu durchsuchen, die die Abfrage erfüllen.
  17. System nach Anspruch 16, wobei die Operationen ferner ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in den internen Datenbankdaten, die keine Daten enthalten, die die Abfrage erfüllen, umfassen.
  18. System nach einem der Ansprüche 15-17, wobei das Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten ferner Folgendes umfasst: Lesen der Metadaten, um zu bestimmen, ob eine erste Partition in einem Zwischenspeicher eines von mehreren Knoten der Ausführungsplattform gespeichert ist; und Zuweisen zum bestimmten Knoten in Reaktion darauf, dass die erste Partition im Zwischenspeicher eines bestimmten Knoten der Ausführungsplattform gespeichert ist, einer Aufgabe zum Durchsuchen der ersten Partition.
  19. System nach einem der Ansprüche 15-17, wobei die Operationen ferner ein Erzeugen der Metadaten umfassen, wobei die Metadaten Informationen über Daten, die in der externen Tabelle gespeichert sind, umfassen und die Informationen Folgendes umfassen: kumulierte Tabellenmetadaten für die externe Tabelle und/oder Partitionsstatistiken für eine Partition der externen Tabelle und/oder eine Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  20. System nach einem der Ansprüche 15-17, wobei die Operationen ferner Folgendes umfassen: Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde; und Aktualisieren der Metadaten in Reaktion darauf, dass die Änderung an der externen Tabelle vorgenommen wurde.
  21. System nach Anspruch 20, wobei die Änderung ein Hinzufügen einer Datei und/oder ein Löschen einer Datei und/oder ein Aktualisieren einer Datei an einem Quellort der externen Tabelle umfasst.
  22. System nach einem der Ansprüche 15-17, wobei die Operationen ferner ein Aktualisieren der Metadaten in Reaktion darauf, dass eine Schwellenwertanzahl von Änderungen an der externen Tabelle vorgenommen wurde, umfassen.
  23. System nach einem der Ansprüche 15-17, wobei die Operationen ferner ein Speichern der Metadaten in einem Partitionsspeicherobjekt in der Datenspeicherplattform, auf die die Datenbankplattform Schreibzugriff besitzt, umfassen.
  24. System nach einem der Ansprüche 15-17, wobei die Operationen ferner ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in der externen Tabelle, die keine Daten enthalten, die das eine oder die mehreren Prädikate erfüllen, umfassen.
  25. Ein oder mehrere computerlesbare Speichermedien, in denen Befehle gespeichert sind, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, verursachen, dass der eine oder die mehreren Prozessoren Operationen durchführen, die Folgendes umfassen: Verbinden einer Datenbankplattform mit einer externen Tabelle, wobei die Datenbankplattform keinen Schreibzugriff auf die externe Tabelle besitzt; Erzeugen einer oder mehrerer materialisierter Ansichten über die externe Tabelle; Speichern der einen oder der mehreren materialisierten Ansichten in einer Datenspeicherplattform, auf die die Datenbankplattform Schreibzugriff besitzt; Aktualisieren der einen oder der mehreren materialisierten Ansichten, um beliebige Änderungen, die an der externen Tabelle vorgenommen werden, widerzuspiegeln; Empfangen einer Abfrage, die ein oder mehrere Prädikate umfasst; und Beantworten der Abfrage mindestens teilweise unter Bezugnahme auf eine oder mehrere der einen oder der mehreren materialisierten Ansichten.
  26. Computerlesbare Speichermedien nach Anspruch 25, wobei die externe Tabelle ein Quellverzeichnis in einer externen Datenspeicherplattform, die von der Datenbankplattform getrennt ist, als Grundlage verwendet.
  27. Computerlesbare Speichermedien nach Anspruch 25, wobei die Operationen ferner Folgendes umfassen: Identifizieren auf der Grundlage von Metadaten einer oder mehrerer Partitionen in der externen Tabelle, die Daten umfassen, die die Abfrage erfüllen; Erzeugen eines Abfrageplans zum Verarbeiten der Abfrage, wobei der Abfrageplan die mehreren einzelnen Unteraufgaben umfasst, die mehreren einzelnen Unteraufgaben eine oder mehrere Aufgaben umfassen, um eine oder mehrere der einen oder der mehreren materialisierten Ansichten nach Daten zu durchsuchen, die die Abfrage erfüllen, und die mehreren einzelnen Unteraufgaben ferner eine oder mehrere Aufgaben umfassen, um die eine oder die mehreren identifizierten Partitionen in der externen Tabelle nach Daten zu durchsuchen, die die Abfrage erfüllen; und Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten zu einem oder mehreren Knoten in einer Ausführungsplattform zum Ausführen des Abfrageplans.
  28. Computerlesbare Speichermedien nach Anspruch 27, wobei die Operationen ferner Folgendes umfassen: Identifizieren auf der Grundlage der Metadaten einer oder mehrerer Partitionen in internen Datenbankdaten, die Daten umfassen, die das eine oder die mehreren Prädikate erfüllen, wobei die internen Datenbankdaten in der Datenspeicherplattform gespeichert sind, auf die die Datenbankplattform Schreibzugriff besitzt, wobei die mehreren einzelnen Unteraufgaben ferner eine oder mehrere Aufgaben umfassen, um die eine oder die mehreren identifizierten Partitionen in den internen Datenbankdaten nach Daten zu durchsuchen, die die Abfrage erfüllen.
  29. Computerlesbare Speichermedien nach Anspruch 28, wobei die Operationen ferner ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in den internen Datenbankdaten, die keine Daten enthalten, die die Abfrage erfüllen, umfassen.
  30. Computerlesbare Speichermedien nach einem der Ansprüche 27-29, wobei das Zuweisen der mehreren einzelnen Unteraufgaben auf der Grundlage der Metadaten ferner Folgendes umfasst: Lesen der Metadaten, um zu bestimmen, ob eine erste Partition in einem Zwischenspeicher eines von mehreren Knoten der Ausführungsplattform gespeichert ist; und Zuweisen zum bestimmten Knoten in Reaktion darauf, dass die erste Partition im Zwischenspeicher eines bestimmten Knoten der Ausführungsplattform gespeichert ist, einer Aufgabe zum Durchsuchen der ersten Partition.
  31. Computerlesbare Speichermedien nach einem der Ansprüche 27-29, wobei die Operationen ferner ein Erzeugen der Metadaten umfassen, wobei die Metadaten Informationen über Daten, die in der externen Tabelle gespeichert sind, umfassen und die Informationen Folgendes umfassen: kumulierte Tabellenmetadaten für die externe Tabelle und/oder Partitionsstatistiken für eine Partition der externen Tabelle und/oder eine Spaltenausdruckeigenschaft für eine Spalte einer Partition der externen Tabelle.
  32. Computerlesbare Speichermedien nach einem der Ansprüche 27-29, wobei die Operationen ferner Folgendes umfassen: Empfangen einer Benachrichtigung, dass eine Änderung an der externen Tabelle vorgenommen wurde; und Aktualisieren der Metadaten in Reaktion darauf, dass die Änderung an der externen Tabelle vorgenommen wurde.
  33. Computerlesbare Speichermedien nach Anspruch 32, wobei die Änderung ein Hinzufügen einer Datei und/oder ein Löschen einer Datei und/oder ein Aktualisieren einer Datei an einem Quellort der externen Tabelle umfasst.
  34. Computerlesbare Speichermedien nach einem der Ansprüche 27-29, wobei die Operationen ferner ein Aktualisieren der Metadaten in Reaktion darauf, dass eine Schwellenwertanzahl von Änderungen an der externen Tabelle vorgenommen wurde, umfassen.
  35. Computerlesbare Speichermedien nach einem der Ansprüche 27-29, wobei die Operationen ferner ein Speichern der Metadaten in einem Partitionsspeicherobjekt in der Datenspeicherplattform, auf die die Datenbankplattform Schreibzugriff besitzt, umfassen.
  36. Computerlesbare Speichermedien nach einem der Ansprüche 27-29, wobei die Operationen ferner ein Beschneiden auf der Grundlage der Metadaten aller Partitionen in der externen Tabelle, die keine Daten enthalten, die das eine oder die mehreren Prädikate erfüllen, umfassen.
DE202020005680.4U 2019-04-16 2020-04-15 Abfragen über externe Tabellen in Datenbanksystemen Active DE202020005680U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/385,774 US11163756B2 (en) 2019-04-16 2019-04-16 Querying over external tables in database systems
US16/385,774 2019-04-16

Publications (1)

Publication Number Publication Date
DE202020005680U1 true DE202020005680U1 (de) 2022-01-17

Family

ID=72829439

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202020005680.4U Active DE202020005680U1 (de) 2019-04-16 2020-04-15 Abfragen über externe Tabellen in Datenbanksystemen

Country Status (6)

Country Link
US (5) US11163756B2 (de)
EP (1) EP3942433A4 (de)
KR (1) KR102575007B1 (de)
CN (1) CN112567358A (de)
DE (1) DE202020005680U1 (de)
WO (1) WO2020214665A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11675780B2 (en) 2019-04-16 2023-06-13 Snowflake Inc. Partition-based scanning of external tables for query processing

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11138213B2 (en) 2019-04-10 2021-10-05 Snowflake Inc. Internal resource provisioning in database systems
US11544286B2 (en) * 2019-11-29 2023-01-03 Amazon Technologies, Inc. Replicating materialized views across heterogeneous target systems
US11113273B2 (en) 2019-11-29 2021-09-07 Amazon Technologies, Inc. Managed materialized views created from heterogeneous data sources
US11899659B2 (en) 2019-11-29 2024-02-13 Amazon Technologies, Inc. Dynamically adjusting performance of materialized view maintenance
US11308079B2 (en) 2019-11-29 2022-04-19 Amazon Technologies, Inc. Maintaining data stream history for generating materialized views
US11777848B2 (en) 2020-10-14 2023-10-03 Oracle International Corporation Scalable routing and forwarding of packets in cloud infrastructure
CN112529360A (zh) * 2020-11-12 2021-03-19 贝壳技术有限公司 数据指标统计扩展计算方法及装置
US11526501B2 (en) * 2021-03-19 2022-12-13 International Business Machines Corporation Materialized views assistant
US11797518B2 (en) 2021-06-29 2023-10-24 Amazon Technologies, Inc. Registering additional type systems using a hub data model for data processing
US11558245B1 (en) * 2021-10-29 2023-01-17 Oracle International Corporation Secure bi-directional network connectivity system between private networks
US11736558B2 (en) 2021-10-29 2023-08-22 Oracle International Corporation Transparent mounting of external endpoints between private networks
US11899685B1 (en) 2021-12-10 2024-02-13 Amazon Technologies, Inc. Dividing authorization between a control plane and a data plane for sharing database data
US11921704B2 (en) 2021-12-28 2024-03-05 Vmware, Inc. Version control interface for accessing data lakes
US11822582B2 (en) * 2022-01-20 2023-11-21 Snowflake Inc. Metadata clustering
US20230409545A1 (en) * 2022-06-21 2023-12-21 Vmware, Inc. Version control interface supporting time travel access of a data lake
CN115114328B (zh) * 2022-08-29 2022-10-28 北京奥星贝斯科技有限公司 针对分布式数据库生成查询计划的方法及装置
US11567936B1 (en) 2022-09-19 2023-01-31 Keebo Inc. Platform agnostic query acceleration
US11720563B1 (en) * 2022-11-21 2023-08-08 Apttus Corporation Data storage and retrieval system for a cloud-based, multi-tenant application

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897632A (en) 1996-08-27 1999-04-27 At&T Corp Method and system for using materialized views to evaluate queries involving aggregation
US6026402A (en) 1998-01-07 2000-02-15 Hewlett-Packard Company Process restriction within file system hierarchies
US6092343A (en) 1998-07-16 2000-07-25 Therma-Tru Corporation Compression molded door assembly
WO2000075849A2 (en) * 1999-06-08 2000-12-14 Brio Technology, Inc. Method and apparatus for data access to heterogeneous data sources
US7853553B2 (en) 2001-03-26 2010-12-14 Siebel Systems, Inc. Engine for converting data from a source format to a destination format using user defined mappings
US6789071B1 (en) 2001-04-20 2004-09-07 Microsoft Corporation Method for efficient query execution using dynamic queries in database environments
US20040098405A1 (en) * 2002-11-16 2004-05-20 Michael Zrubek System and Method for Automated Link Analysis
US6950823B2 (en) * 2002-12-23 2005-09-27 International Business Machines Corporation Transparent edge-of-network data cache
CA2414983A1 (en) * 2002-12-23 2004-06-23 Ibm Canada Limited-Ibm Canada Limitee Independent deferred incremental refresh of materialized views
CA2536541A1 (en) 2003-05-19 2004-12-02 Business Objects, S.A. Apparatus and method for accessing diverse native data sources through a metadata interface
US20050091180A1 (en) 2003-10-22 2005-04-28 Nitzan Peleg Method and apparatus for refreshing materialized views
US7487138B2 (en) * 2004-08-25 2009-02-03 Symantec Operating Corporation System and method for chunk-based indexing of file system content
US7409387B2 (en) 2005-02-28 2008-08-05 International Business Machines Corporation Materialized query table matching with query expansion
WO2006096812A2 (en) 2005-03-07 2006-09-14 Skytide, Inc. Analyzing and reporting extensible data from multiple sources in multiple formats
US8166059B2 (en) * 2005-07-08 2012-04-24 Oracle International Corporation Optimization of queries on a repository based on constraints on how the data is stored in the repository
US8386463B2 (en) 2005-07-14 2013-02-26 International Business Machines Corporation Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table
US7680842B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7792822B2 (en) 2007-03-02 2010-09-07 Microsoft Corporation Systems and methods for modeling partitioned tables as logical indexes
US20090144338A1 (en) * 2007-11-30 2009-06-04 Yahoo! Inc. Asynchronously replicated database system using dynamic mastership
US8150850B2 (en) 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US9477702B1 (en) 2009-01-22 2016-10-25 Joviandata, Inc. Apparatus and method for accessing materialized and non-materialized values in a shared nothing system
US8032503B2 (en) 2008-08-05 2011-10-04 Teradata Us, Inc. Deferred maintenance of sparse join indexes
US20100036799A1 (en) 2008-08-05 2010-02-11 Teradata Us, Inc. Query processing using horizontal partial covering join index
US7912833B2 (en) 2008-08-05 2011-03-22 Teradata Us, Inc. Aggregate join index utilization in query processing
US20110137875A1 (en) 2009-12-09 2011-06-09 Oracle International Corporation Incremental materialized view refresh with enhanced dml compression
US20120066205A1 (en) * 2010-03-14 2012-03-15 Intellidimension, Inc. Query Compilation Optimization System and Method
US9569485B2 (en) * 2010-11-19 2017-02-14 International Business Machines Corporation Optimizing database query
US8799271B2 (en) 2011-01-25 2014-08-05 Hewlett-Packard Development Company, L.P. Range predicate canonization for translating a query
US9043309B2 (en) * 2012-06-05 2015-05-26 Oracle International Corporation SQL transformation-based optimization techniques for enforcement of data access control
US9507825B2 (en) 2012-09-28 2016-11-29 Oracle International Corporation Techniques for partition pruning based on aggregated zone map information
US8996544B2 (en) 2012-09-28 2015-03-31 Oracle International Corporation Pruning disk blocks of a clustered table in a relational database management system
US10296462B2 (en) * 2013-03-15 2019-05-21 Oracle International Corporation Method to accelerate queries using dynamically generated alternate data formats in flash cache
US9740741B2 (en) 2013-04-11 2017-08-22 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh Aggregate query-caching in databases architectures with a differential buffer and a main store
US9659040B1 (en) * 2013-09-23 2017-05-23 Amazon Technologies, Inc. Database fleet schema maintenance
US10210197B2 (en) 2013-10-18 2019-02-19 New York Air Brake Corporation Dynamically scalable distributed heterogenous platform relational database
US10019473B2 (en) 2014-06-09 2018-07-10 Oracle International Corporation Accessing an external table in parallel to execute a query
US10078684B2 (en) 2014-09-26 2018-09-18 Oracle International Corporation System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment
US9690832B2 (en) * 2014-10-06 2017-06-27 Netapp, Inc. Enterprise reporting capabilities in storage management systems
US10353893B2 (en) 2015-05-14 2019-07-16 Deephaven Data Labs Llc Data partitioning and ordering
US10496760B2 (en) 2015-10-21 2019-12-03 International Business Machines Corporation Partitioned joins in analytical databases
US9984002B2 (en) * 2015-10-26 2018-05-29 Salesforce.Com, Inc. Visibility parameters for an in-memory cache
US10095738B1 (en) * 2015-12-22 2018-10-09 Amazon Technologies, Inc. Dynamic assignment of logical partitions according to query predicate evaluations
KR101706252B1 (ko) 2016-02-29 2017-02-13 주식회사 티맥스데이터 이기종 데이터베이스들 간의 쿼리 결과를 동기화하기 위한 방법, 서버 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램
US11709833B2 (en) 2016-06-24 2023-07-25 Dremio Corporation Self-service data platform
US10713284B2 (en) * 2016-07-06 2020-07-14 Sap Se Platform-based data segregation
GB201615748D0 (en) 2016-09-15 2016-11-02 Gb Gas Holdings Ltd System for importing data into a data repository
US11294941B1 (en) * 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US20180089324A1 (en) * 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US10803062B2 (en) * 2017-01-31 2020-10-13 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a by partition command term within a multi-tenant aware structured query language
CA3052832C (en) 2017-02-27 2021-11-16 Timescale, Inc. Scalable database system for querying time-series data
US10769130B1 (en) 2018-05-23 2020-09-08 Databricks Inc. Update and query of a large collection of files that represent a single dataset stored on a blob store
US10909114B1 (en) * 2018-06-19 2021-02-02 Amazon Technologies, Inc. Predicting partitions of a database table for processing a database query
US11030149B2 (en) 2018-09-06 2021-06-08 Sap Se File format for accessing data quickly and efficiently
US20200250192A1 (en) 2019-02-05 2020-08-06 Entit Software Llc Processing queries associated with multiple file formats based on identified partition and data container objects
US11163756B2 (en) 2019-04-16 2021-11-02 Snowflake Inc. Querying over external tables in database systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11675780B2 (en) 2019-04-16 2023-06-13 Snowflake Inc. Partition-based scanning of external tables for query processing

Also Published As

Publication number Publication date
KR102575007B1 (ko) 2023-09-06
WO2020214665A1 (en) 2020-10-22
US20220027368A1 (en) 2022-01-27
US20210200754A1 (en) 2021-07-01
US20220269674A1 (en) 2022-08-25
CN112567358A (zh) 2021-03-26
EP3942433A4 (de) 2022-11-16
KR20210135548A (ko) 2021-11-15
US11163756B2 (en) 2021-11-02
US11675780B2 (en) 2023-06-13
US11163757B2 (en) 2021-11-02
US11269869B2 (en) 2022-03-08
US20200334241A1 (en) 2020-10-22
US11030191B2 (en) 2021-06-08
US20200334239A1 (en) 2020-10-22
EP3942433A1 (de) 2022-01-26

Similar Documents

Publication Publication Date Title
DE202020005680U1 (de) Abfragen über externe Tabellen in Datenbanksystemen
DE202020005681U1 (de) Tabellen mit Journal in Datenbanksystemen
US11841849B2 (en) Systems and methods for efficiently querying external tables
DE202020005687U1 (de) Gemeinsame Datennutzung bzw. Datenteilung und materilisierte Ansichten in Datenbanken
US11347728B2 (en) Notifying modifications to external tables in database systems
DE202015009777U1 (de) Transparente Entdeckung eines semistrukturierten Datenschemas
DE202019005723U1 (de) Aufgabenplanung in Datenbanksystemen
DE202017007212U1 (de) System zur inkrementellen Clusterwartung einer Tabelle
DE202019005716U1 (de) Nachverfolgen von Änderungen bei Datenbankdaten
DE202019005715U1 (de) Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten
DE202020005682U1 (de) Automatisierte erneute Abfrageversuche in einer Datenbankumgebung

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years