DE202019005484U1 - Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen - Google Patents

Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen Download PDF

Info

Publication number
DE202019005484U1
DE202019005484U1 DE202019005484.7U DE202019005484U DE202019005484U1 DE 202019005484 U1 DE202019005484 U1 DE 202019005484U1 DE 202019005484 U DE202019005484 U DE 202019005484U DE 202019005484 U1 DE202019005484 U1 DE 202019005484U1
Authority
DE
Germany
Prior art keywords
run
query
workload
target run
customer
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
DE202019005484.7U
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 DE202019005484U1 publication Critical patent/DE202019005484U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • 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/21Design, administration or maintenance of databases
    • 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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • 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/24549Run-time 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries

Abstract

Vorrichtung, die umfasst:
Mittel zum Bestimmen einer Arbeitsbelastung, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen eines Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst;
Mittel zum Ausführen eines Basislaufs der Arbeitsbelastung, die das Merkmal nicht implementiert;
Mittel zum Ausführen eines Ziellaufs der Arbeitsbelastung, während sie das Merkmal implementiert;
Mittel zum Vergleichen des Basislaufs und des Ziellaufs, um zu identifizieren, ob es einen Leistungsrückgang im Ziellauf gibt; und
Mittel zum erneuten Ausführen des Ziellaufs in Reaktion auf das Identifizieren des Leistungsrückgangs, um zu identifizieren, ob der Leistungsrückgang immer noch immer vorhanden ist.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht den Vorteil der vorläufigen US-Anmeldung, laufende Nr. 62/646.817 , mit dem Titel „SNOWTRAIL: TESTING WITH PRODUCTION QUERIES ON A CLOUD DATABASE“, eingereicht am 22. März 2018, deren Offenbarung durch Bezugnahme hier insgesamt mit aufgenommen ist.
  • In Übereinstimmung mit den Anforderungen des Gebrauchsmustergesetzes sind nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren als das Gebrauchsmuster zu schützen und der Gegenstand des Gebrauchsmusters. Falls in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen, für die mit den beigefügten Ansprüchen Schutz gesucht wird, zu veranschaulichen.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Datenbanken und bezieht sich insbesondere auf die Merkmalsentwicklung und die Arbeitsbelastungserfassung in Datenbanksystemen.
  • HINTERGRUND
  • Diese Offenbarung bezieht sich im Allgemeinen auf Systeme, Verfahren und Vorrichtungen zur Merkmalsimplementierung und zur Arbeitsbelastungserfassung in Datenbanksystemen. Datenbanken sind eine organisierte Sammlung von Daten, die es ermöglichen, dass leicht auf die Daten zugegriffen wird, die Daten leicht manipuliert werden und die Daten leicht aktualisiert werden. Datenbanken dienen als Verfahren zum Speichern, Managen und Wiedergewinnen von Informationen in einer effizienten Weise. Das herkömmliche Datenbankmanagement erfordert, dass die Unternehmen die Infrastruktur und Betriebsmittel vorhalten, um die Datenbank in einem Datenzentrum zu managen. Das Management einer herkömmlichen Datenbank kann sehr teuer sein und erfordert die Beaufsichtigung durch mehrere Personen mit einem weiten Bereich von technischen Fähigkeiten.
  • Herkömmliche Managementsysteme relationaler Datenbanken (RDMS) erfordern umfangreiche Rechen- und Speicherbetriebsmittel und weisen eine begrenzte Skalierbarkeit auf. Große Datensummen können über mehrere Rechenvorrichtungen gespeichert sein, wobei ein Server die Daten so managen kann, dass sie für Kunden mit Vor-Ort-Operationen zugänglich sind. Für eine Entität, die einen hausinternen Datenbank-Server haben möchte, muss die Entität signifikante Betriebsmittel für eine Anlageinvestition in Hardware und Infrastruktur für die Datenbank zusammen mit signifikantem physischen Raum zum Lagern der Datenbankinfrastruktur aufwenden. Ferner kann die Datenbank während eines Leistungsausfalls oder einer anderen Katastrophensituation im hohen Grade anfällig für einen Datenverlust sein. Derartige herkömmliche Datenbanksysteme kommen mit signifikanten Nachteilen, die durch ein cloud-basiertes Datenbanksystem gemildert werden können.
  • Ein Cloud-Datenbanksystem kann durch eine Cloud-Plattform eingesetzt und geliefert werden, die es Organisationen und Endanwendern ermöglicht, Daten in der Cloud zu speichern, in der Cloud zu managen und aus der Cloud abzurufen. Einige Cloud-Datenbanksysteme enthalten eine herkömmliche Datenbankarchitektur, die durch die Installation von Datenbank-Software auf einer Rechen-Cloud implementiert ist. Auf die Datenbank kann durch einen Web-Browser oder eine Anwendungsprogrammierschnittstelle (API) für die Anwendungs- und Dienstintegration zugegriffen werden. Einige Cloud-Datenbanksysteme werden durch einen Anbieter betrieben, der Backend-Prozesse der Datenbankinstallations-, Datenbankbereitstellungs- und Betriebsmittelzuweisungsaufgaben im Auftrag eines Kunden direkt managt. Der Kunde kann mehrere Endanwender aufweisen, die über einen Web-Browser und/oder eine API auf die Datenbank zugreifen. Die Cloud-Datenbanken können einigen Kunden durch das Abschwächen des Risikos des Verlierens von Datenbankdaten und das Erlauben, dass auf die Daten durch mehrere Anwender über mehrere geographische Gebiete zugegriffen wird, signifikante Vorteile bereitstellen.
  • Es gibt mehrere Architekturen für herkömmliche Datenbanksysteme und Cloud-Datenbanksysteme. Eine beispielhafte Architektur ist ein System mit gemeinsam benutzten Platten. In dem System mit gemeinsam benutzten Platten sind alle Daten in einer gemeinsam benutzten Speichervorrichtung gespeichert, die von allen Verarbeitungsknoten in einem Daten-Cluster zugänglich ist. In diesem Typ von System werden alle Datenänderungen in die gemeinsam benutzte Speichervorrichtung geschrieben, um sicherzustellen, dass alle Verarbeitungsknoten im Daten-Cluster auf eine konsistente Version der Daten zugreifen. Wenn die Anzahl der Verarbeitungsknoten in einem System mit gemeinsam benutzten Platten zunimmt, wird die gemeinsam benutzte Speichervorrichtung (und die Kommunikationsverbindungen zwischen den Verarbeitungsknoten und der gemeinsam benutzten Speichervorrichtung) ein Engpass, der die Datenlese- und Datenschreiboperation verlangsamt. Dieser Engpass wird durch das Hinzufügen weiterer Verarbeitungsknoten noch verstärkt. Folglich weisen vorhandene Systeme mit gemeinsam benutzten Platten aufgrund dieses Engpassproblems eine eingeschränkte Skalierbarkeit auf.
  • Ein weiteres vorhandenes Datenspeicherungs- und -wiedergewinnungssystem wird als „Architektur, bei der nichts gemeinsam benutzt wird“, bezeichnet. Bei dieser Architektur sind die Daten über mehrere Verarbeitungsknoten verteilt, so dass jeder Knoten eine Teilmenge der Daten in der gesamten Datenbank speichert. Wenn ein neuer Verarbeitungsknoten hinzugefügt oder entfernt wird, muss die Architektur, bei der nichts gemeinsam benutzt wird, die Daten über die mehreren Verarbeitungsknoten neu anordnen. Diese Neuanordnung der Daten kann zeitaufwendig sein und die während der Datenneuordnung ausgeführten Lese- und Schreiboperationen der Daten stören. Außerdem kann die Affinität der Daten zu einem bestimmten Knoten „Gefahrenherde“ in dem Daten-Cluster für populäre Daten schaffen. Weil ferner jeder Verarbeitungsknoten außerdem die Speicherfunktion ausführt, erfordert diese Architektur wenigstens einen Verarbeitungsknoten, um Daten zu speichern. Deshalb kann die Architektur, bei der nichts gemeinsam benutzt wird, keine Daten speichern, falls alle Verarbeitungsknoten entfernt werden. Zusätzlich ist das Management von Daten in einer Architektur, bei der nichts gemeinsam benutzt wird, aufgrund der Verteilung der Daten über viele verschiedene Verarbeitungsknoten komplex.
  • Insbesondere bei einer Datenbank-als-ein-Dienst- (DBaaS-) Implementierung, bei der das Datenbankmanagement in einer cloud-basierten Umgebung bereitgestellt wird, kann es wünschenswert sein, kontinuierlich neue Merkmale oder Programme für Datenbankkunden freizugeben. Diese neuen Programme können die Funktionalität der Datenbank verbessern, können den Datenbankkunden neue Merkmale bereitstellen, können eine erhöhte Sicherheit bereitstellen, können schnellere Laufzeiten ermöglichen usw. Es gibt jedoch immer Risiken, die dem Freigeben neuer Programme, die nicht streng in einer Umgebung der echten Welt getestet worden sind, zugeordnet sind. Im Fall der Datenbanktechnik gibt es inhärente Risiken, die dem Freigeben eines neuen Programms zugeordnet sind, das nicht an echten Datenbankdaten oder mit echtem Kundenabfragen an den Datenbankdaten getestet worden ist. Das Programm kann Fehler oder Mängel aufweisen, die Schäden an den Datenbankdaten verursachen könnten, Leistungs- oder Laufzeitprobleme verursachen könnten, zusätzliche Fehler überall in der anderen Funktionalität im Datenbanksystem fortbestehen lassen könnten usw.
  • Es gibt jedoch zahlreiche Herausforderungen, die dem Testen eines schnelllebigen Cloud-Datenbankdienstes zugeordnet sind. Ein großer cloud-basierter Datenbankdienst führt z. B. mehrere zehn Millionen Kundenabfragen pro Tag aus und kann einen Online-Aufrüstungsprozess aufweisen, um eine kontinuierliche Verfügbarkeit sicherzustellen. Die Merkmale oder Programme können kontinuierlich freigegeben werden, wobei die Kunden eine schnelle Trendwende für die neue Funktionalität erwarten können. Diese schnelle Trendwende kann bedeuten, dass es ein kurzes Zeitfenster für das Testen der Merkmale oder Programme vor der Freigabe gibt. Hierin werden verbesserte Systeme, Verfahren und Vorrichtungen zum Testen von Merkmalen oder Programmen und zum Erfassen von Kundenarbeitsbelastungen in Datenbanksystemen offenbart. Die Offenbarungen hier ermöglichen wesentliche Verbesserungen des Programmentwicklungszyklus, so dass neue Merkmale oder Programme nur für die Kunden freigegeben werden können, nachdem sie strengen Tests in der echten Welt unterzogen worden sind.
  • Figurenliste
  • Nicht einschränkende und nicht vollständige Implementierungen der vorliegenden Offenbarung werden bezüglich der folgenden Figuren beschrieben Die Vorteile der vorliegenden Offenbarung werden bezüglich der folgenden Beschreibung und der beigefügten Zeichnungen besser verstanden, wobei:
    • 1 eine schematische graphische Darstellung eines Prozessablaufs zum Testen eines Merkmals in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist;
    • 2 eine schematische graphische Darstellung eines Prozessablaufs zum Testen eines Merkmals über eine Streaming-Implementierung in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist;
    • 3 ein Blockschaltplan von Komponenten eines Wiedergewinnungs- und Datenspeichersystems in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist;
    • 4 ein Blockschaltplan der Ausführungsform eines Betriebsmittelmanagers in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist;
    • 5 ein Blockschaltplan einer Ausführungsplattform in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist;
    • 6 ein schematischer Blockschaltplan einer Betriebsumgebung in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist;
    • 7 ein schematischer Ablaufplan eines Verfahrens zum Testen eines Merkmals in einer Datenbank in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist; und
    • 8 ein Beispiel ein Rechenvorrichtung in Übereinstimmung mit den Lehren und Prinzipien der Offenbarung ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es werden Systeme, Verfahren und Vorrichtungen zur inkrementalen Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen offenbart. Ein Verfahren enthält das Bestimmen einer Arbeitsbelastung mit einer oder mehreren historischen Kundenabfragen, die zum Testen des Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst. Das Verfahren enthält ferner das Ausführen eines Basislaufs der Arbeitsbelastung, die das Merkmal nicht implementiert, und das Ausführen eines Ziellaufs der Arbeitsbelastung, während sie das Merkmal implementiert. Das Verfahren enthält ferner das Vergleichen des Basislaufs und des Ziellaufs, um zu identifizieren, ob es im Ziellauf einen Leistungsrückgang gibt. Das Verfahren enthält ferner in Reaktion auf das Identifizieren des Leistungsrückgangs das erneute Ausführen des Ziellaufs, um zu identifizieren, ob der Leistungsrückgang immer noch vorhanden ist.
  • Die Offenbarung erstreckt sich auf Systeme, Verfahren und Vorrichtungen für die inkrementale Merkmalsentwicklung und die Arbeitsbelastungserfassung in Datenbanksystemen. Die Implementierungen der Offenbarung können in einem cloud-basierten Datenbankentwurf implementiert sein und können als eine Datenbank-als-ein-Dienst- (DBaaS-) Architektur bezeichnet werden. Die dienstorientierte Architektur eines cloud-basierten Datenbanksystems bietet Möglichkeiten zum Erzeugen einer neuen Funktionalität und neuer Programme. In einigen Fällen kann es unerlässlich sein, dass neue Merkmale und/oder Programme streng getestet werden, bevor sie für einen Kunden freigegeben oder an den Datenbankdaten eines Kunden betrieben werden. Das Testen von Programmen kann Fehler oder Mängel aufdecken, die die Datenbankdaten beschädigen, die Laufzeiten erhöhen oder andere Probleme mit der Leistung verursachen könnten. In einigen Fällen kann es vorteilhaft sein, die Merkmale oder Programme an echten Datenbankdaten oder mit echten Datenbankabfragen zu testen, bevor die Merkmale oder Programme für die Produktions-Server freigegeben werden. Hierin werden Systeme, Verfahren und Vorrichtungen zum Erfassen von Kundenarbeitsbelastungen in einem Datenbanksystem offenbart, um Merkmale oder Programme an den echten Datenbankdaten eines Kunden und/oder mit den echten Datenbankabfragen eines Kunden zu testen. Derartige Systeme, Verfahren und Vorrichtungen stellen ein verbessertes Testen von Datenbankmerkmalen oder -programmen bereit, um es den Entwicklern zu ermöglichen, Fehler oder Mängel zu beheben, bevor die Programme zu den Produktions-Servern freigegeben werden. Das Testen mit Produktionsabfragen von Kunden kann eine genaue Kenntnis der Auswirkung eines Programms auf die Abfragen eines Kunden bereitstellen und es deshalb ermöglichen, dass eine Rückmeldung gesammelt wird und Verbesserungen am Programm vorgenommen werden, bevor das Programm an die Kunden freigegeben wird.
  • In einer Ausführungsform ist ein Verfahren zum Testen eines Merkmals in einer Datenbank implementiert. Das Verfahren enthält das Bestimmen einer Arbeitsbelastung, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen des Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst. Das Verfahren enthält das Ausführen eines Basislaufs der Arbeitsbelastung, die das Merkmal nicht implementiert. Das Verfahren enthält das Ausführen eines Ziellaufs der Arbeitsbelastung, während sie das Merkmal implementiert. Das Verfahren enthält das Vergleichen des Basislaufs und des Ziellaufs, um zu identifizieren, ob es im Ziellauf einen Leistungsrückgang gibt. Das Verfahren enthält in Reaktion auf das Identifizieren eines Leistungsrückgangs das erneute Ausführen des Ziellaufs unter den Beschränkungen isolierter Betriebsmitteleinschränkungen, um zu identifizieren, ob der Leistungsrückgang immer noch vorhanden ist.
  • Das verbesserte Testen und die inkrementaler Merkmalsentwicklung, wie hier offenbart wird, kann durch das Sammeln historischer Daten, die in einem Datenlager gespeichert sind, implementiert sein. Die historischen Daten können eine Historie aller durch den Kunden ausgegebenen Abfragen zusammen mit den Konfigurationen und in Beziehung stehenden Statistiken für diese Abfragen enthalten. Die historischen Daten können ferner echte Datenbankdaten und Metadaten enthalten, die verwendet wurden, um diese durch den Kunden ausgegebenen Abfragen auszuführen. Die mandantenfähige cloud-basierte Datenbankarchitektur, wie sie hier offenbart wird, ermöglicht, dass die historischen Daten sicher gespeichert sind und durch einen Betriebsmittelmanager oder globale Dienste sicher auf sie zugegriffen wird. Die historischen Daten können wirksam eingesetzt werden, um die Analyse der Arbeitsbelastung und die inkrementale Entwicklung neuer Merkmale oder Programme zu ermöglichen. Die hier offenbarten Systeme, Verfahren und Vorrichtungen erzeugen die einzigartige Fähigkeit, echte historische Kundenabfragen auszuführen, um die Merkmale oder Programme zu testen, die durch die Datenbank selbst bereitgestellt werden können.
  • In einer Ausführungsform kann ein Entwickler eines Programms oder Merkmals echte Kundenabfragen erneut ausführen, um das Programm in einem Szenario der echten Welt unter Verwendung echter Datenbankdaten zu testen. In einigen Fällen kann es unerlässlich sein, sicherzustellen, dass die Kundenabfragen verschleiert sind und während des Testprozesses nicht durch den Entwickler gelesen werden können, weil die echten Kundenabfragen für Testzwecke wirksam eingesetzt werden. Wie hier offenbart wird, können die Kundenabfragen in einem isolierten Cloud-Dienst unter Verwendung separater, dedizierter virtueller Lager 116 erneut ausgeführt werden, um sicherzustellen, dass die Sicherheit des Kunden aufrechterhalten wird.
  • In einer Ausführungsform können die Systeme und Verfahren zum Testen eines Merkmals oder einer anderen prozeduralen Logik implementiert sein, ohne die irgendwelche Verarbeitungs- oder Ausführungsbetriebsmittel zu beeinflussen, die für die Kundenaufgaben zugewiesen sind. In einer Ausführungsform wird ein mandantenfähiges cloud-basiertes Datenbanksystem eingesetzt. Das Datenbanksystem kann die Datenbankspeicherung und -verarbeitung für mehrere Datenbankkunden bedienen. Die Datenbankkunden können Datenbankdaten über mehrere gemeinsam benutzte Speichervorrichtungen speichern und können eine oder mehrere Ausführungsplattformen mit mehreren Ausführungsknoten verwenden. Das Datenbanksystem kann so organisiert sein, dass die Speicher- und Rechenbetriebsmittel effektiv unbegrenzt skalierbar sind. Die Systeme und Verfahren zum Testen eines Merkmals, wie z. B. der prozeduralen Logik, um Datenbankfunktionen zu verbessern oder zu ändern, können eingesetzt werden, ohne irgendwelche Kundenfunktionen zu beeinflussen oder zu verlangsamen. Die Kundenfunktionen können direkt von einem Kunden empfangene Abfragen enthalten und/oder „interne“ Aufgaben wie die erneute Clusterbildung einer Tabelle, das Erzeugen oder Aktualisieren einer materialisierten Sicht, das Aktualisieren von Metadaten usw. enthalten. In einer Ausführungsform werden Merkmalstestsysteme und -verfahren in den Ausführungs-/Verarbeitungsbetriebsmitteln eingesetzt, die von irgendwelchen Betriebsmitteln getrennt sind, die zum Ausführen interner oder externer Kundenaufgaben verwendet werden.
  • Es gibt zahlreiche Herausforderungen, die dem Testen von Programmen in einem schnelllebigen Cloud-Datenbankdienst zugeordnet sind. Ein großer Datenbankanbieter kann z. B. mehrere zehn Millionen von Kundenanfragen pro Tag ausführen und einen Online-Aufrüstungsprozess aufweisen, um eine kontinuierliche Verfügbarkeit sicherzustellen. Ein Datenbankanbieter kann einen kontinuierlichen Freigabezyklus für neue Merkmale oder Programme anwenden, der eine schnelle Merkmalslieferung ermöglicht, aber ein relativ kurzes Zeitfenster zum Testen an den Freigabe-Artefakten verursacht. Ein Datenbankanbieter kann z. B. jede Woche zu einem bestimmten Zeitpunkt neue Merkmale freigeben. Wenn ein erstes Merkmal in einer ersten Woche freigegeben wird, kann das Merkmal nur während einer Woche bei der Verwendung in der echten Welt getestet werden, bevor ein zweites Merkmal in einer zweiten Woche freigegeben wird. Die Freigabe des zweiten Merkmals unterbricht jedes wertvolle Testen des ersten Merkmals. Deshalb ist es für schnelle Freigabezyklen wünschenswert, die Programme unter Verwendung echter Kundenabfragen zu testen, bevor das Programm freigegeben oder zu den echten Kundenarbeitsbelastungen migriert wird. Derartiges Testen stellt die Zusicherung der Stabilität und des Erfolgs des Programms bereit.
  • In einigen Implementierungen, die einen großen Datenbankanbieter einbeziehen, ist es jedoch unerschwinglich teuer, alle bei dem Datenbankanbieter eingereichten Kundenabfragen erneut auszuführen. Insbesondere in einem schnellen Freigabezyklus kann es unerschwinglich teuer sein, die Kundenabfragen erneut auszuführen, bevor ein neues Programm freigegeben wird. Deshalb enthält ein Aspekt der Offenbarungen hier das Abtasten und die Auswahl der Arbeitsbelastung, um sicherzustellen, dass das Testen einen angemessenen Zeit- und Betriebsmittelaufwand verbraucht, während dennoch zuverlässige Ergebnisse bereitstellt werden.
  • Die Systeme, Verfahren und Vorrichtungen für die inkrementale Merkmalsentwicklung und die Arbeitsaufwanderfassung können mit cloud-basierter Datenbanktechnik implementiert sein. Die Datenbankdaten können in einem cloud-basierten Speicher gespeichert sein, der über geographische Gebiete zugänglich ist. Dieser cloud-basierte Speicher bezieht sich auf Datenbankdaten, die in einem Speichersystem außerhalb des Standorts gespeichert sind, das in einigen Implementierungen durch einen Dritten aufrechterhalten werden kann. Ein Kunde kann z. B. wählen, die Daten bei einem Cloud-Speicheranbieter zu speichern, anstatt sie auf einer lokalen Computerfestplatte oder einer anderen lokalen Speichervorrichtung zu speichern, die dem Kunden gehört. Der Kunde kann auf die Daten über eine Internetverbindung zwischen den Rechenbetriebsmitteln des Kunden und den Speicherbetriebsmittel außerhalb des Standorts, die die Daten des Kunden speichern, zugreifen.
  • Die Cloud-Speicherung von Datenbankdaten kann gegenüber der herkömmlichen lokalen Speicherung vor Ort mehrere Vorteile bereitstellen. Wenn die Datenbankdaten in einem Cloud-Speicher gespeichert sind, kann auf die Informationen an jedem Ort zugegriffen werden, der eine Internetverbindung aufweist. Deshalb ist es nicht erforderlich, dass ein Datenbankkunde physische Speichervorrichtungen bewegt oder denselben Computer verwendet, um Datenbankinformationen zu speichern, zu aktualisieren oder wiederzugewinnen. Ferner kann durch mehrere Anwender auf die Datenbankinformationen an verschiedenen geographischen Orten gleichzeitig zugegriffen werden und können die Datenbankinformationen an verschiedenen geographischen Orten durch mehrere Anwender gleichzeitig aktualisiert und gespeichert werden. Der Kunde kann Kopien von Dateien über das Internet an einen Daten-Server senden, der dem Cloud-Speicheranbieter zugeordnet ist, und der die Dateien aufzeichnet. Der Kunde kann die Daten durch das Zugreifen über eine web-basierte Schnittstelle oder eine andere Anwenderschnittstelle auf den dem Cloud-Speicheranbieter zugeordneten Daten-Server wiedergewinnen. Der dem Cloud-Speicheranbieter zugeordnete Daten-Server kann dann Dateien an den Kunden zurücksenden oder dem Kunden erlauben, auf dem Daten-Server selbst auf die Dateien zuzugreifen und sie zu manipulieren.
  • Eine Datenbanktabelle kann in Reaktion auf eine Datenmanipulationsanweisung (DML-Anweisung), wie z. B. einen Einfügebefehl, einen Löschbefehl, einen Verschmelzungsbefehl usw., geändert werden. Derartige Modifikationen können als eine Transaktion bezeichnet werden, die in der Datenbanktabelle stattgefunden hat (die Modifikation kann hier alternativ als eine „Aktualisierung“ bezeichnet werden). 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 wurde. In einer Ausführungsform enthält eine Transaktion mehrere Änderungen, die an einer Tabelle vorgenommen wurden, wobei derartige Änderungen eine oder mehrere Mikropartitionen in der Tabelle beeinflussen können.
  • In einer Ausführungsform werden alle Daten in den Tabellen automatisch in eine unveränderliche Speichervorrichtung aufgeteilt, die als eine Mikropartition bezeichnet wird. Die Mikropartition kann als eine Stapeleinheit betrachtet werden, wobei jede Mikropartition zusammenhängende Speichereinheiten aufweist. Beispielhaft kann jede Mikropartition zwischen 50 MB und 500 MB unkomprimierte Daten enthalten (es wird angegeben, dass die tatsächliche Größe des Speichers kleiner sein kann, weil die Daten komprimiert gespeichert werden können). Gruppen von Zeilen in den Tabellen können in einzelne Mikropartitionen abgebildet sein, die spaltenweise organisiert sind. Diese Größe und die Struktur ermöglichen ein extrem granuläres Kürzen sehr großer Tabellen, die Millionen oder sogar Hunderte von Millionen von Mikropartitionen umfassen können. Die Metadaten können automatisch über alle in einer Mikropartition gespeicherten Zeilen einschließlich: des Wertebereichs für jede der Spalten in der Mikropartition, der Anzahl verschiedener Werte; und/oder zusätzlicher Eigenschaften, die sowohl zur Optimierung als auch zur effizienten Abfrageverarbeitung verwendet werden, gesammelt werden. In einer Ausführungsform kann die Mikropartitionierung automatisch an allen Tabellen ausgeführt werden. Die Tabellen können z. B. unter Verwendung der Reihenfolge, die auftritt, wenn die Daten eingefügt/geladen werden, transparent partitioniert werden.
  • In einer Ausführungsform können die Metadaten in Metadaten-Mikropartitionen in einem unveränderlichen Speicher gespeichert sein. In einer Ausführungsform kann ein System für jede Modifikation einer Datenbanktabelle Metadaten-Mikropartitionen in den Cloud-Speicher schreiben. In einer Ausführungsform kann ein System Metadaten-Mikropartitionen herunterladen und lesen, um die Abtastmenge zu berechnen. Die Metadaten-Mikropartitionen können parallel heruntergeladen und gelesen werden, wie sie empfangen werden, um die Berechnung der Abtastmenge zu verbessern. In einer Ausführungsform kann ein System die Metadaten-Mikropartitionen im Hintergrund periodisch konsolidieren. In einer Ausführungsform können Leistungsverbesserungen, einschließlich des Vorab-Abrufens, des Caching, der Spaltenanordnung und dergleichen enthalten sein. Weiterhin sind Sicherheitsverbesserungen einschließlich der Verschlüsselung und Integritätsprüfung außerdem bei Metadaten-Dateien mit einer Spaltenanordnung möglich.
  • In der folgenden Beschreibung der Offenbarung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden und in denen zur Veranschaulichung spezifische Implementierungen gezeigt sind, in denen die Offenbarung praktiziert werden kann. Es wird erkannt, dass andere Implementierungen verwendet werden können und strukturelle Änderungen vorgenommen werden können, ohne vom Schutzumfang der Offenbarung abzuweichen.
  • Beim Beschreiben und Beanspruchen der Offenbarung wird die folgende Terminologie in Übereinstimmung mit den im Folgenden dargelegten Definitionen verwendet.
  • Es muss angegeben werden, dass die Einzahlformen „ein“, „eine“ und „der/die/das“, wie sie in dieser Beschreibung und den beigefügten Ansprüchen verwendet werden, Verweise auf die Mehrzahl enthalten, es sei denn, der Kontext schreibt es deutlich anders vor.
  • Die Verweise überall in dieser Beschreibung auf „eine einzige Ausführungsform“, „eine Ausführungsform“, „eine einzige Implementierung“, „eine Implementierung“, „ein einziges Beispiel“ oder „ein Beispiel“ bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmtes Eigenschaft, das bzw. die im Zusammenhang mit der Ausführungsform, der Implementierung oder dem Beispiel beschrieben wird, in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Folglich beziehen sich nicht notwendigerweise alle Auftritte der oben identifizierten Ausdrücke an verschiedenen Stellen überall in dieser Beschreibung auf dieselbe Ausführungsform, dieselbe Implementierung oder dasselbe Beispiel. Zusätzlich sollte erkannt werden, dass die hiermit bereitgestellten Figuren für Erklärungszwecke für die Durchschnittsfachleute auf dem Gebiet sind.
  • Die Begriffe „umfassen“, „einschließen“, „enthalten“ und deren grammatikalische Äquivalente, wie sie hier verwendet werden, sind einschließende oder nicht abschließende Begriffe, die zusätzliche, nicht aufgeführte Elemente oder Verfahrensschritte nicht ausschließen.
  • Eine „Tabelle“, wie sie hier verwendet wird, ist als eine Sammlung von Datensätzen (Zeilen) definiert. Jeder Datensatz enthält eine Sammlung von Werten von Tabellenattributen (Spalten). Die Tabellen sind typischerweise physisch in mehreren kleineren Speichereinheiten (mit variierender Größe oder fester Größe), z. B. Dateien oder Blöcken, gespeichert.
  • Die Ausführungsformen in Übereinstimmung mit der vorliegenden Offenbarung können als eine Vorrichtung, ein Verfahren oder ein Computerprogrammprodukt verkörpert sein. Entsprechend kann die vorliegende Offenbarung die Form einer vollständig aus Hardware bestehenden Ausführungsform, einer vollständig aus Software bestehenden Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle im Allgemeinen als eine „Schaltung“, ein „Modul“ oder ein „System“ bezeichnet werden können. Weiterhin können die Ausführungsformen der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das in irgendeinem greifbaren Ausdrucksmedium verkörpert ist, das einen in dem Medium verkörperten computerverwendbaren Programmcode aufweist.
  • Es kann irgendeine Kombination aus einem oder mehreren computerverwendbaren oder computerlesbaren Medien verwendet werden. Ein computerlesbares Medium kann z. B. eine oder mehrere einer tragbaren Computerdiskette, einer Festplatte, einer Schreib-Lese-Speicher-Vorrichtung (RAM-Vorrichtung), einer Festwertspeicher-Vorrichtung (ROM-Vorrichtung), einer löschbaren programmierbaren Festwertspeicher-Vorrichtung (EPROM- oder Flash-Speicher-Vorrichtung), eines tragbaren Kompaktplatten-Festwertspeichers (CDROM), einer optischen Speichervorrichtung und einer magnetischen Speichervorrichtung enthalten. Der Computerprogrammcode zum Ausführen der Operationen der vorliegenden Offenbarung kann in irgendeiner Kombination aus einer oder mehrerer Programmiersprachen geschrieben sein. Derartiger Code kann aus dem Quellcode in eine computerlesbare Assemblersprache oder in einen Maschinencode kompiliert werden, der für die Vorrichtung oder den Computer, in der bzw. dem der Code ausgeführt wird, geeignet ist.
  • Die Ausführungsformen können außerdem in Cloud-Rechenumgebungen implementiert sein. In dieser Beschreibung und den folgenden Ansprüchen kann der „Cloud-Computerbereich“ als ein Modell zum Ermöglichen eines allgegenwärtigen, zweckmäßigen Netzzugangs auf Anforderung zu einem gemeinsam benutzten Pool konfigurierbarer Rechenbetriebsmittel (z. B. Netze, Server, Speicher, Anwendungen und Dienste) definiert sein, die durch Virtualisierung schnell bereitgestellt und mit minimalem Managementaufwand oder minimaler Dienstanbieter-Wechselwirkung freigegeben und dann entsprechend skaliert werden können. Ein Cloud-Modell kann sich aus verschiedenen Eigenschaften (z. B. Selbstbedienung auf Anforderung, breiter Netzzugang, Betriebsmittel-Zusammenlegung, schnelle Elastizität und gemessener Dienst), Dienstmodellen (z. B. Software als ein Dienst („SaaS“), Plattform als ein Dienst („PaaS“) und Infrastructure als ein Dienst („IaaS“)) und Bereitstellungsmodellen (z. B. private Cloud, Gemeinschafts-Cloud, öffentliche Cloud und Hybrid-Cloud) zusammensetzen.
  • Die Ablaufpläne und Blockschaltpläne in den beigefügten Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß den verschiedenen Ausführungsformen der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder Blockschaltplänen ein Modul, ein Segment oder einen Teil des Codes darstellen, der einen oder mehrere ausführbare Befehle zum Implementieren der spezifizierten logischen Funktion(en) umfasst. Es wird außerdem angegeben, dass jeder Block der Blockschaltpläne und/oder Ablaufpläne und Kombinationen aus Blöcken in den Blockschaltplänen und/oder Ablaufplänen durch hardware-basierte Spezialsysteme, die die spezifizierten Funktionen oder Handlungen ausführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen implementiert sein kann. Diese Computerprogrammanweisungen können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung steuern kann, in einer speziellen Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel erzeugen, der Anweisungsmittel enthält, die die in dem Block oder den Blöcken im Ablaufplan und/oder im Blockschaltplan spezifizierte Funktion/Handlung implementieren.
  • Die hier beschriebenen Systeme und Verfahren können in einem flexiblen und skalierbaren Datenlager unter Verwendung einer neuen Datenverarbeitungsplattform arbeiten. In einigen Ausführungsformen setzen die beschriebenen Systeme und Verfahren eine Cloud-Infrastruktur wirksam ein, die cloud-basierte Speicherbetriebsmittel, Rechenbetriebsmittel und dergleichen unterstützt. Beispielshafte cloud-basierte Speicherbetriebsmittel bieten eine signifikante Speicherkapazität, die auf Anforderung verfügbar ist, zu geringen Kosten an. Ferner können diese cloud-basierten Speicherbetriebsmittel fehlertolerant und im hohen Grade skalierbar sein, was in privaten Datenspeichersystemen kostspielig zu erreichen sein kann. Beispielshafte cloud-basierte Rechenbetriebsmittel sind auf Anforderung verfügbar und können basierend auf den tatsächlichen Nutzungsniveaus der Betriebsmittel mit einem Preis versehen werden. Typischerweise wird die Cloud-Infrastruktur schnell dynamisch eingesetzt, rekonfiguriert und stillgelegt.
  • In den beschriebenen Systemen und Verfahren verwendet ein Datenspeichersystem eine SQL-basierte (auf einer strukturierten Abfragesprache basierende) relationale Datenbank. Diese Systeme und Verfahren sind jedoch unter Verwendung irgendeiner Datenspeicherarchitektur und unter Verwendung irgendeiner Sprache, um die Daten innerhalb der Datenspeicher- und -wiedergewinnungsplattform zu speichern und wiederzugewinnen, auf irgendeinen Typ von Datenbank und irgendeinen Typ von Datenspeicher- und -wiedergewinnungsplattform anwendbar. Die hier beschriebenen Systeme und Verfahren stellen ferner ein mandantenfähiges System bereit, das die Isolierung von Rechenbetriebsmitteln und Daten zwischen verschiedenen Kunden/Klienten und zwischen verschiedenen Anwendern innerhalb desselben Kunden/Klienten unterstützt.
  • In den Figuren ist 1 eine schematische graphische Darstellung eines Prozessablaufs 100 zum Testen von Merkmalen in einem Datenbanksystem. Der Prozessablauf 100 stellt ein Werkzeug zum Ausführen von Produktionsabfragen und Detektieren von Rückgängen bereit. Der Prozessablauf 100 kann Abfragen in Arbeitsbelastungen organisieren, die unter verschiedenen Einstellungen ausgeführt und später verglichen werden können, um die Unterschiede zwischen den Läufen zu analysieren. Die Arbeitsbelastungen können aus echten historischen Kundenabfragen bestehen, die durch einen Kunden angefordert und für den Kunden an echten Datenbankdaten ausgeführt wurden. Der Prozessablauf 100 stellt mehrere Funktionalitäten einschließlich: der Arbeitsbelastungsauswahl, der Arbeitsbelastungsausführung und der Ergebnisanalyse bereit. Die Arbeitsbelastungsauswahl enthält das Abtasten der geeigneten Arbeitsbelastung aus einer Ablage historischer Kundenanfragen für den Zweck eines aktuellen Tests. Das Ausführen der Arbeitsbelastung enthält das Ausführen der ausgewählten Arbeitsbelastung mit spezifizierten Einstellungen. Die Ergebnisanalyse enthält das Verbrauchen der Ergebnisse mehrerer Läufe und vergleicht diese Ergebnisse, um einen Bericht über Unterschiede oder Rückgänge zu erzeugen. Nützliche Daten, die im Ergebnis des Prozessablaufs 100 bestimmt worden sind, können als Datenbankdaten in einer oder mehreren Tabellen gespeichert werden.
  • Der in 1 veranschaulichte Prozessablauf 100 kann einen Prozessablauf zum Testen von Merkmalen repräsentieren. Der Prozessablauf 100 kann durch einen Entwickler 112 eines Merkmals oder Programms implementiert werden, das vorgesehen ist, in dem Datenbanksystem 102 implementiert zu werden. Das Datenbanksystem 102 enthält eine Arbeitsbelastungsablage 104, Abfragestatistiken 106, verschleierte Ergebnisse 108 und Testlauf-Metadaten 110. Der Entwickler 112 kann eine Arbeitsbelastung 118 von auszuführenden Abfragen durch das Spezifizieren der Arbeitsbelastungs-Auswahlkonfiguration bei 132 oder das direkte Importieren einer Arbeitsbelastung bei 130 aufbauen. Die Arbeitsbelastungs-Auswahlkonfiguration bei 132 enthält Kriterien zum Auswählen von Abfragen, die für das Testen eines Zielmerkmals am besten geeignet sind. Dann wird eine Arbeitsbelastung 118 basierend auf den durch den Entwickler 112 festgelegten gegebenen Konfigurationen erzeugt.
  • Nachdem die Arbeitsbelastung 118 erzeugt worden ist, spezifiziert der Entwickler 112 bei 128 die Ausführungseinstellungen. Die Ausführungseinstellungen werden zum Ausführen der Arbeitsbelastung 118 verwendet. In einer Ausführungsform sind wenigstens zwei Sätze von Ausführungseinstellungen erforderlich, wobei ein Satz ein Basislauf 124 ist und ein Satz ein Ziellauf 126 ist. Für das Testen von Merkmalen können die beiden Einstellungen (d. h., der Basislauf 124 und der Ziellauf 126) mit Ausnahme eines Merkmals-Merkers die gleichen sein. Ein Merkmalstestlauf kann von der Arbeitsbelastung 118 entkoppelt werden, so dass die Arbeitsbelastung 118 beliebig oft mit unterschiedlichen Einstellungen ausgeführt werden kann.
  • Der Entwickler 112 leitet den Basislauf 124 und den Ziellauf 126 in dedizierten virtuellen Lagern 116 ein, um die Betriebsmittelisolierung sicherzustellen. Wenn der Basislauf 124 und/oder der Ziellauf 126 beendet sind, wird bei 120 eine Verifikation der Ergebnisse ausgeführt, um Falsch-Positive zu eliminieren. Die Verifikation bei 120 wird durch den Bericht 122 ausgeführt, der für die Rückgänge erzeugt wird. Ein Falsch-Positiv kann am typischsten bei Leistungsvergleichen auftreten und kann durch Variationen in der Cloud-Datenbankumgebung verursacht werden. Alle relevanten Daten einschließlich der Abfragehistorie, der Abfragestatistik 106, der verschleierten Ergebnisse 108 und Metadaten der Läufe werden im Datenbanksystem 102 gespeichert. Die relevanten Daten können verfügbar sein, um unter Verwendung der strukturierten Abfragesprache (SQL) abgefragt zu werden. Der Entwickler 112 kann abhängig vom Ziel eines Tests nachforschen, um spezifische Abfragen aus dem Bericht 122 zu untersuchen, oder wählen, eine tiefere Analyse unter Verwendung von kundenspezifischen SQL-Abfragen auszuführen.
  • Arbeitsbelastungen
  • Die Arbeitsbelastung 118 kann automatisch basierend auf einem Satz von Kriterien ausgewählt werden, die durch den Entwickler 112 in Anbetracht der Anzahl der Abfragen (d. h., der Stichprobengröße) in der Arbeitsbelastung 118 bereitgestellt werden. Es kann eine umfangreiche Vielfalt von Auswahlkriterien verwendet werden, um die Arbeitsbelastung 118 zu bestimmen. Die Auswahlkriterien können die Konten und die Anwender, die historische Abfragen ausgeben, die Datenbank und das Schema der historischen Abfragen, das Zeitfenster, in dem die historischen Abfragen ausgeführt wurden, passende Abfragetextfragmente, passende Ausführungskonfigurationen usw. enthalten.
  • Nach dem Deduplizieren der historischen Abfragen, die die vom Entwickler gelieferten Kriterien erfüllen, kann ein Satz von Heuristiken angewendet werden, die den Suchraum weiter kürzen. Ein beträchtlicher Prozentsatz der historischen Abfragen im System kann sehr einfach sein oder keinen signifikanten Testwert darstellen. Die „select1-Abfragen werden z. B. durch einige Werkzeuge häufig ausgegeben, um zu verifizieren, ob eine gültige Verbindung zur Datenbank gibt. Derartige historischen Abfragen stellen keinen signifikanten Testwert bereit. Ferner können die zum Testen ausgewählten historischen Abfragen optimiert werden, um sicherzustellen, dass sie eine angemessene Menge an Betriebsmitteln verbrauchen. Deshalb sollten die für das Testen ausgewählten historischen Abfragen so optimiert werden, dass die ausgewählten historischen Abfragen nicht zu einfach sind, um wertvolle Informationen bereitzustellen, und nicht zu teuer sind. Für verbleibende historische Abfragen, die nicht gekürzt werden, weil sie zu einfach oder zu teuer sind, wird eine Teilmenge von historischen Abfragen ausgewählt, die gemäß einer Diversitätsmessung eine maximale Abdeckung erreichen können. Viele Produktionsschemata können feste Benutzungsmuster aufweisen. In einigen Implementierungen kann es ausreichend sein, für jedes Abfragemuster eine kleine Anzahl repräsentativer Abfragen auszuwählen.
  • In einer Ausführungsform wird unter Verwendung eines Query2Vec-Algorithmus eine vielfältige Arbeitsbelastung 118 ausgewählt. Der Query2Vec-Algorithmus bildet historische SQL-Abfragen auf einen hochdimensionalen Vektorraum ab. Deshalb können historische Abfragen in einen hochdimensionalen Vektorraum in einer Weise eingebettet werden, die die Semantik bewahrt, so dass sowohl der Kosinusabstand zwischen den Vektoren als auch die anwendungsspezifischen Distanzfunktionen über anwendungsspezifische Merkmalsvektoren funktionieren. Weiter in einer Ausführungsform werden, um eine Arbeitsbelastung 118 zusammenzufassen, alle historischen Abfragen unter Verwendung des Query2Vec-Algorithmus eingebettet, wobei dann K-Abfrage-Cluster unter Verwendung von K-Means gefunden werden. Die historische Abfrage, die sich in jedem Cluster am nächsten beim Schwerpunkt befindet, kann in der Zusammenfassung als eine repräsentative Abfrage für diesen Cluster ausgewählt werden. Der optimale K-Wert kann unter Verwendung des Ellenbogen-Verfahrens bestimmt werden, indem der K-Means-Algorithmus in einer Schleife mit zunehmendem K ausgeführt wird, bis sich die Änderungsrate der Summe der quadrierten Abstände von den Schwerpunkts-„Ellenbogen“ stabilisiert. Dieses Verfahren kann sicherstellen, dass die erzeugte Teilstichprobe wenigstens eine Abfrage aus allen Abfrage-Clustern enthält, wobei in jedem Abfrage-Cluster ein bestimmter Typ von Kundenabfrage repräsentiert ist.
  • Die ausgewählte Arbeitsbelastung wird in der Arbeitsbelastungsablage 104 im Datenbanksystem 102 bestehenbleibend gemacht. Die Arbeitsbelastungsablage 104 speichert frühere ausgewählte Arbeitsbelastungen zusammen mit einigen zugehörigen Kontexten, wie z. B. der Kompilierungsumgebung und der Startzeit der ursprünglichen Abfrage. Diese zugeordneten Kontexte können für das erneute Ausführen der Abfragen nützlich sein. Die Arbeitsbelastungsablage 104 kann zuvor ausgewählte Arbeitsbelastungen speichern, so dass die Arbeitsbelastungen erneut ausgeführt werden können, um einen neuesten Satz von Kundenabfragen aufzunehmen, die den Auswahlkriterien entsprechen. Die ausgewählten Arbeitsbelastungen können direkt aus Abfragetexten oder anderen Strukturformaten wie kommagetrennten Werten (CSV) oder der JavaScript-Objektnotation (JSON) importiert werden. Dies kann typischerweise verwendet werden, wenn die zuvor ausgewählte Arbeitsbelastung fest ist und der Entwickler 112 eine genaue Kenntnis dessen hat, welche historischen Abfragen auszuführen sind. Die ausgewählten Abfragen können nicht nur Produktionsabfragen enthalten, sondern irgendeine Abfrage, die der Entwickler 112 in einer Produktionsumgebung testen möchte.
  • Läufe historischer Abfragen
  • Es können mehrere Mechanismen eingesetzt werden, um das Ausführen von Kundenabfragen in einer sicheren, zuverlässigen und konfigurierbaren Weise zu ermöglichen. Derartige Mechanismen enthalten z. B. Ergebnisverschleierung, eine Abfrageumleitung, eine konfigurierbare Abfragekompilierungsumgebung und eine Zeitreise.
  • Die Ergebnisverschleierung kann in den Fällen eingesetzt werden, in denen die Datensicherheit wichtig ist. In bestimmten Fällen und für bestimmte Datenbankdaten oder Datenbankkunden kann es unerlässlich sein, sicherzustellen, dass die Datenbankdaten und Abfrageergebnisse sicher sind. Die Ergebnisverschleierung kann implementiert werden, um sicherzustellen, dass das erneute Ausführen einer Kundenabfrage die Daten des Kunden nicht aufdeckt. Während der Kompilierungsphase können Hash-Aggregationsoperatoren oben auf einem Abfrageplan hinzugefügt werden. Diese Hash-Aggregationsoperatoren verringern die Ergebnisse verschleierter Abfragen auf einen einzigen Hash-Wert und garantieren, dass der Entwickler 112 die durch das wiederholte Ausführen der historischen Kundenabfrage zurückgegebenen Ergebnisse nicht sehen kann. Die Hash-Funktion kann eine stabile Hash-Aggregation berechnen, die sicherstellt, dass die Ergebnisse für verschiedene Läufe derselben historischen Kundenabfrage vergleichbar sind. Die stabile Hash-Aggregation kann sicherstellen, dass der Entwickler 112 nur eine Sichtbarkeit darin aufweist, ob das Ergebnis der erneuten Ausführung der Abfrage das gleiche wie das Ergebnis der ursprünglichen Abfrage ist, und dass der Entwickler 112 keine Sichtbarkeit in die echten Werte des Abfrageergebnisses aufweist.
  • Die Abfrageumleitung ermöglicht den Vergleich von zwei oder mehr Versionen von Cloud-Diensten und virtuellen Lagern. Ein Abfrageumleitungsmechanismus kann implementiert sein, um die Abfragen umzuleiten, um in einer spezifizierten Cloud-Dienstinstanz mit der Testversion ausgeführt zu werden. Die Abfrageumleitung enthält das Spezifizieren eines Satzes von Cloud-Dienstbetriebsmitteln, um eine Abfrage darin auszuführen, wie z. B. einen Satz von Ausführungsplattformen und/oder spezifischen Ausführungsknoten innerhalb des Satzes von Ausführungsplattformen. Die Abfrageumleitung kann verwendet werden, um sowohl die Isolierung als auch das Testen an einer bestimmten Version der Programmierlogik oder des Codes auszuführen. Eine Möglichkeit, einen Test der Programmierlogik auszuführen, ist z. B., dedizierte Cloud-Instanzen mit einer speziellen Paketversion bereitzustellen und Testabfragen umzuleiten, so dass in den bereitgestellten Instanzen ausgeführt werden.
  • Für die Arbeitsbelastungen, die als Abfragetexte importiert werden, kann eine konfigurierbare Abfragekompilierungsumgebung (z. B. ein Konto, eine Datenbank und ein Schema) spezifiziert werden, um die Arbeitsbelastung erfolgreich auszuführen. Andere Umgebungseinstellungen wie z. B. Merkmals-Merker] können außerdem konfiguriert sein. Ein Merkmals-Merker enthält einen Parameter (d. h., einen Knopf) zum Steuern und/oder Freigeben eines Merkmals. Eine Konfigurationsabfrage-Kompilierungsumgebung enthält Mittel, um eine Abfrage von einem internen Konto auszuführen, das durch einen Datenbankmanager oder -anbieter gesteuert ist. Die konfigurierbare Abfragekompilierungsumgebung kann implementiert sein, um die Mandantenfähigkeiten in einem cloud-basierten mandantenfähigen Datenbanksystem auszunutzen. In einer konfigurierbaren Abfragekompilierungsumgebung kann während einer Namensauflösungsphase der Kompilierung eine Sonderrolle erlaubt sein, um einen „Namensraum“ einer Datenbank-Kundenabfrage aufzunehmen und die in Beziehung stehenden Objekte aufzulösen.
  • In einer Ausführungsform ist das Testen historischer Abfragen konfiguriert, mit einem Zeitreise-Zeitstempel ausgeführt zu werden, so dass alle historischen Abfragen in der Arbeitsbelastung ab dem spezifizierten Zeitstempel des ursprünglichen Laufs der historischen Abfrage ausgeführt werden. Die Abfrageergebnisse von zwei Läufen können nur vergleichbar sein, wenn sie die gleiche Zeitreiseversion aufweisen, weil die Datenbankdaten während eines Testlaufs einer historischen Abfrage gleichzeitig über die Anweisungen einer Datenmanipulationssprache (DML) aktualisiert werden können.
  • In einer Ausführungsform wird ein Merkmal oder ein Programm gegen eine historische Kundenabfrage ausgeführt. Ein Lauf einer historischen Kundenabfrage zielt darauf ab, die Kundenabfrage zu testen, ohne die Produktionsarbeitsbelastung des Kunden zu beeinflussen. Deshalb wird in einer Ausführungsform ein Lauf einer historischen Kundenabfrage (d. h., ein Testlauf) in separat konfigurierten Cloud-Diensten 114 und separaten dedizierten virtuellen Lagern 116 ausgeführt. Die konfigurierten Cloud-Dienste 114 und die dedizierten virtuellen Lager 116 können durch den Entwickler 112 konfiguriert werden. Abhängig von den verfügbaren Betriebsmitteln (z. B. der Größe des dedizierten virtuellen Lagers 116) kann der Entwickler 112 die Gleichzeitigkeit spezifizieren, die zu verwenden ist, um die Arbeitsbelastung 118 auszuführen. Läufe mit hoher Gleichzeitigkeit können außerdem als guter Stresstestmechanismus für das dedizierte virtuelle Lager 116 verwendet werden. Die hier offenbarten Systeme können ferner eine Zeitüberschreitungs-Grenze implementieren, um auf einer maximalen Zeit, die eine historische Abfrage laufen kann, bevor sie abgebrochen wird, einen Deckel anzuordnen. Dies kann vermeiden, dass bösartige Abfragen zu viele Betriebsmittel beanspruchen.
  • In einer Ausführungsform erhalten die hier offenbarten Systeme die ursprüngliche Startzeit einer historischen Kundenanfrage aufrecht. In einer Ausführungsform stellen die Systeme eine „Wiedergabe“-Betriebsart bereit, um die Arbeitsbelastung 118 auszuführen. Der Wiedergabebetriebsart führt die historischen Abfragen mit den gleichen Zeitintervallen, die wie die ursprünglichen Startzeiten getrennt sind, aus. Dies kann nützlich sein, um die genaue Auswirkung einer erfassten Kundenarbeitsbelastung auf das System zu simulieren. Ferner können die hier offenbarten Systeme eine „Erklär“-Betriebsart bereitstellen, die die Abfragen in der Arbeitsbelastung 118 kompiliert, um Planänderungen und Kompilierungsfehler zu detektieren.
  • Verifikation und Analyse
  • Nachdem der Arbeitsbelastung 118 mehrere Läufe unter verschiedenen Einstellungen erzeugt hat (z. B. den Basislauf 124 und den Ziellauf 126), kann das Merkmalstestsystem bei 120 eine Verifikation und Analyse an den Ergebnissen ausführen, um einen Bericht 122 zu erzeugen. Die Verifikationsschritte bei 120 können für den Leistungsvergleich vorteilhaft sein, um die falsch-positiven Raten zu verringern. Beim Vergleichen des Basislaufs 124 und des Ziellaufs 126 verifiziert das Merkmalstestsystem bei 120 die Leistungsrückgänge im Ziellauf 126 durch das mehrmalige erneute Ausführen der Abfragen, die als langsamer als die gleichen Abfragen im Basislauf 124 gemeldet wurden, unter Verwendung der Einstellungen des Ziellaufs 126. Dies kann vorteilhaft beim Aussortieren Falsch-Positiver bei Leistungsvergleichen aufgrund von Variationen in der Cloud-Umgebung oder unterschiedlichen Cache-Zuständen entweder für die Daten in virtuellen Lagern oder für die Metadaten in der Schicht der Cloud-Dienste sein. Erst wenn eine Abfrage nach mehreren Verifikationsläufen konsistent einen signifikanten Prozentsatz des Leistungsrückgangs zeigt, meldet das Merkmalstestsystem das Merkmal oder das Programm als echte Leistungsprobleme. Ferner können die Datenänderungen an den zugrundeliegenden Tabellen die Leistungsvergleiche für den Anwendungsfall des Kunden irrelevant machen, z. B. für eine Staging-Tabelle, die mit Daten geladen, verarbeitet und dann abgeschnitten wird.
  • Zusätzlich zum Detektieren von Leistungsrückgängen detektiert das Merkmalstestsystem ferner sowohl falsche Ergebnisse als auch neue Anwenderfehler oder interne Fehler. Das Merkmalstestsystem erzeugt automatisch einen Bericht 122. Das Merkmalstestsystem stellt sicher, dass der Bericht 122 sicherstellt, dass die Vergleiche immer gültig sind. Nicht-deterministische Abfragen werden z. B. von den Leistungs- und Ergebnisvergleichen ausgeschlossen. Die Abfragen, die eine durch die Läufe festgelegte Zeitüberschreitungs-Grenze erreicht haben, werden für die Leistungsunterschiede nicht verglichen. Die Abfragen, die mit demselben Fehlercode in beiden Läufen (d. h., im Basislauf 124 und im Ziellauf 126) fehlschlagen, werden nicht als Rückgänge gemeldet.
  • In einer Ausführungsform kann es vorteilhaft sein, sicherzustellen, dass der Bericht 122 prägnant und für einen Entwickler 112 leicht aufzunehmen ist. Weil alle Metadaten der Arbeitsbelastungen und Läufe im Merkmalstestsystem einschließlich ausführlicher Statistiken für jede Abfrage gespeichert sind, können anspruchsvolle Anwender leicht ihre eigenen analytischen Abfragen schreiben, um eine ausführlichere Analyse auszuführen, die für ihren eigenen Testanforderungen geeignet ist.
  • In 2 ist ein Prozessablauf 200 für einen Streaming-Lauf eines Merkmalstestsystems gezeigt. In einer Ausführungsform ist die vorgegebene Betriebsart für das Merkmalstestsystem stapelorientiert, wobei eine Arbeitsbelastung 118 im Voraus ausgewählt wird und dann zum Vergleich unter verschiedenen Einstellungen ausgeführt wird. Diese stapelorientierte Betriebsart kann für kleine bis mittlere Arbeitsbelastungen 118 gut funktionieren, wobei sie aber für größeren Arbeitsbelastungen nicht gut arbeiten kann. Größere Arbeitsbelastungen werfen mehrere Probleme auf. Es ist ein bei größeren Arbeitsbelastungen aufgeworfenes Problem, dass ihre Ausführung länger dauert, wobei im Lauf der Zeit viele der ursprünglichen historischen Abfragen aufgrund von Schemaänderungen, wie z. B. fallengelassenen Tabellen, nicht länger gültig sind. Es ist ein zusätzliches Problem, dass die Kunden selbst ohne eine Schemaänderung ständig neue Daten in die Datenbank aufnehmen. Um Ergebnisvergleiche zu ermöglichen, verwendet das Merkmalstestsystem für jeden Lauf eine feste Zeitreiseversion, die typischerweise am Anfang des Laufs festgelegt wird. Es ist ein zusätzliches Problem, dass, weil die Arbeitsbelastung 118 im Voraus festgelegt wird, Gelegenheiten verpasst werden, den neuesten Satz von Abfragen auszuwählen, um die Suchkriterien zu erfüllen.
  • Der Prozessablauf 200 für die Streaming-Betriebsart behandelt die obenerwähnten Probleme bei dem in 1 veranschaulichten stapelorientierten Prozessablauf 100. Im Prozessablauf 200 in der Streaming-Betriebsart stellt der Entwickler 212 eine Arbeitsbelastungskonfiguration und Ausführungseinstellungen ähnlich zu jenen bereit, die in der Stapelbetriebsart vorgesehen sind (siehe 100). Anstatt jedoch im Voraus alle Abfragen in der Arbeitsbelastung auszuwählen, steuert der Entwickler 212 nun die Streaming-Geschwindigkeit, die spezifiziert, wie viele Abfragen für jeden Einheitszeitraum auszuwählen sind.
  • In der Streaming-Betriebsart werden die Arbeitsbelastungen durch die Arbeitsbelastungsauswahleinrichtung 202 in Mikrostapeln inkrementell ausgewählt und zu einer Abfragewarteschlange 204 hinzugefügt, die dann Abfragen bei der Abfragelaufeinrichtung 206 einreicht. Die Abfragelaufeinrichtung 206 nimmt jede Abfrage auf und multiplexiert sie, um sie mit verschiedenen Einstellungen auszuführen, bevor sie die Verifikation und den Vergleich ausführt, um den Bericht 214 zu erzeugen. Die Abfragelaufeinrichtung 206 führt den Basislauf 208 und den Ziellauf 210 gemäß verschiedenen Parametern aus, die durch die Abfragelaufeinrichtung 206 bestimmt oder durch den Entwickler 212 eingegeben werden können. Die Ergebnisse der Streaming-Läufe können periodisch zu gemeinsam benutzten Speichervorrichtungen im Datenbanksystem entleert werden, so dass Anwender die neuesten Ergebnisse eines laufenden Streaming-Laufs abfragen können.
  • Weil die Abfragen einzeln bei der Abfragelaufeinrichtung 206 eingereicht werden, können die Abfragen unter Verwendung unterschiedlichen Zeitreiseversionen ausgeführt werden. Im Prozessablauf 200 in der Streaming-Betriebsart verwendet jede Abfrage den aktuellen Zeitstempel, den sie bei der Abfragelaufeinrichtung 206 eingereicht hat, als die Zeitreiseversion, wobei es keine Notwendigkeit gibt, weit in der Zeit zurück zu reisen. Weil die Arbeitsbelastungen inkrementell ausgewählt werden, ist zusätzlich garantiert, dass die Arbeitsbelastungen nur sehr neue historische Abfragen enthalten. Dies bedeutet, dass es im Vergleich zu der in 1 veranschaulichten stapelorientierten Betriebsart weniger Datenänderungen oder Schemaänderungen gibt, wenn diese historischen Abfragen ausgeführt werden. Dies führt zu weniger ungültigen Abfragen. Bei dem Prozessablauf 200 in der Streaming-Betriebsart kann das Merkmalstestsystem im Vergleich zu der stapelorientierten Betriebsart längere Läufe mit höheren Erfolgsraten unterstützen.
  • Der Prozessablauf 200 in der Streaming-Betriebsart kann für das Testen von Merkmalsfreigaben verwendet werden, um die neuesten Kundenabfragen aufzunehmen und die Erfolgsrate dieser Abfragen zu verbessern. Die Läufe können verwendet werden, um die Stabilität eines Merkmals oder eines Programms sicherzustellen, bevor das Merkmal oder das Programm zu Kundenarbeitsbelastungen migriert wird.
  • In bestimmten Fällen kann es wünschenswert sein, das Zeitfenster zwischen dem Zeitpunkt, zu dem neuer Freigabe-Artefakte verfügbar sind, und dem Zeitpunkt, zu dem die Migration von Kunden zu einem neu freigegebenen Merkmal oder Programm beginnt, zu minimieren. Um dies zu erreichen, kann der Freigabelauf eine hohe Gleichzeitigkeit verwenden und Abfragen an einem dedizierten Mehr-Cluster-Lager ausführen, das automatisch nach oben und unten skaliert werden kann, um mit Abfragearbeitslasten fertig zu werden.
  • Die Arbeitsbelastungsauswahleinrichtung 202 stellt sicher, dass die Stichprobe der ausgewählten historischen Abfragen vielfältige Sätze von Anwendungsfällen abdeckt. Die unter Verwendung der Query2Vec ausgewählte Stichprobe kann verursachen, dass die Abfrageauswahl ausgebreitet und vielfältig ist, weil der Query2Vec-Algorithmus das Aufnehmen einer Abfragestichprobe aus jedem Abfrage-Cluster garantiert und folglich die Abdeckung aller Typen von Abfragen sicherstellt.
  • Testen von Merkmalen
  • Bevor ein neues Merkmal oder Programm, wie z. B. eine SQL-bezogene Verbesserung, für Datenbankkunden freigegeben wird, wird das neue Merkmal oder Programm an Produktionsabfragen unter Verwendung des Merkmalstestsystems getestet. Das neue Merkmal oder Programm wird getestet, um Einsichten in die Auswirkungen der Änderung (d. h. die Implementierung des neuen Merkmals oder Programms) auf die Datenbankkunden zu gewinnen. Um neue Merkmale und Programme zu testen, kann ein Entwickler Merkmal-Flags einrichten und dem Prozessablauf 100, 200 folgen, wie in den 1-2 beschrieben ist.
  • In 3 ist nun ein Computersystem 300 zum Ausführen der hier offenbarten Verfahren veranschaulicht. Das Computersystem 300 kann für das Testen von Merkmalen oder Programmen während einer Entwicklungsphase durch das Ausführen dieser Merkmale oder Programme an echten Datenbankdaten konfiguriert sein. Das Computersystem 300 kann für das Ausführen von von den Anwendern empfangenen echten Kundenabfragen und/oder für das erneute Ausführen dieser echten Kundenabfragen zu einem späteren Zeitpunkt zum Zweck des Testens von Merkmalen verwendet werden.
  • Wie in 3 gezeigt ist, kann der Betriebsmittelmanager 302 an mehrere Anwender 304, 306 und 308 gekoppelt sein. In speziellen Implementierungen kann der Betriebsmittelmanager 302 irgendeine Anzahl von Anwendern unterstützen, die Zugang zur Datenverarbeitungsplattform 300 wünschen. Die Anwender 304, 306, 308 können z. B. Endanwender, die Datenspeicher- und -wiedergewinnungsanforderungen bereitstellen, Systemmanager, die die hier beschriebenen Systeme und Verfahren managen, und andere Komponenten/Vorrichtungen, die mit Betriebsmittelmanager 102 wechselwirken, enthalten. Die Anwender 304, 306 und 308 können hier als „Kunden“ bezeichnet werden und können eine direkte Verbindung zu einer oder mehreren der hier offenbarten Bereitstellungen aufweisen. Jeder der Anwender 304, 306 und 308 kann mit einer primären Bereitstellung verbunden sein und die Fähigkeit aufweisen, die Verbindung von der primären Bereitstellung zu einer sekundären Bereitstellung überzuführen.
  • Der Betriebsmittelmanager 302 stellt verschiedene Dienste und Funktionen bereit, die den Betrieb aller Systeme und Komponenten innerhalb der Datenverarbeitungsplattform 300 unterstützen. Betriebsmittelmanager 302 kann an die Metadaten 310 gekoppelt sein, die der Gesamtheit der überall in der Datenverarbeitungsplattform 300 gespeicherten Daten zugeordnet sind. In einigen Ausführungsformen können Metadaten 310 eine Zusammenfassung sowohl der Daten, die in entfernten Datenspeichersystemen gespeichert sind, als auch der Daten, die aus einem lokalen Cache verfügbar sind, enthalten. Zusätzlich können die Metadaten 310 Informationen hinsichtlich dessen enthalten, wie die Daten in den entfernten Datenspeichersystemen und den lokalen Caches organisiert sind. Die Metadaten 310 können es den Systemen und Diensten ermöglichen, zu bestimmen, ob ein Teil der Daten verarbeitet werden muss, ohne die tatsächlichen Daten aus einer Speichervorrichtung zu laden oder auf sie zuzugreifen.
  • Der Betriebsmittelmanager 302 kann ferner an die Ausführungsplattform 312 gekoppelt sein, die mehrere Rechenbetriebsmittel bereitstellt, die verschiedene Datenspeicherungs- und Datenwiedergewinnungsaufgaben ausführen, wie im Folgenden ausführlicher erörtert wird. In einer Ausführungsform sind eine oder mehrere Ausführungsplattformen 312 vorhanden, die für das Ausführen von Kundenaufgaben verwendet werden, wie z. B. Datenbankabfragen und/oder „interne“ Datenbankaufgaben, wie z. B. das Aktualisieren von Metadaten, die Clusterbildung einer Tabelle, das Erzeugen einer materialisierten Sicht usw. In einer derartigen Ausführungsform können außerdem eine oder mehrere Ausführungsplattformen 312 vorhanden sein, die für die inkrementale Merkmalsentwicklung und/oder das Testen verwendet werden, wobei diese Ausführungsplattformen 312 von den Kundenausführungsplattformen 312 getrennt sind, so dass die Kundenverarbeitung durch die Merkmalsentwicklungsaufgaben nicht beeinflusst wird. Die Ausführungsplattform 312 kann an mehrere Datenspeichervorrichtungen 316, 318 und 320 gekoppelt sein, die ein Teil einer Speicherplattform 314 sind. Obwohl in 3 drei Datenspeichervorrichtungen 316, 318 und 320 gezeigt sind, kann die Ausführungsplattform 312 mit irgendeiner Anzahl von Datenspeichervorrichtungen kommunizieren. In einigen Ausführungsformen sind die Datenspeichervorrichtungen 316, 318 und 320 cloud-basierte Speichervorrichtungen, die sich an einem oder mehreren geographischen Orten befinden. Die Datenspeichervorrichtungen 316, 318 und 320 können z. B. ein Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur sein. Die Datenspeichervorrichtungen 316, 318 und 320 können Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speicher-Cluster oder irgendeine andere Datenspeichertechnik sein. Zusätzlich kann die Speicherplattform 314 verteilte Dateisysteme (wie z. B. verteilte Hadoop-Dateisysteme (HDFS)), Objektspeichersysteme und dergleichen enthalten.
  • In speziellen Ausführungsformen sind die Kommunikationsverbindungen zwischen dem Betriebsmittelmanager 302 und den Anwendern 304, 306, 308, den Metadaten 310 und der Ausführungsplattform 312 über ein oder mehrere Datenkommunikationsnetze implementiert. Ähnlich sind die Kommunikationsverbindungen zwischen der Ausführungsplattform 312 und den Datenspeichervorrichtungen 316, 318, 320 in der Speicherplattform 314 über ein oder mehrere Datenkommunikationsnetze implementiert. Diese Datenkommunikationsnetze können irgendein Kommunikationsprotokoll und irgendeinen Typ von Kommunikationsmedium verwenden. In einigen Ausführungsformen sind die Datenkommunikationsnetze eine Kombination aus zwei oder mehr miteinander gekoppelten Datenkommunikationsnetzen (oder Teilnetzen). In alternativen Ausführungsformen sind diese Kommunikationsverbindungen unter Verwendung irgendeines Typs eines Kommunikationsmediums und irgendeines Kommunikationsprotokolls implementiert.
  • Wie in 3 gezeigt ist, sind die Datenspeichervorrichtungen 316, 318 und 320 von den der Ausführungsplattform 312 zugeordneten Rechenbetriebsmitteln entkoppelt. In einer Ausführungsform kann jede von mehreren Datenbankbereitstellungen die Speicherplattform 314 mit mehreren Datenspeichervorrichtungen 316, 318 und 320 enthalten. Jede der Speicherplattformen 314 über die mehreren Bereitstellungen kann eine Kopie der Datenbankdaten speichern, so dass jede der mehreren Bereitstellungen als eine primäre Bereitstellung dienen kann, wo die Aktualisierungen und die Abfragen an den Datenbankdaten ausgeführt werden. Diese Architektur unterstützt dynamische Änderungen der Datenverarbeitungsplattform 300 basierend sowohl auf den sich ändernden Erfordernissen der Datenspeicherung/-wiedergewinnung als auch auf den sich ändernden Erfordernisse der Anwender und Systeme, die auf die Datenverarbeitungsplattform 300 zugreifen. Die Unterstützung dynamischer Änderungen ermöglicht, dass die Datenverarbeitungsplattform 300 in Reaktion auf die sich ändernden Anforderungen an die Systeme und Komponenten innerhalb der Datenverarbeitungsplattform 300 schnell skaliert wird. Das Entkoppeln der Rechenbetriebsmittel von den Datenspeichervorrichtungen unterstützt die Speicherung großer Datenmengen ohne eine entsprechende große Menge an Rechenbetriebsmittel zu erfordern. Ähnlich unterstützt dieses Entkoppeln der Betriebsmittel eine signifikante Zunahme der zu einem speziellen Zeitpunkt benutzten Rechenbetriebsmittel, ohne eine entsprechende Zunahme der verfügbaren Datenspeicherbetriebsmittel zu erfordern.
  • Der Betriebsmittelmanager 302, die Metadaten 310, die Ausführungsplattform 312 und die Speicherplattform 314 sind in 3 als einzelne Komponenten gezeigt. Der Betriebsmittelmanager 302, die Metadaten 310, die Ausführungsplattform 312 und die Speicherplattform 314 können jedoch jeweils als ein verteiltes System (z. B. verteilt über mehrere Systeme/Plattformen an mehreren geographischen Orten) implementiert sein. Zusätzlich können der Betriebsmittelmanager 302, die Metadaten 310, die Ausführungsplattform 312 und die Speicherplattform 314 jeweils (unabhängig voneinander) abhängig von den Änderungen der von den Anwendern 304, 306, 308 empfangenen Anforderungen und den sich ändernden Erfordernissen der Datenverarbeitungsplattform 300 aufwärts oder abwärts skaliert werden. Folglich ist die Datenverarbeitungsplattform 300 dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Datenverarbeitungserfordernissen zu entsprechen.
  • 4 ist ein Blockschaltplan, der eine Ausführungsform des Betriebsmittelmanagers 302 darstellt. Wie in 3 gezeigt ist, enthält der Betriebsmittelmanager 302 einen Zugriffsmanager 402 und einen Schlüsselmanager 404, die an eine Datenspeichervorrichtung 406 gekoppelt sind. Der Zugriffsmanager 402 kann Authentifizierungs- und Autorisierungsaufgaben für die hier beschriebenen Systeme abwickeln. Der Schlüsselmanager 404 kann die Speicherung und Authentifizierung von Schlüsseln managen, die während der Authentifizierungs- und Autorisierungsaufgaben verwendet werden. Ein Anforderungsverarbeitungsdienst 408 managt die empfangenen Datenspeicheranforderungen und Datenwiedergewinnungsanforderungen. Ein Managementkonsolendienst 410 unterstützt den Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager.
  • Der Betriebsmittelmanager 302 kann außerdem einen SQL-Kompilierer 412, einen SQL-Optimierer 414 und einen SQL-Ausführer 410 enthalten. Der SQL-Compiler 412 parst die SQL-Abfragen und erzeugt den Ausführungscode für die Abfragen. Der SQL-Optimierer 414 bestimmt basierend auf den Daten, die verarbeitet werden müssen, das beste Verfahren, um die Abfragen auszuführen. Der SQL-Ausführer 416 führt den Abfragecode für die durch den Betriebsmittelmanager 302 empfangenen Abfragen aus. Ein Abfrageplaner und -koordinator 418 kann die empfangenen Abfragen an die geeigneten Dienste oder Systeme zur Kompilierung, Optimierung und Abfertigung an die Ausführungsplattform 312 senden. Ein Manager 420 der 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 auf die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches gespeicherten Daten bezogenen Informationen managt. Eine Überwachungseinrichtung und ein Arbeitsbelastungsanalysator 424 überwacht die durch den Betriebsmittelmanager 302 ausgeführten Prozesse und managt die Verteilung der Aufgaben (z. B. der Arbeitsbelastung) über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform. Der Konfigurations- und Metadaten-Manager 422 und die Überwachungseinrichtung und der Arbeitsbelastungsanalysator 424 sind an eine Datenspeichervorrichtung 426 gekoppelt.
  • Der Betriebsmittelmanager 302 enthält auch einen Merkmalstestmanager 428, der das Testen von Merkmalen und/oder Programmen gegen historische Kundenanfragen managt. Der Merkmalstestmanager 428 kann konfiguriert werden, eine Arbeitsbelastung und/oder Parameter für einen Basislauf oder einen Ziellauf historischer Kundenabfragen zu bestimmen. Der Merkmalstestmanager 428 kann Verifikationsschritte ausführen, um die Zuverlässigkeit der Testdaten sicherzustellen, und kann ferner einen Bericht erzeugen, der angibt, wie das Merkmal und/oder Programm ausgeführt worden sind, wenn sie mit echten historischen Kundenabfragen implementiert sind.
  • 5 ist ein Blockschaltplan, der eine Ausführungsform einer Ausführungsplattform 312 darstellt. Die Ausführung von Basisläufen und/oder Zielläufen (und irgendwelchen anderen zusätzlichen Läufen, die als notwendig erachtet werden) kann in der Ausführungsplattform 312 ausgeführt werden. In einer Ausführungsform werden die Merkmalstestläufe ausschließlich in dedizierten virtuellen Lagern ausgeführt, die nur für das Testen von Merkmalen verwendet werden und nicht für durch Datenbankkunden ausgegebene Produktionsabfragen verwendet werden. Die Verwendung dedizierter virtueller Lager zum Testen von Merkmalen kann sicherstellen, dass die Leistung und die Laufzeit eines Kunden nicht durch Merkmalsentwicklungsprozesse beeinflusst werden.
  • Wie in 5 gezeigt ist, enthält die Ausführungsplattform 312 mehrere virtuelle Lager 502, 504 und 506. Jedes virtuelle Lager enthält mehrere Ausführungsknoten, die jeder einen Cache und einen Prozessor enthalten. Obwohl jedes virtuelle Lager 502, 504, 506, wie in 3 gezeigt ist, drei Ausführungsknoten enthält, kann ein spezielles virtuelles Lager irgendeine Anzahl von Ausführungsknoten enthalten, ohne vom Schutzumfang der Offenbarung abzuweichen. Ferner ist die Anzahl der Ausführungsknoten in einem virtuellen Lager dynamisch, so dass neue Ausführungsknoten erzeugt werden, wenn zusätzlicher Bedarf besteht, und vorhandene Ausführungsknoten gelöscht werden, wenn sie nicht länger notwendig sind.
  • Jedes virtuelle Lager 502, 504, 506 kann auf irgendeine der in 3 gezeigten Datenspeichervorrichtungen 316, 318, 320 zugreifen. Folglich sind die virtuellen Lager 302, 304, 306 nicht notwendigerweise einer spezifischen Datenspeichervorrichtung 316, 318, 320 zugeordnet und können stattdessen auf die Daten von irgendeiner der Datenspeichervorrichtungen 316, 318, 320 zugreifen. Ähnlich kann jeder der in 5 gezeigten Ausführungsknoten auf Daten von irgendeiner der Datenspeichervorrichtungen 316, 318, 320 zugreifen. In einigen Ausführungsformen kann ein spezielles virtuelles Lager oder ein spezieller Ausführungsknoten vorübergehend einer spezifischen Datenspeichervorrichtung zugewiesen werden, wobei aber das virtuelle Lager oder der Ausführungsknoten später auf Daten von irgendeiner anderen Datenspeichervorrichtung zugreifen kann.
  • Im Beispiel nach 5 enthält das virtuelle Lager 502 drei Ausführungsknoten 508, 510 und 512. Der Ausführungsknoten 508 enthält einen Cache 514 und einen Prozessor 516. Der Ausführungsknoten 510 enthält einen Cache 518 und einen Prozessor 520. Der Ausführungsknoten 512 enthält einen Cache 522 und einen Prozessor 524. Jeder Ausführungsknoten 508, 510, 512 ist der Verarbeitung einer oder mehrerer Datenspeicher- und/oder Datenwiedergewinnungsaufgaben zugeordnet. Ein spezielles virtuelles Lager kann z. B. Datenspeicher- und Datenwiedergewinnungsaufgaben abwickeln, die einem speziellen Anwender oder Kunden zugeordnet sind. In anderen Implementierungen kann ein spezielles virtuelles Lager Datenspeicher- und Datenwiedergewinnungsaufgaben abwickeln, die einem speziellen Datenspeichersystem oder einer speziellen Datenkategorie zugeordnet sind.
  • Ähnlich zu dem oben erörterten virtuellen Lager 502 enthält das virtuelle Lager 504 drei Ausführungsknoten 526, 528 und 530. Der Ausführungsknoten 526 enthält einen Cache 532 und einen Prozessor 534. Der Ausführungsknoten 528 enthält einen Cache 536 und einen Prozessor 538. Der Ausführungsknoten 530 enthält einen Cache 540 und einen Prozessor 542. Zusätzlich enthält das virtuelle Lager 506 drei Ausführungsknoten 544, 546 und 548. Der Ausführungsknoten 544 enthält einen Cache 550 und einen Prozessor 552. Der Ausführungsknoten 546 enthält einen Cache 554 und einen Prozessor 556. Der Ausführungsknoten 548 enthält einen Cache 558 und einen Prozessor 560.
  • Obwohl die in 5 gezeigten Ausführungsknoten jeder einen Cache und einen Prozessor enthalten, können alternative Ausführungsformen Ausführungsknoten enthalten, die irgendeine Anzahl von Prozessoren und irgendeine Anzahl von Caches enthalten. Zusätzlich können die Caches zwischen den verschiedenen Ausführungsknoten in der Größe variieren. Die in 5 gezeigten Caches speichern im lokalen Ausführungsknoten Daten, die von einer oder mehreren Datenspeichervorrichtungen in einer Speicherplattform 314 (siehe 3) wiedergewonnen wurden. Folglich verringern oder eliminieren die Caches potentielle Engpassprobleme, die in Plattformen auftreten, die Daten konsistent aus entfernten Speichersystemen wiedergewinnen. Anstatt wiederholt auf die Daten von den entfernten Speichervorrichtungen zuzugreifen, greifen die hier beschriebenen Systeme und Verfahren auf die Daten aus den Caches in den Ausführungsknoten zu, was signifikant schneller ist und das Engpassproblem vermeidet. In einigen Ausführungsformen sind die Caches unter Verwendung von Hochgeschwindigkeitsspeichervorrichtungen implementiert, die einen schnellen Zugriff auf die gecacheten Daten bereitstellen. Jeder Cache kann die Daten von irgendeiner der Speichervorrichtungen in der Speicherplattform 314 speichern.
  • Ferner können die Cache-Betriebsmittel und Rechenbetriebsmittel zwischen verschiedenen Ausführungsknoten variieren. Ein Ausführungsknoten kann z. B. signifikante Rechenbetriebsmittel und minimale Cache-Betriebsmittel enthalten, was den Ausführungsknoten für Aufgaben nützlich macht, die signifikante Rechenbetriebsmittel erfordern. Ein weiterer Ausführungsknoten kann signifikante Cache-Betriebsmittel und minimale Rechenbetriebsmittel enthalten, dies macht diesen Ausführungsknoten für Aufgaben nützlich, die das Caching großer Datenmengen erfordern. In einigen Ausführungsformen werden die einem speziellen Ausführungsknoten zugeordneten Cache-Betriebsmittel und Rechenbetriebsmittel basierend auf der erwarteten Aufgaben, die durch den Ausführungsknoten auszuführen sind, bestimmt, wenn der Ausführungsknoten erzeugt wird.
  • Zusätzlich können sich die einem speziellen Ausführungsknoten zugeordneten Cache-Betriebsmittel und Rechenbetriebsmittel im Lauf der Zeit basierend auf den durch den Ausführungsknoten ausgeführten Aufgaben ändern. Einem speziellen Ausführungsknoten können z. B. mehr Verarbeitungsbetriebsmittel zugewiesen werden, falls die durch den Ausführungsknoten ausgeführten Aufgaben prozessorintensiver werden. Ähnlich können einem Ausführungsknoten mehr Cache-Betriebsmittel zugewiesen werden, falls die durch den Ausführungsknoten ausgeführten Aufgaben eine größere Cache-Kapazität erfordern.
  • Obwohl die virtuellen Lager 502, 504, 506 derselben Ausführungsplattform 312 nach 3 zugeordnet sind, können die virtuellen Lager unter Verwendung mehrerer Rechensysteme an mehreren geographischen Orten implementiert sein. Das virtuelle Lager 502 z. B. durch ein Rechensystem an einem ersten geographischen Ort implementiert sein, während die virtuellen Lager 504 und 506 durch ein weiteres Rechensystem an einem zweiten geographischen Ort implementiert sind. In einigen Ausführungsformen sind diese verschiedenen Rechensystemen cloud-basierte Rechensysteme, die durch eine oder mehrere verschiedenen Entitäten aufrechterhalten werden.
  • Zusätzlich ist jedes virtuelle Lager in 5 als mehrere Ausführungsknoten aufweisend gezeigt. Die mehreren Ausführungsknoten, die jedem virtuellen Lager zugeordnet sind, können unter Verwendung mehrerer Rechensysteme an mehreren geographischen Orten implementiert sein. Eine spezielle Instanz des virtuellen Lagers 502 implementiert z. B. die Ausführungsknoten 508 und 510 in einer Rechenplattform an einem speziellen geographischen Ort und implementiert den Ausführungsknoten 512 in einer anderen Rechenplattform an einem weiteren geographischen Ort. Das Auswählen spezieller Rechensysteme, um einen Ausführungsknoten zu implementieren, kann von verschiedenen Faktoren, z. B. von dem Niveau der Betriebsmittel, die für einen speziellen Ausführungsknoten benötigt werden, (z. B. den Verarbeitungsbetriebsmittelanforderungen und den Cache-Anforderungen), den Betriebsmitteln, die in speziellen Rechensystemen verfügbar sind, den Kommunikationsfähigkeiten der Netze innerhalb eines geographischen Orts oder zwischen geographischen Orten und davon, welche Rechensysteme bereits andere Ausführungsknoten im virtuellen Lager implementieren, abhängen. Die Ausführungsplattform 312 ist außerdem fehlertolerant. Falls z. B. ein virtuelles Lager ausfällt, wird dieses virtuelle Lager schnell durch ein anderes virtuelles Lager an einem anderen geographischen Ort ersetzt.
  • Eine spezielle Ausführungsplattform 312 kann irgendeine Anzahl virtueller Lager 502, 504, 506 enthalten. Zusätzlich ist die Anzahl der virtuellen Lager in einer speziellen Ausführungsplattform dynamisch, so dass neue virtuelle Lager erzeugt werden, wenn zusätzliche Verarbeitungs- und/oder Caching-Betriebsmittel benötigt werden. Ähnlich können bestehende virtuelle Lager gelöscht werden, wenn die dem virtuellen Lager zugeordneten Betriebsmittel nicht länger erforderlich sind.
  • 6 ist ein Blockschaltplan, der eine Ausführungsform einer Betriebsumgebung 600 mit mehreren Anwendern, die durch eine Lastausgleichseinrichtung auf mehrere Datenbanken zugreifen, und mehreren virtuellen Lagern, die in einer Gruppe virtueller Lager enthalten sind, darstellt. Die Betriebsumgebung 600 kann auf Produktionsabfragen angewendet werden, die durch Anwender oder Kunden ausgeführt werden, und kann ferner auf das Testen von Merkmalen angewendet werden, wobei ein Anwender (siehe 602, 604, 606) auf einen Entwickler 112 verweisen kann, der ein neues Merkmal oder Programm unter Verwendung echter Datenbankdaten erzeugt und testet.
  • Die Umgebung 600 enthält einen Betriebsmittelmanager 608 der virtuellen Lager und mehrere virtuelle Lager 610, 612 und 614, die in einer Gruppe 616 virtueller Lager angeordnet sind. Der Betriebsmittelmanager 608 der virtuellen Lager kann im Betriebsmittelmanager 302 enthalten sein. Insbesondere greifen mehrere Anwender 602, 604 und 606 durch den Betriebsmittelmanager 608 der virtuellen Lager und die Gruppe 616 virtueller Lager auf mehrere Datenbanken 618, 620, 622, 624, 626 und 628 zu. In einigen Ausführungsformen greifen die Anwender 602-406 durch den Betriebsmittelmanager 302 (1) auf den Betriebsmittelmanager 608 der virtuellen Lager zu. In einigen Ausführungsformen ist der Betriebsmittelmanager 608 der virtuellen Lager innerhalb des Betriebsmittelmanagers 302 implementiert.
  • Die Anwender 602-606 können Datenwiedergewinnungs- und Datenspeicheranforderungen bei dem Betriebsmittelmanager 608 der virtuellen Lager einreichen, der die Datenwiedergewinnungs- und Datenspeicheranforderungen an ein geeignetes virtuelles Lager 610-614 in der Gruppe 616 virtueller Lager weiterleitet. In einigen Implementierungen stellt der Betriebsmittelmanager 608 der virtuellen Lager eine dynamische Zuweisung der Anwender 602-606 zu den virtuellen Lagern 610-614 bereit. Wenn die Anwender 602-606 eine Datenwiedergewinnungs- oder Datenspeicheranforderung einreichen, können sie die Gruppe 616 virtueller Lager spezifizieren, um die Anforderung zu verarbeiten, ohne das spezielle virtuelle Lager 610-614 zu spezifizieren, das die Anforderung verarbeitet. Diese Anordnung ermöglicht es dem Betriebsmittelmanager 608 der virtuellen Lager, basierend auf dem Wirkungsgrad, den verfügbaren Betriebsmitteln und der Verfügbarkeit von gecacheten Daten innerhalb der virtuellen Lager 610-614 mehrere Anforderungen über die virtuellen Lager 610-614 zu verteilen. Wenn der Betriebsmittelmanager 608 der virtuellen Lager bestimmt, wie die Datenverarbeitungsanforderungen zu leiten sind, berücksichtigt er die verfügbaren Betriebsmittel, die aktuellen Betriebsmittellasten, die Anzahl der aktuellen Anwender und dergleichen.
  • In einigen Ausführungsformen erzeugen Fehlertoleranzsysteme in Reaktion auf den Ausfall eines virtuellen Lagers neue virtuelle Lager. Das neue virtuelle Lager kann sich in derselben Gruppe virtueller Lager befinden oder kann in einer anderen Gruppe virtueller Lager an einem anderen geographischen Ort erzeugt werden.
  • Jedes virtuelle Lager 610-614 ist konfiguriert, mit einer Teilmenge aller Datenbanken 618-628 zu kommunizieren. In einer Umgebung 600 ist z. B. das virtuelle Lager 610 konfiguriert, mit den Datenbanken 618, 620 und 622 zu kommunizieren. Ähnlich ist das virtuelle Lager 612 konfiguriert, mit den Datenbanken 620, 624 und 626 zu kommunizieren. Das virtuelle Lager 614 ist konfiguriert, mit den Datenbanken 622, 626 und 628 zu kommunizieren. In alternativen Ausführungsformen können die virtuellen Lager 610-614 mit irgendeiner (oder allen) der Datenbanken 618-628 kommunizieren.
  • Obwohl die Umgebung 600 eine Gruppe 616 virtueller Lager zeigt, können alternative Ausführungsformen irgendeine Anzahl von Gruppen virtueller Lager enthalten, die jeweils irgendeiner Anzahl von virtuellen Lagern zugeordnet sind. Für jeden Kunden oder jede Anwendergruppe können z. B. verschiedene virtuelle Lager erzeugt werden. Zusätzlich können verschiedene virtuelle Lager für verschiedene Entitäten oder irgendeine andere Gruppe, die auf verschiedene Datensätze zugreift, erzeugt werden. Mehrere virtuelle Lagergruppen können unterschiedliche Größen und Konfigurationen aufweisen. Die Anzahl der Gruppen virtueller Lager in einer speziellen Umgebung ist dynamisch und kann sich basierend auf den sich ändernden Erfordernissen der Anwender und anderer Systeme in der Umgebung ändern.
  • 7 ist ein schematischer Ablaufplan eines Verfahrens 700 zum Testen eines Merkmals in einer Datenbank. Das Verfahren 700 kann durch irgendein geeignetes Rechenbetriebsmittel, wie z. B. einen Betriebsmittelmanager 302 oder einem Merkmalstestmanager 428, wie hier offenbart wird, ausgeführt werden.
  • Das Verfahren 700 beginnt, wobei das Rechenbetriebsmittel bei 702 eine Arbeitsbelastung bestimmt, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen eines Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst. Das Rechenbetriebsmittel führt bei 704 einen Basislauf der Arbeitsbelastung aus, die das Merkmal nicht implementiert. Das Rechenbetriebsmittel führt bei 706 einen Ziellauf der Arbeitsbelastung aus, während sie das Merkmal implementiert. Das Rechenbetriebsmittel vergleicht bei 708 den Basislauf und den Ziellauf, um zu identifizieren, ob es im Ziellauf einen Leistungsrückgang gibt. In Reaktion auf das Identifizieren des Leistungsrückgangs führt das Rechenbetriebsmittel den Ziellauf bei 710 erneut aus, um zu identifizieren, ob der Leistungsrückgang immer noch vorhanden ist. Das erneute Ausführen bei 710 kann ein Ausführen mit mehr isolierten Betriebsmitteln und/oder ein mehrmaliges Ausführen, vor einer Abweichung innerhalb einer cloud-basierten Datenbankumgebung zu schützen, und/oder ein Ausführen mit einer geringeren Geschwindigkeit enthalten.
  • Das Verfahren 700 kann zum Implementieren einer inkrementalen Merkmalsentwicklung in einem cloud-basierten Datenbanksystem ausgeführt werden. Die inkrementale Merkmalsentwicklung kann durch eine Kombination aus schnellen Freigabezyklen mit einer Fähigkeit, die Benutzung von Merkmalen zu verfolgen, kombiniert mit einer Fähigkeit, die Ergebnisse von Läufen mit ein- oder ausgeschalteten Merkmals-Merkern zu vergleichen, ermöglicht sein. Das Verfahren 700 kann automatisch als Teil eines Online-Aufrüstungsprozesses ausgeführt werden, wenn neue Merkmale in einem cloud-basierten Datenbanksystem implementiert werden. In einer Ausführungsform kann das Verfahren 700 mit einem Verfahren zum Verfolgen der Benutzung von Produktionsarbeitslasten kombiniert sein. Das Verfahren zur Benutzungsverfolgung von Produktionsarbeitsbelastungen kann innerhalb eines Testrahmens integriert sein, so dass die Arbeitsbelastungsauswahl basierend auf einer gewünschten Testarbeitsbelastung bestimmt werden kann.
  • In einer Ausführungsform wird ein inkrementaler Merkmalsentwicklungsprozess in einem cloud-basierten Datenbanksystem eingesetzt, das eine schnelle Online-Aufrüstung einer neuen Programmierlogik oder neuer Merkmale, die Integration der Benutzungsverfolgung innerhalb eines Testrahmens und Leistungsverifikationen enthält, die in einem Zyklus kombiniert sein können, um eine inkrementale Merkmalsentwicklung zu ermöglichen.
  • 8 ist ein Blockschaltplan, der eine beispielhafte Rechenvorrichtung 800 darstellt. In einigen Ausführungsformen wird die Rechenvorrichtung 800 verwendet, um eines oder mehrere der hier erörterten Systeme und eine oder mehrere der hier erörterten Komponenten zu implementieren. Die Rechenvorrichtung 800 kann es z. B. einem Anwender oder Manager ermöglichen, auf den Betriebsmittelmanager 802 zuzugreifen. Ferner kann die Rechenvorrichtung 800 mit irgendeinem der hier beschriebenen Systeme und irgendeiner der hier beschriebenen Komponenten wechselwirken. Entsprechend kann die Rechenvorrichtung 800 verwendet werden, um verschiedene Prozeduren und Aufgaben, wie z. B. jene, die hier erörtert sind, auszuführen. Die Rechenvorrichtung 800 kann als ein Server, ein Client oder irgendeine andere Rechenentität arbeiten. Die Rechenvorrichtung 800 kann irgendeine einer umfassenden Vielfalt von Rechenvorrichtungen, wie z. B. ein Desktop-Computer, ein Notebook-Computer, ein Server-Computer, ein Handheld-Computer, ein Tablet-PC und dergleichen, sein.
  • Die Rechenvorrichtung 800 enthält einen oder mehrere Prozessor(en) 802, eine oder mehrere Speichervorrichtung(en) 804, eine oder mehrere Schnittstelle(n) 806, eine oder mehrere Massenspeichervorrichtung(en) 808 und eine oder mehrere Eingabe-/Ausgabe- (E/A-) Vorrichtung(en) 810, von denen alle an einen Bus 812 gekoppelt sind. Der (die) Prozessor(en) 802 enthält (enthalten) einen oder mehrere Prozessoren oder Controller, die die in der (den) Speichervorrichtung(en) 804 und/oder der (den) Massenspeichervorrichtung(en) 808 gespeicherten Anweisungen ausführen. Der (die) Prozessor(en) 802 kann (können) außerdem verschiedene Typen von computerlesbaren Medien, wie z. B. einen Cache-Speicher, enthalten.
  • Die Speichervorrichtung(en) 804 enthält (enthalten) verschiedene computerlesbare Medien, wie z. B. flüchtigen Speicher (z. B. Schreib-Lese-Speicher (RAM)) und/oder nichtflüchtigen Speicher (z. B. Festwertspeicher (ROM)). Die Speichervorrichtung(en) 804 kann (können) außerdem wiederbeschreibbaren ROM, wie z. B. Flash-Speicher, enthalten.
  • Die Massenspeichervorrichtung(en) 808 enthält (enthalten) verschiedene computerlesbare Medien, wie z. B. Magnetbänder, Magnetplatten, optische Platten, Festkörperspeicher (z. B. Flash-Speicher) usw. In der (den) Massenspeichervorrichtung(en) 808 kann (können) außerdem verschiedene Laufwerke enthalten sein, um das Lesen von den und/oder das Schreiben in die verschiedenen computerlesbaren Medien zu ermöglichen. Die Massenspeichervorrichtung(en) 808 enthält (enthalten) abnehmbare Medien und/oder nicht abnehmbare Medien.
  • Die E/A-Vorrichtung(en) 810 enthält (enthalten) verschiedene Vorrichtungen, die es ermöglichen, dass Daten und/oder andere Informationen in die Computervorrichtung 800 eingegeben oder aus der Computervorrichtung 800 wiedergewonnen werden. Eine beispielhafte E/A-Vorrichtung(en) 810 enthält (enthalten) Cursor-Steuervorrichtungen, Tastaturen, Tastenfelder, Mikrophone, Monitore oder andere Anzeigevorrichtungen, Lautsprecher, Drucker, Netzschnittstellenkarten, Modems, Objektive, CCDs oder andere Bildaufnahmevorrichtungen und dergleichen.
  • Die Schnittstelle(n) 806 enthält (enthalten) verschiedene Schnittstellen, die es der Rechenvorrichtung 800 ermöglichen, mit anderen Systemen, Vorrichtungen oder Rechenumgebungen zu wechselwirken. Eine beispielhafte Schnittstelle(n) 806 enthält (enthalten) irgendeine Anzahl verschiedener Netzschnittstellen, wie z. B. Schnittstellen zu lokalen Netzen (LANs), Weitbereichsnetzen (WANs), drahtlosen Netzen und dem Internet.
  • Der Bus 812 ermöglicht es dem (den) Prozessor(en) 802, der (den) Speichervorrichtung(en) 804, der (den) Schnittstelle(n) 806, der (den) Massenspeichervorrichtung(en) 808 und der (den) E/A-Vorrichtung(en) 810, sowohl miteinander als auch mit anderen Vorrichtungen oder Komponenten, die an den Bus 812 gekoppelt sind, zu kommunizieren. Der Bus 812 repräsentiert einen oder mehrere von mehreren Typen von Busstrukturen, wie z. B. einen Systembus, einen PCI-Bus, einen IEEE 1394-Bus, einen USB-Bus usw.
  • Für Veranschaulichungszwecke sind Programme und andere ausführbare Programmkomponenten hier als diskrete Blöcke gezeigt, obwohl erkannt wird, dass sich derartige Programme und Komponenten zu verschiedenen Zeiten in verschiedenen Speicherkomponenten der Rechenvorrichtung 800 befinden können und durch den (die) Prozessor(en) 802 ausgeführt werden. Alternativ können die hier beschriebenen Systeme und Prozeduren in Hardware oder einer Kombination aus Hardware, Software und/oder Firmware implementiert sein. Es können z. B. eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs) programmiert sein, um eines oder mehrere der Systeme und eine oder mehrere der Prozeduren, die hier beschrieben sind, auszuführen. Es ist vorgesehen, dass der Begriff „Modul“, wie er hier verwendet wird, die Implementierungsvorrichtung zum Ausführen eines Prozesses, wie z. B. durch Hardware oder eine Kombination aus Hardware, Software und/oder Firmware, für die Zwecke des Ausführens aller oder Teile der Abfrageoperationen übermittelt.
  • Beispiele
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Das Beispiel 1 ist ein System zum Testen eines Merkmals in einer Datenbank. Das System enthält Mittel zum Bestimmen einer Arbeitsbelastung, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen des Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst. Das System enthält Mittel zum Ausführen eines Basislaufs der Arbeitsbelastung, die das Merkmal nicht implementiert. Das System enthält Mittel zum Ausführen eines Ziellaufs der Arbeitsbelastung, während sie das Merkmal implementiert. Das System enthält Mittel zum Vergleichen des Basislaufs und des Ziellaufs, um zu identifizieren, ob es im Ziellauf einen Leistungsrückgang gibt. Das System enthält in Reaktion auf das Identifizieren des Leistungsrückgangs Mittel zum erneuten Ausführen des Ziellaufs, um zu identifizieren, ob der Leistungsrückgang immer noch vorhanden ist.
  • Das Beispiel 2 ist ein System wie im Beispiel 1, wobei die Mittel zum Bestimmen der Arbeitsbelastung konfiguriert sind, basierend auf einer Arbeitsbelastungsauswahlkonfiguration zu bestimmen, die einen oder mehrere Parameter umfasst, die durch einen Anwender eingegeben werden, um unerwünschte historische Kundenabfragen herauszufiltern, wobei der eine oder die mehreren Parameter eines oder mehrere des Folgenden umfassen: eine Abfragestichprobengröße; einen Abfrageinitiator, wie z. B. ein Konto oder einen Anwender, der eine historische Kundenabfrage angefordert hat; ein Abfrageschema; eine Tabelle oder eine Mikropartition einer Datenbank; ein Zeitfenster, in dem eine historische Abfrage angefordert und/oder ausgeführt worden sein muss; ein Abfragetextfragment; oder eine Abfrageausführungskonfiguration.
  • Das Beispiel 3 ist ein System wie in einem der Beispiele 1-2, wobei die Mittel zum Bestimmen der Arbeitsbelastung konfiguriert sind: historische Kundenabfragen, die der Arbeitsbelastungsauswahlkonfiguration entsprechen, zu deduplizieren, um eine Gruppierung historischer Kundenabfragen zu bestimmen; der Gruppierung historischer Kundenabfragen zu kürzen, um die Abfragen zu eliminieren, die mehr als eine Schwellenmenge an Betriebsmitteln zur Ausführung verbrauchen; und eine Teilmenge der gekürzten Gruppierung historischer Kundenabfragen auszuwählen, um eine vielfältige Stichprobe zu bestimmen, wobei das Auswählen das Anwenden eines Query2Vec-Algorithmus umfasst, um die gekürzte Gruppierung historischer Kundenabfragen auf einen hochdimensionalen Vektorraum abzubilden.
  • Das Beispiel 4 ist ein System wie in einem der Beispiele 1-3, wobei die Parameter für den Basislauf und die Parameter für den Ziellauf mit Ausnahme eines Vorhandenseins des Merkmals im Ziellauf völlig gleich sind.
  • Das Beispiel 5 ist ein System wie in einem der Beispiele 1-4, das ferner in Reaktion auf das Bestimmen, dass der Leistungsrückgang nicht länger vorhanden ist, wenn der Ziellauf mit Techniken zum Kürzen Falsch-Positiver wiederholt wird, Mittel zum Kennzeichnen des Leistungsrückgangs als ein Falsch-Positiv umfasst.
  • Das Beispiel 6 ist ein System wie in einem der Beispiele 1-5, wobei die Mittel zum Vergleichen des Basislaufs und des Ziellaufs ferner konfiguriert ist, einen oder mehrere Fehler zu identifizieren, die umfassen: ein falsches Ergebnis für eine oder mehrere historische Kundenabfragen, die im Ziellauf ausgeführt wurden; einen internen Fehler im Ziellauf; oder einen Anwenderfehler im Ziellauf. Das System ist so, dass die Mittel zum erneuten Ausführen des Ziellaufs ferner konfiguriert sind, zu identifizieren, ob irgendeiner des einen oder der mehreren Fehler immer noch vorhanden ist. Das System ist so, dass die Mittel zum Kennzeichnen des Leistungsrückgangs als ein Falsch-Positiv ferner konfiguriert sind, in Reaktion auf das Identifizieren, dass irgendeiner des einen oder der mehreren Fehler nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, irgendeinen des einen oder der mehreren Fehler als ein Falsch-Positiv zu kennzeichnen.
  • Das Beispiel 7 ist ein System wie in einem der Beispiele 1-6, das ferner Mittel zum Erzeugen eines Berichts, der Daten über den Ziellauf umfasst, umfasst, wobei der Bericht keine Angabe irgendeines Leistungsrückgangs oder Fehlers umfasst, der als ein Falsch-Positiv gekennzeichnet wurde.
  • Das Beispiel 8 ist ein System wie in einem der Beispiele 1-7, das ferner Mitteln zum Verschleiern der Ergebnisse des Basislaufs und des Ziellaufs umfasst, so dass ein Anwender keine Sichtbarkeit in irgendwelche Datenbankdaten aufweist, die der einen oder den mehreren historischen Kundenabfragen der Arbeitsbelastung zugeordnet sind.
  • Das Beispiel 9 ist ein System wie in einem der Beispiele 1-8, wobei die Mittel zum Ausführen des Basislaufs und die Mittel zum Ausführen des Ziellaufs konfiguriert sind, in einem dedizierten virtuellen Lager eines Cloud-Datenbankdienstes ausgeführt zu werden, der für das Ausführen von Merkmalstestläufen dediziert ist.
  • Das Beispiel 10 ist ein System wie in einem der Beispiele 1-9, das ferner Mittel zum Bestimmen einer Version der Datenbankdaten eines Kunden umfasst, die vorhanden waren, als eine historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde, und wobei die Mittel zum Ausführen des Basislaufs und die Mittel zum Ausführen des Ziellaufs konfiguriert sind, in der Version der Datenbankdaten des Kunden ausgeführt zu werden, die vorhanden war, als die historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde.
  • Das Beispiel 11 ist ein Verfahren zum Testen eines Merkmals in einer Datenbank. Das Verfahren enthält das Bestimmen einer Arbeitsbelastung, die eine oder mehrere historische Kundenabfragen enthält, die zum Testen des Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst. Das Verfahren enthält das Ausführen eines Basislaufs der Arbeitsbelastung, die das Merkmal nicht implementiert. Das Verfahren enthält das Ausführen eines Ziellaufs der Arbeitsbelastung, während sie das Merkmal implementiert. Das Verfahren enthält das Vergleichen des Basislaufs und des Ziellaufs, um zu identifizieren, ob es im Ziellauf einen Leistungsrückgang gibt. Das Verfahren enthält in Reaktion auf das Identifizieren des Leistungsrückgangs das erneute Ausführen des Ziellaufs, um zu identifizieren, ob der Leistungsrückgang immer noch vorhanden ist.
  • Das Beispiel 12 ist ein Verfahren wie im Beispiel 11, wobei das Bestimmen der Arbeitsbelastung das Bestimmen basierend auf einer Arbeitsbelastungsauswahlkonfiguration umfasst, die einen oder mehrere Parameter umfasst, die durch einen Anwender eingegeben werden, um unerwünschte historische Kundenabfragen herauszufiltern, wobei der eine oder die mehreren Parameter eines oder mehrere des Folgenden umfassen: eine Abfragestichprobengröße; einen Abfrageinitiator, wie z. B. ein Konto oder einen Anwender, der eine historische Kundenabfrage angefordert hat; ein Abfrageschema; eine Tabelle oder eine Mikropartition einer Datenbank; ein Zeitfenster, in dem eine historische Abfrage angefordert und/oder ausgeführt worden sein muss; ein Abfragetextfragment; oder eine Abfrageausführungskonfiguration.
  • Das Beispiel 13 ist ein Verfahren wie in einem der Beispiele 11-12, wobei das Bestimmen der Arbeitsbelastung umfasst: Deduplizieren historischer Kundenabfragen, die der Arbeitsbelastungsauswahlkonfiguration entsprechen, um eine Gruppierung historischer Kundenabfragen zu bestimmen; Kürzen der Gruppierung historischer Kundenabfragen, um Abfragen zu eliminieren, die mehr als eine Schwellenmenge an Betriebsmitteln zur Ausführung verbrauchen; und Auswählen einer Teilmenge der gekürzten Gruppierung historischer Kundenabfragen, um eine vielfältige Stichprobe zu bestimmen, wobei das Auswählen das Anwenden eines Query2Vec-Algorithmus umfasst, um die gekürzte Gruppierung historischer Kundenabfragen auf einen hochdimensionalen Vektorraum abzubilden.
  • Das Beispiel 14 ist ein Verfahren wie in einem der Beispiele 11-13, wobei die Parameter für den Basislauf und die Parameter für den Ziellauf mit Ausnahme eines Vorhandenseins des Merkmals im Ziellauf völlig gleich sind.
  • Das Beispiel 15 ist ein Verfahren wie in einem der Beispiele 11-14, das ferner in Reaktion auf das Identifizieren, dass der Leistungsrückgang nicht länger vorhanden ist, wenn der Ziellauf mit Techniken zum Kürzen Falsch-Positiver erneut ausgeführt wird, das Kennzeichnen des Leistungsrückgangs als ein Falsch-Positiv umfasst.
  • Das Beispiel 16 ist ein Prozessor, der programmierbar ist, Anweisungen auszuführen, die in nicht transitorischen computerlesbaren Speichermedien gespeichert sind, wobei die Anweisungen umfassen: Bestimmen einer Arbeitsbelastung, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen des Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst; Ausführen eines Basislaufs der Arbeitsbelastung, die das Merkmal nicht implementiert; Ausführen eines Ziellaufs der Arbeitsbelastung, während sie das Merkmal implementiert; Vergleichen des Basislaufs und des Ziellaufs, um zu identifizieren, ob es einen Leistungsrückgang im Ziellauf gibt; und in Reaktion auf das Identifizieren des Leistungsrückgangs, erneutes Ausführen des Ziellaufs mit Techniken, um Falsch-Positive zu kürzen, um zu identifizieren, ob die Leistungsrückgang immer noch vorhanden ist.
  • Das Beispiel 17 ist ein Prozessor wie im Beispiel 16, wobei das Bestimmen der Arbeitsbelastung das Bestimmen basierend auf einer Arbeitsbelastungsauswahlkonfiguration umfasst, die einen oder mehrere Parameter umfasst, die durch einen Anwender eingegeben werden, um unerwünschte historische Kundenabfragen herauszufiltern, wobei der eine oder die mehreren Parameter eines oder mehrere des Folgenden umfassen: eine Abfragestichprobengröße; einen Abfrageinitiator, wie z. B. ein Konto oder einen Anwender, der eine historische Kundenabfrage angefordert hat; ein Abfrageschema; eine Tabelle oder eine Mikropartition einer Datenbank; ein Zeitfenster, in dem eine historische Abfrage angefordert und/oder ausgeführt worden sein muss; ein Abfragetextfragment; oder eine Abfrageausführungskonfiguration.
  • Das Beispiel 18 ist ein Prozessor wie in einem der Beispiele 16-17, wobei das Bestimmen der Arbeitsbelastung umfasst: Deduplizieren historischer Kundenabfragen, die der Arbeitsbelastungsauswahlkonfiguration entsprechen, um eine Gruppierung historischer Kundenabfragen zu bestimmen; Kürzen der Gruppierung historischer Kundenabfragen, um Abfragen zu eliminieren, die mehr als eine Schwellenmenge an Betriebsmitteln zur Ausführung verbrauchen; und Auswählen einer Teilmenge der gekürzten Gruppierung historischer Kundenabfragen, um eine vielfältige Stichprobe zu bestimmen, wobei das Auswählen das Anwenden eines Query2Vec-Algorithmus umfasst, um die gekürzte Gruppierung historischer Kundenabfragen auf einen hochdimensionalen Vektorraum abzubilden.
  • Das Beispiel 19 ist ein Prozessor wie in einem der Beispiele 16-18, wobei die Anweisungen ferner in Reaktion auf das Identifizieren, dass der Leistungsrückgang nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, das Kennzeichnen des Leistungsrückgang als ein Falsch-Positiv umfassen.
  • Das Beispiel 20 ist ein Prozessor wie in einem der Beispiele 16-19, wobei das Vergleichen des Basislaufs und des Ziellaufs ferner das Identifizieren eines oder mehrerer Fehler umfasst, die umfassen: ein falsches Ergebnis für eine oder mehrere historische Kundenabfragen, die im Ziellauf ausgeführt wurden; einen internen Fehler im Ziellauf; oder einen Anwenderfehler im Ziellauf. Die Anweisungen sind so, dass die Anweisungen ferner das Identifizieren umfassen, ob irgendeiner des einen oder der mehreren Fehler immer noch vorhanden ist, wenn der Ziellauf erneut ausgeführt wird. Die Anweisungen sind so, dass die Anweisungen ferner in Reaktion auf das Identifizieren, dass irgendeiner des einen oder der mehreren Fehler nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, das Kennzeichnen irgendeines des einen oder der mehreren Fehler als ein Falsch-Positiv umfassen.
  • 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 62/646817 [0001]

Claims (30)

  1. Vorrichtung, die umfasst: Mittel zum Bestimmen einer Arbeitsbelastung, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen eines Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst; Mittel zum Ausführen eines Basislaufs der Arbeitsbelastung, die das Merkmal nicht implementiert; Mittel zum Ausführen eines Ziellaufs der Arbeitsbelastung, während sie das Merkmal implementiert; Mittel zum Vergleichen des Basislaufs und des Ziellaufs, um zu identifizieren, ob es einen Leistungsrückgang im Ziellauf gibt; und Mittel zum erneuten Ausführen des Ziellaufs in Reaktion auf das Identifizieren des Leistungsrückgangs, um zu identifizieren, ob der Leistungsrückgang immer noch immer vorhanden ist.
  2. Vorrichtung nach Anspruch 1, wobei die Mittel zum Bestimmen der Arbeitsbelastung Mittel zum Bestimmen der Arbeitsbelastung basierend auf einer Arbeitsbelastungsauswahlkonfiguration umfassen, die einen oder mehrere Parameter umfasst, die durch einen Anwender eingegeben werden, um unerwünschte historische Kundenanfragen herauszufiltern.
  3. Vorrichtung nach Anspruch 2, wobei der eine oder die mehreren Parameter eines oder mehrere des Folgenden umfassen: eine Abfragestichprobengröße; einen Abfrageinitiator, wie z. B. ein Konto oder einen Anwender, der eine historische Kundenabfrage angefordert hat; ein Abfrageschema; eine Tabelle oder Mikropartition einer Datenbank; ein Zeitfenster, in dem eine historische Abfrage angefordert und/oder ausgeführt worden sein muss; ein Abfragetextfragment; oder eine Abfrageausführungskonfiguration.
  4. Vorrichtung nach Anspruch 2, wobei die Mittel zum Bestimmen der Arbeitsbelastung ferner umfassen: Mittel zum Deduplizieren historischer Kundenabfragen, die der Arbeitsbelastungsauswahlkonfiguration entsprechen, um eine Gruppierung historischer Kundenabfragen zu bestimmen; und Mittel zum Kürzen der Gruppierung historischer Kundenanfragen, um Anfragen zu eliminieren, die mehr als eine Schwellenmenge an Betriebsmitteln zur Ausführung verbrauchen.
  5. Vorrichtung nach Anspruch 1, wobei die Parameter für den Basislauf und die Parameter für den Ziellauf mit Ausnahme eines Vorhandenseins des Merkmals im Ziellauf völlig gleich sind.
  6. Vorrichtung nach Anspruch 5, die ferner Mittel zum Kennzeichnen des Leistungsrückgang als ein Falsch-Positiv in Reaktion auf das Identifizieren umfasst, dass der Leistungsrückgang nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird.
  7. Vorrichtung nach Anspruch 6, die ferner Mittel zum Identifizieren eines oder mehrerer Fehler in Reaktion auf das Vergleichen des Basislaufs und des Ziellaufs umfasst, wobei der eine oder die mehreren Fehler umfassen: ein falsches Ergebnis für eine oder mehrere historische Client-Anfragen, die im Ziellauf ausgeführt wurden; einen internen Fehler im Ziellauf; oder einen Anwenderfehler im Ziellauf; und wobei das erneute Ausführen des Ziellaufs das Identifizieren umfasst, ob irgendeiner des einen oder der mehreren Fehler immer noch vorhanden ist; und wobei das Kennzeichnen des Leistungsrückgangs als ein Falsch-Positiv in Reaktion auf das Identifizieren, dass irgendeiner des einen oder der mehreren Fehler nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, das Kennzeichnen irgendeines des einen oder der mehreren Fehler als ein Falsch-Positiv umfasst.
  8. Vorrichtung nach Anspruch 7, die ferner Mittel zum Erzeugen eines Berichts umfasst, der Daten über den Ziellauf umfasst, wobei der Bericht keine Angabe irgendeines Leistungsrückgangs oder irgendeines Fehlers umfasst, der als ein Falsch-Positiv gekennzeichnet wurde.
  9. Vorrichtung nach Anspruch 1, die ferner Mittel zum Verschleiern der Ergebnisse des Basislaufs und des Ziellaufs umfasst, so dass ein Anwender keine Sichtbarkeit in irgendwelche Datenbankdaten aufweist, die der einen oder den mehreren historischen Kundenabfragen der Arbeitsbelastung zugeordnet sind.
  10. Vorrichtung nach Anspruch 1, wobei die Mittel zum Ausführen des Basislaufs und des Ziellaufs den Basislauf und den Ziellauf in einem dedizierten virtuellen Lager eines Cloud-Datenbankdienstes ausführen, der für das Ausführen von Merkmalstestläufen dediziert ist.
  11. Vorrichtung nach Anspruch 1, die ferner Mittel zum Bestimmen einer Version der Datenbankdaten eines Kunden, die vorhanden war, als eine historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde, und zum Ausführen an der Version der Datenbankdaten des Kunden, die vorhanden war, als die historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde, umfasst.
  12. System, das umfasst: einen Speicher; und einen Prozessor, der betriebstechnisch mit dem Speicher gekoppelt ist, wobei der Prozessor: eine Arbeitsbelastung zu bestimmen, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen eines Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst; einen Basislauf der Arbeitsbelastung auszuführen, die das Merkmal nicht implementiert; einen Ziellauf der Arbeitsbelastung auszuführen, während sie das Merkmal implementiert; den Basislauf und den Ziellauf durch einen Prozessor zu vergleichen, um zu identifizieren, ob es einen Leistungsrückgang im Ziellauf gibt; und in Reaktion auf das Identifizieren des Leistungsrückgangs den Ziellauf erneut auszuführen, um zu identifizieren, ob der Leistungsrückgang immer noch vorhanden ist.
  13. System nach Anspruch 12, wobei der Prozessor die Arbeitsbelastung basierend auf einer Arbeitsbelastungsauswahlkonfiguration bestimmt, die einen oder mehrere Parameter umfasst, die durch einen Anwender eingegeben werden, um unerwünschte historische Kundenanfragen herauszufiltern.
  14. System nach Anspruch 13, wobei der eine oder die mehreren Parameter eines oder mehrere des Folgenden umfassen: eine Abfragestichprobengröße; einen Abfrageinitiator, wie z. B. ein Konto oder einen Anwender, der eine historische Kundenabfrage angefordert hat; ein Abfrageschema; eine Tabelle oder Mikropartition einer Datenbank; ein Zeitfenster, in dem eine historische Abfrage angefordert und/oder ausgeführt worden sein muss; ein Abfragetextfragment; oder eine Abfrageausführungskonfiguration.
  15. System nach Anspruch 13, wobei, um die Arbeitsbelastung zu bestimmen, der Prozessor: historische Kundenabfragen, die der Arbeitsbelastungsauswahlkonfiguration entsprechen, dedupliziert, um eine Gruppierung historischer Kundenabfragen zu bestimmen; und die Gruppierung historischer Kundenanfragen kürzt, um Anfragen zu eliminieren, die mehr als eine Schwellenmenge an Betriebsmitteln zur Ausführung verbrauchen.
  16. System nach Anspruch 12, wobei die Parameter für den Basislauf und die Parameter für den Ziellauf mit Ausnahme eines Vorhandenseins des Merkmals im Ziellauf völlig gleich sind.
  17. System nach Anspruch 12, wobei der Prozessor ferner: in Reaktion auf das Identifizieren, dass der Leistungsrückgang nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, den Leistungsrückgang als ein Falsch-Positiv kennzeichnet.
  18. System nach Anspruch 17, wobei der Prozessor ferner: in Reaktion auf das Vergleichen des Basislaufs und des Ziellaufs einen oder mehrere Fehler identifiziert, wobei der eine oder die mehreren Fehler umfassen: ein falsches Ergebnis für eine oder mehrere historische Client-Anfragen, die im Ziellauf ausgeführt wurden; einen internen Fehler im Ziellauf; oder einen Anwenderfehler im Ziellauf; und wobei, um den Ziellauf erneut auszuführen, der Prozessor identifiziert, ob irgendeiner des einen oder der mehreren Fehler immer noch vorhanden ist; und wobei, um den Leistungsrückgang als ein Falsch-Positiv zu kennzeichnen, der Prozessor in Reaktion auf das Identifizieren, dass irgendeiner des einen oder der mehreren Fehler nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, irgendeinen des einen oder der mehreren Fehler als ein Falsch-Positiv kennzeichnet.
  19. System nach Anspruch 18, wobei der Prozessor ferner einen Bericht erzeugt, der Daten über den Ziellauf umfasst, wobei der Bericht keine Angabe irgendeines Leistungsrückgangs oder irgendeines Fehlers umfasst, der als ein Falsch-Positiv gekennzeichnet wurde.
  20. System nach Anspruch 12, wobei der Prozessor ferner die Ergebnisse des Basislaufs und des Ziellaufs verschleiert, so dass ein Anwender keine Sichtbarkeit in irgendwelche Datenbankdaten hat, die der einen oder den mehreren historischen Kundenabfragen der Arbeitsbelastung zugeordnet sind.
  21. System nach Anspruch 12, wobei der Prozessor den Basislauf und den Ziellauf in einem dedizierten virtuellen Lager eines Cloud-Datenbankdienstes ausführt, der für das Ausführen von Merkmalstestläufen dediziert ist.
  22. System nach Anspruch 12, wobei der Prozessor ferner eine Version der Datenbankdaten eines Kunden bestimmt, die vorhanden war, als eine historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde, und den Basislauf und den Ziellauf an der Version der Datenbankdaten des Kunden ausführt, die vorhanden war, als die historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde.
  23. Nicht transitorisches computerlesbares Speichermedium, das darin gespeicherte Anweisungen aufweist, die, wenn sie durch einen Prozessor ausgeführt werden, den Prozessor veranlassen: eine Arbeitsbelastung zu bestimmen, die eine oder mehrere historische Kundenabfragen umfasst, die zum Testen eines Merkmals erneut auszuführen sind, wobei das Merkmal eine prozedurale Logik umfasst; einen Basislauf der Arbeitsbelastung, die das Merkmal nicht implementiert, auszuführen; einen Ziellauf der Arbeitsbelastung auszuführen, während sie das Merkmal implementiert; den Basislauf und den Ziellauf durch den Prozessor zu vergleichen, um zu identifizieren, ob es einen Leistungsrückgang im Ziellauf gibt; und in Reaktion auf das Identifizieren des Leistungsrückgangs den Ziellauf erneut auszuführen, um zu identifizieren, ob der Leistungsrückgang immer noch vorhanden ist.
  24. Nicht transitorische computerlesbare Speichermedien nach Anspruch 23, wobei der Prozessor die Arbeitsbelastung basierend auf einer Arbeitsbelastungsauswahlkonfiguration bestimmt, die einen oder mehrere Parameter umfasst, die durch einen Anwender eingegeben werden, um unerwünschte historische Kundenabfragen herauszufiltern, wobei der eine oder die mehreren Parameter eines oder mehrere des Folgenden umfassen: eine Abfragestichprobengröße; einen Abfrageinitiator, wie z. B. ein Konto oder einen Anwender, der eine historische Kundenabfrage angefordert hat; ein Abfrageschema; eine Tabelle oder Mikropartition einer Datenbank, auf die durch eine Abfrage zugegriffen werden kann; ein Zeitfenster, in dem eine historische Abfrage angefordert und/oder ausgeführt worden sein muss; ein Abfragetextfragment; eine Abfrageausführungskonfiguration, oder eine Ausführungszeit einer Abfrage.
  25. Nicht transitorische computerlesbare Speichermedien nach Anspruch 24, wobei der Prozessor den Ziellauf unter Verwendung separater isolierter Betriebsmittel mit geringerer Gleichzeitigkeit erneut ausführt und den Leistungsrückgang in Reaktion auf das Identifizieren, dass der Leistungsrückgang nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, als ein Falsch-Positiv kennzeichnet.
  26. Nicht transitorische computerlesbare Speichermedien nach Anspruch 25, wobei der Prozessor ferner einen oder mehrere Fehler in Reaktion auf das Vergleichen des Basislaufs und des Ziellaufs identifiziert, wobei der eine oder die mehreren Fehler umfassen: ein falsches Ergebnis für eine oder mehrere historische Client-Anfragen, die im Ziellauf ausgeführt wurden; einen internen Fehler im Ziellauf; oder einen Anwenderfehler im Ziellauf; und wobei, um den Ziellauf erneut auszuführen, der Prozessor identifiziert, ob irgendeiner des einen oder mehreren Fehler immer noch vorhanden ist; und wobei, um den Leistungsrückgang als ein Falsch-Positiv zu kennzeichnen, der Prozessor in Reaktion auf das Identifizieren, dass irgendeiner des einen oder der mehreren Fehler nicht länger vorhanden ist, wenn der Ziellauf erneut ausgeführt wird, irgendeinen des einen oder der mehreren Fehler als ein Falsch-Positiv kennzeichnet.
  27. Nicht transitorische computerlesbare Speichermedien nach Anspruch 26, wobei der Prozessor ferner einen Bericht erzeugt, der Daten über den Ziellauf umfasst, wobei der Bericht keine Angabe irgendeines Leistungsrückgangs oder irgendeines Fehlers umfasst, der als ein Falsch-Positiv gekennzeichnet wurde.
  28. Nicht transitorische computerlesbare Speichermedien nach Anspruch 23, wobei der Prozessor ferner die Ergebnisse des Basislaufs und des Ziellaufs verschleiert, so dass ein Anwender keine Sichtbarkeit in irgendwelche Datenbankdaten hat, die der einen oder den mehreren historischen Kundenabfragen der Arbeitsbelastung zugeordnet sind.
  29. Nicht transitorische computerlesbare Speichermedien nach Anspruch 23, wobei der Prozessor den Basislauf und den Ziellauf in einem dedizierten virtuellen Lager eines Cloud-Datenbankdienstes ausführt, der für das Ausführen von Merkmalstestläufen dediziert ist.
  30. Nicht transitorische computerlesbare Speichermedien nach Anspruch 23, wobei der Prozessor ferner eine Version der Datenbankdaten eines Kunden bestimmt, die vorhanden war, als eine historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde, und wobei der Basislauf und der Ziellauf an der Version der Datenbankdaten des Kunden ausgeführt werden, die vorhanden war, als die historische Kundenabfrage der einen oder der mehreren historischen Kundenabfragen durch den Kunden ausgeführt wurde.
DE202019005484.7U 2018-03-22 2019-03-20 Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen Active DE202019005484U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862646817P 2018-03-22 2018-03-22
US62/646,817 2018-03-22

Publications (1)

Publication Number Publication Date
DE202019005484U1 true DE202019005484U1 (de) 2020-11-10

Family

ID=67985372

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202019005484.7U Active DE202019005484U1 (de) 2018-03-22 2019-03-20 Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen

Country Status (6)

Country Link
US (8) US11321290B2 (de)
EP (1) EP3714367A4 (de)
KR (1) KR102245224B1 (de)
CN (1) CN111630497B (de)
DE (1) DE202019005484U1 (de)
WO (1) WO2019183219A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086840B2 (en) * 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
US11803798B2 (en) 2019-04-18 2023-10-31 Oracle International Corporation System and method for automatic generation of extract, transform, load (ETL) asserts
US11614976B2 (en) 2019-04-18 2023-03-28 Oracle International Corporation System and method for determining an amount of virtual machines for use with extract, transform, load (ETL) processes
US11615108B2 (en) * 2019-04-18 2023-03-28 Oracle International Corporation System and method for running warehouse loads for multiple tenants of a data warehouse
JP2022532975A (ja) 2019-04-30 2022-07-21 オラクル・インターナショナル・コーポレイション 分析アプリケーション環境を用いたデータアナリティクスのためのシステムおよび方法
US10824548B1 (en) * 2019-06-28 2020-11-03 Atlassian Pty Ltd. System and method for performance regression detection
US11409626B2 (en) * 2019-08-29 2022-08-09 Snowflake Inc. Decoupling internal and external tasks in a database environment
US11194838B2 (en) * 2019-10-23 2021-12-07 International Business Machines Corporation Generating a data partitioning strategy for secure and efficient query processing
US11341028B2 (en) * 2020-01-02 2022-05-24 International Business Machines Corporation Structured query language runtime access path generation for deep test in a database
US11327969B2 (en) * 2020-07-15 2022-05-10 Oracle International Corporation Term vector modeling of database workloads
US11615095B2 (en) 2020-10-30 2023-03-28 Snowflake Inc. Automatic pruning cutoff in a database system
CN113449037B (zh) * 2021-06-29 2024-04-12 云之富(上海)数据服务有限公司 基于ai的sql引擎调用方法、装置、设备及介质
CN113641572B (zh) * 2021-07-02 2023-06-13 多点生活(成都)科技有限公司 一种基于sql的海量大数据计算开发的调试方法
US11593254B1 (en) 2021-08-05 2023-02-28 International Business Machines Corporation Software patch risk determination
US20230185792A1 (en) * 2021-12-13 2023-06-15 Sap Se Verification of database system using deterministic read workloads
US11907106B2 (en) * 2021-12-23 2024-02-20 Gm Cruise Holdings Llc Code integration with time-variant test failure detection
US11843501B2 (en) 2022-05-13 2023-12-12 Microsoft Technology Licensing, Llc Parity drift detection in cloud computing systems

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356890B1 (en) 2000-04-20 2002-03-12 Microsoft Corporation Merging materialized view pairs for database workload materialized view selection
US20030093716A1 (en) 2001-11-13 2003-05-15 International Business Machines Corporation Method and apparatus for collecting persistent coverage data across software versions
WO2005045673A2 (en) * 2003-11-04 2005-05-19 Kimberly-Clark Worldwide, Inc. Testing tool for complex component based software systems
US7574425B2 (en) * 2004-12-03 2009-08-11 International Business Machines Corporation System and method for query management in a database management system
US7840944B2 (en) * 2005-06-30 2010-11-23 Sap Ag Analytical regression testing on a software build
US7805443B2 (en) * 2006-01-20 2010-09-28 Microsoft Corporation Database configuration analysis
US8793191B2 (en) * 2006-11-01 2014-07-29 Bank Of America Corporation System and method for duplicate detection
US8341178B2 (en) 2007-09-18 2012-12-25 Oracle International Corporation SQL performance analyzer
US20090171718A1 (en) * 2008-01-02 2009-07-02 Verizon Services Corp. System and method for providing workforce and workload modeling
US8688622B2 (en) * 2008-06-02 2014-04-01 The Boeing Company Methods and systems for loading data into a temporal data warehouse
US9910892B2 (en) 2008-07-05 2018-03-06 Hewlett Packard Enterprise Development Lp Managing execution of database queries
EP2189925A3 (de) 2008-11-25 2015-10-14 SafeNet, Inc. Datenbankobfuskationssystem und -verfahren
US8464224B2 (en) 2009-06-30 2013-06-11 Sap Ag Integrated performance and load testing tool for application servers
US8145949B2 (en) * 2010-06-16 2012-03-27 Plx Technology, Inc. Automated regression failure management system
US8868749B2 (en) * 2011-01-18 2014-10-21 International Business Machines Corporation Workload placement on an optimal platform in a networked computing environment
US9110496B1 (en) * 2011-06-07 2015-08-18 Interactive TKO, Inc. Dynamic provisioning of a virtual test environment
US9152443B2 (en) 2012-07-13 2015-10-06 Ca, Inc. System and method for automated assignment of virtual machines and physical machines to hosts with right-sizing
US9207969B2 (en) * 2013-01-25 2015-12-08 Microsoft Technology Licensing, Llc Parallel tracing for performance and detail
US9542294B2 (en) * 2013-07-09 2017-01-10 International Business Machines Corporation Method to apply perturbation for resource bottleneck detection and capacity planning
CN105308577B (zh) * 2013-07-09 2018-01-05 甲骨文国际公司 用于提供负载测试服务的方法、系统和计算机可读存储器
US9524299B2 (en) * 2013-08-12 2016-12-20 Ixia Methods, systems, and computer readable media for modeling a workload
US10579599B2 (en) * 2013-11-21 2020-03-03 Oracle International Corporation Upgrade of heterogeneous multi-instance database clusters
US9692789B2 (en) * 2013-12-13 2017-06-27 Oracle International Corporation Techniques for cloud security monitoring and threat intelligence
US9665633B2 (en) 2014-02-19 2017-05-30 Snowflake Computing, Inc. Data management systems and methods
US9880915B2 (en) 2014-03-05 2018-01-30 Microsoft Technology Licensing, Llc N-gram analysis of inputs to a software application
US9645916B2 (en) 2014-05-30 2017-05-09 Apple Inc. Performance testing for blocks of code
CN106937531B (zh) * 2014-06-14 2020-11-06 奇跃公司 用于产生虚拟和增强现实的方法和系统
US10621064B2 (en) 2014-07-07 2020-04-14 Oracle International Corporation Proactive impact measurement of database changes on production systems
US10713594B2 (en) * 2015-03-20 2020-07-14 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing machine learning model training and deployment with a rollback mechanism
US9811444B2 (en) * 2015-08-04 2017-11-07 Salesforce.Com, Inc. Testing software enhancements in database applications
US10114722B2 (en) * 2015-08-24 2018-10-30 International Business Machines Corporation Test of the execution of workloads in a computing system
US10621151B2 (en) * 2015-09-25 2020-04-14 Netapp Inc. Elastic, ephemeral in-line deduplication service
US10380010B2 (en) 2016-06-30 2019-08-13 International Business Machines Corporation Run time and historical workload report scores for customer profiling visualization
US10817540B2 (en) * 2016-09-02 2020-10-27 Snowflake Inc. Incremental clustering maintenance of a table
US10592528B2 (en) * 2017-02-27 2020-03-17 Sap Se Workload capture and replay for replicated database systems
US20180322037A1 (en) * 2017-05-04 2018-11-08 Microsoft Technology Licensing, Llc Impersonation in test automation
US10318729B2 (en) * 2017-07-26 2019-06-11 Forcepoint, LLC Privacy protection during insider threat monitoring
US11003641B2 (en) * 2017-09-22 2021-05-11 Microsoft Technology Licensing, Llc Automatic database troubleshooting
US10572801B2 (en) * 2017-11-22 2020-02-25 Clinc, Inc. System and method for implementing an artificially intelligent virtual assistant using machine learning

Also Published As

Publication number Publication date
US20200089665A1 (en) 2020-03-19
CN111630497B (zh) 2023-09-05
US11500838B1 (en) 2022-11-15
US20190294596A1 (en) 2019-09-26
WO2019183219A1 (en) 2019-09-26
US11782890B2 (en) 2023-10-10
KR102245224B1 (ko) 2021-04-28
US11386059B2 (en) 2022-07-12
US20210397593A1 (en) 2021-12-23
US20240012796A1 (en) 2024-01-11
US11416463B1 (en) 2022-08-16
KR20200103726A (ko) 2020-09-02
US20220318215A1 (en) 2022-10-06
US20220358107A1 (en) 2022-11-10
EP3714367A4 (de) 2021-01-20
US11321290B2 (en) 2022-05-03
CN111630497A (zh) 2020-09-04
US20220237161A1 (en) 2022-07-28
EP3714367A1 (de) 2020-09-30
US11138167B2 (en) 2021-10-05
US20200356540A1 (en) 2020-11-12
US10762067B2 (en) 2020-09-01

Similar Documents

Publication Publication Date Title
DE202019005484U1 (de) Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen
US11762882B2 (en) System and method for analysis and management of data distribution in a distributed database environment
DE102016105472B4 (de) Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen
DE202020005681U1 (de) Tabellen mit Journal in Datenbanksystemen
DE202020005680U1 (de) Abfragen über externe Tabellen in Datenbanksystemen
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
Cipar et al. LazyBase: trading freshness for performance in a scalable database
DE202015009875U1 (de) Transparente Entdeckung eines semistrukturierten Datenschemas
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE202021004295U1 (de) Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem
DE102021125630A1 (de) Datensynchronisation in einem datenanalysesystem
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
Fritchey et al. SQL server 2012 query performance tuning
Chen et al. Architecting and deploying DB2 with BLU acceleration
Aven Hadoop in 24 Hours, Sams Teach Yourself
Lakhe et al. Case study: Implementing lambda architecture
Wei Investigation and Benchmarking for State Management of Stateful Stream Processing
Bruni et al. Reliability and Performance with IBM DB2 Analytics Accelerator V4. 1
DE202023104916U1 (de) Verteilte Ausführung von transaktionalen Abfragen
Peasland et al. Advanced Options
Farooq et al. Oracle Database Problem Solving and Troubleshooting Handbook

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: SNOWFLAKE INC., BOZEMAN, US

Free format text: FORMER OWNER: SNOWFLAKE INC., SAN MATEO, CA, US