DE60218160T2 - Verfahren und systeme zur datenübertragung über ein netz - Google Patents

Verfahren und systeme zur datenübertragung über ein netz Download PDF

Info

Publication number
DE60218160T2
DE60218160T2 DE60218160T DE60218160T DE60218160T2 DE 60218160 T2 DE60218160 T2 DE 60218160T2 DE 60218160 T DE60218160 T DE 60218160T DE 60218160 T DE60218160 T DE 60218160T DE 60218160 T2 DE60218160 T2 DE 60218160T2
Authority
DE
Germany
Prior art keywords
data
data block
computer system
session
thread
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.)
Expired - Lifetime
Application number
DE60218160T
Other languages
English (en)
Other versions
DE60218160D1 (de
Inventor
Mohan Union City SANKARAN
Volodymyr San Jose BUTSKY
C. Sridhar Fremont KORITALA
Zhenyu Fremont TANG
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.)
Informatica LLC
Original Assignee
Informatica LLC
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 Informatica LLC filed Critical Informatica LLC
Publication of DE60218160D1 publication Critical patent/DE60218160D1/de
Application granted granted Critical
Publication of DE60218160T2 publication Critical patent/DE60218160T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

  • GEBIET
  • Die Offenbarung betrifft im Allgemeinen Computersystemnetze und insbesondere die Sicherung von schneller, zuverlässiger und privater Kommunikation zwischen vernetzten Computern in einer Mehrfach-Data-Warehouse-/analytischen Anwendungsumgebung. Die Offenbarung betrifft ein Verfahren und System zur Bereitstellung von Übertragung von analytischen Anwendungsdaten über ein Netz.
  • HINTERGRUND
  • Computer werden zur Durchführung einer großen Vielfalt von Anwendungen in unterschiedlichen Gebieten wie Finanzen, traditionelle und elektronische kommerzielle Transaktionen, Fertigung, Gesundheitspflege, Telekommunikation usw. eingesetzt. Die meisten dieser Anwendungen umfassen normalerweise Eingabe oder elektronischen Empfang von Daten, Verarbeiten der Daten nach einem Computerprogramm, dann Speichern der Ergebnisse in einer Datenbank und unter Umständen Übertragen der Daten zu einer anderen Anwendung, einem Messaging-System oder einem Client in einem Computernetz. Computer werden leistungsfähiger, schneller und vielseitiger, und gleichzeitig nimmt der Umfang der Daten zu, die verarbeitet werden können.
  • Leider existieren die in Betriebsdatenbanken gefundenen Rohdaten oft als Reihen und Spalten von Zahlen und Codes, die, wenn sie von Personen betrachtet werden, als verwirrend und unverständlich erscheinen. Zudem sind der Umfang und das Ausmaß der in einer modernen Datenbank gespeicherten Rohdaten überwältigend für einen beiläufigen Betrachter. Daher wurden Anwendungen entwickelt, um beim Interpretieren, Analysieren und Zusammenstellen der Daten zu helfen, damit sie schnell und einfach von Menschen verstanden werden. Dies erfolgt durch Durchsuchen, Sortieren und Zusammenfassen der Rohdaten, bevor sie für Anzeige, Speicherung oder Übertragung präsentiert werden. Dadurch können Personen die Daten jetzt interpretieren und auf ihrer Grundlage wichtige Entscheidungen fällen.
  • Extrahieren von Rohdaten aus einer oder mehreren Betriebsdatenbanken und ihre Umwandlung in nützliche Informationen (z. B. Daten-„Warehouses" und Daten-„Marts") ist die Funktion von analytischen Anwendungen. In Daten-Warehouses und Daten-Marts sind die Daten strukturiert, um Rollen bei der Entscheidungsunterstützung anstelle von Betriebserfordernissen zu unterstützen. Ein Daten-Warehouse verwendet ein Geschäftsmodell, um Betriebsdaten zu kombinieren und zu verarbeiten und sie in einer konsistenten Weise verfügbar zu machen. Bevor die Daten in das Daten-Warehouse geladen werden, werden die korrespondierenden Ausgabedaten aus einer Betriebsdatenbank gefiltert, um überzählige und fehlerhafte Einträge zu entfernen; kryptische und in Konflikt stehende Einträge werden aufgelöst; Rohdaten werden in etwas Aussagekräftigeres übersetzt; und zusammengefasste Daten, die für Entscheidungsunterstützung, Trendanalyse und Modellbildung oder andere Anforderungen von Endbenutzern nützlich sind, werden im Voraus berechnet. Ein Daten-Mart ist ähnliche einem Daten-Warehouse mit dem Unterschied, dass es eine Teilmenge von Unternehmensdaten für einen einzelnen Geschäftsaspekt wie Finanzen, Vertrieb, Lagerbestand oder Personal enthält.
  • Schließlich umfasst das Daten-Warehouse oder Daten-Mart eine „analytische" Datenbank, die äußerst große Datenmengen enthält, die nützlich sind für direkte Entscheidungsunterstützung oder zur Verwendung in Anwendungen, die zur anspruchsvollen statistischen oder logischen Analyse der umgewandelten Betriebsrohdaten imstande sind. Durch Daten-Warehouses und Daten-Marts werden nützliche Informationen zur Verfügung von Entscheidungsträgern und Benutzern von analytischen Anwendungen gehalten und können in einem vernetzten System an Daten-Warehouse-Server verteilt werden. Zusätzlich können Entscheidungsträger-Clients analytische Daten, die in einem entfernten Daten-Warehouse-Server gespeichert sind, über ein Computersystemnetz abrufen.
  • Ein Beispiel des Unternehmenstyps, der Daten-Warehousing verwenden würde, ist ein Online-Intemet-Buchvertrieb, der Millionen von Kunden in aller Welt hat, deren Buchvorlieben und -käufe verfolgt werden. Durch Verarbeitung und Warehousing dieser Daten können Führungskräfte des Buchvertriebs auf die verarbeiteten Daten aus dem Daten-Warehouse zugreifen, die für komplizierte Analyse und zum Fällen von wichtigen Entscheidungen, wie die Anforderungen ihrer Kunden in aller Welt besser erfüllt werden können, genutzt werden können.
  • Durch die schnelle Zunahme der Nutzung von Netzsystemen wie Weitbereichsnetze (WAN), das World Wide Web und das Internet wird die Fähigkeit bereitgestellt, Betriebsdaten in Datenbankanwendungen zu übertragen und Daten gemeinsam zu nutzen, die in Datenbanken enthalten sind, die sich in disparaten vernetzten Servern befinden. Beispielsweise werden ständig große Mengen von Währungstransaktionsdaten durch elektronischen Handel zwischen Unternehmen und Kunden und zwischen Untemehmen und Unternehmen, der über das Internet erfolgt, erzeugt. Diese Transaktionsdaten werden routinemäßig in Betriebsdatenbanken zur Speicherung, Verarbeitung und Verteilung an Datenbanken in vernetzten Servern erfasst und gesammelt.
  • Die erweiterte Nutzung von „Messaging-Systemen" und dergleichen erhöht die Fähigkeit von Netzen zur Übertragung von Daten und Bereitstellung von Interoperabilität zwischen disparaten Datenbanksystemen. Messaging-Systeme sind Computersysteme, die es gestatten, logische Elemente von unterschiedlichen Anwendungen nahtlos miteinander zu verknüpfen. Messaging-Systeme ermöglichen außerdem die Lieferung von Daten über einen großen Bereich von Hardware- und Software-Plattformen und gestatten es Anwendungen, trotz Unterschieden in zgrundeu liegenden Protokollen, Systemarchitekturen, Betriebssystemen und Datenbankdiensten über Netzverbindungen zusammenzuarbeiten. Messaging-Systeme und die kützliche Entwicklung von Internetzugang über drahtlose Vorrichtungen wie dazu fähigen Zellulartelefonen, Zweiwege-Funkrufempfängem und Handheld-Personal-Computern unterstützen die Verbesserung der Datenübertragung und -speicherung und der Interoperabilität von disparaten Datenbanksystemen.
  • In der gegenwärtigen Daten-Warehouse-/Daten-Mart-Netzwerkumgebung betrifft eine allgemeine Besorgnis das bloße Volumen der Daten, die zu handhaben sind. Oft sind massive Datendateien von mehreren Terabyte an verschiedenen Serverstandorten von Daten-Warehouses oder in Betriebsdatenbanken gespeichert. Übertragung dieser massiven Datenmengen über WANs oder das Internet ist eine schwierige Aufgabe. Die zum Bewegen der Daten erforderliche Zeit ist beträchtlich, und die Wahrscheinlichkeit, dass die Daten einen während der Übertragung verursachten Fehler enthalten, nimmt zu. Außerdem sind die Daten anfällig gegenüber Abfangen durch eine nicht berechtigte Partei. Wenn die Verbindung während des Prozesses der Übertragung der Daten über ein Netzwerk verloren geht, besteht weiterhin oft das Erfordernis, große Datenmengen neu zu übertragen, die bereits vor dem Verbindungsverlust übertragen wurden, wodurch die Zeit zum Verlagern der Daten weiter erhöht wird.
  • Das US-Patent 5689566 beschreibt ein Computersystem und ein Verfahren zum Übertragen von Daten über ein Computernetz. Es betrifft die Anpassung des Sicherheitsniveaus auf der Grundlage der Art der Kommunikation.
  • Folglich besteht ein Bedarf an einem zuverlässigen, sicheren, authentifizierten, überprüfbaren und schnellen System und/oder Verfahren zur Übertragung von gewaltigen Datenmengen wie Daten in einem Daten-Warehouse/-Mart über Netzwerken wie WANs oder das Internet. Die vorliegende Erfindung stellt eine neue Lösung für diesen Bedarf bereit.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ein erster Aspekt der Erfindung stellt ein Verfahren zum Übertragen von Daten gemäß dem hieran angefügten Anspruch 1 bereit.
  • Ein zweiter Aspekt der Erfindung stellt ein Verfahren zum Empfangen von Daten gemäß dem hieran angefügten Anspruch 10 bereit.
  • Ein dritter Aspekt der Erfindung stellt eine Computervorrichtung gemäß dem hieran angefügten Anspruch 18 bereit.
  • Ein vierter Aspekt der Erfindung stellt eine Computervorrichtung gemäß dem hieran angefügten Anspruch 19 bereit.
  • Die vorliegende Erfindung befriedigt einen gegenwärtig nicht erfüllten Bedarf in einer vernetzten Daten-Warehouse-/analytischen Anwendungsumgebung zur Bereitstellung eines Verfahrens und Systems, die ein zuverlässiges, sicheres, authentifiziertes, überprüfbares und schnelles System und Verfahren zur Übertragung von großen Datenmengen über ein Netzwerk (z. B. Betriebsdaten und umgewandelte Daten in einem Daten-Warehouse/Daten-Mart) bietet. Die Daten können von einer Quelle zu einem Ziel (z. B. von einem Server zu einem Client oder von einem Client zu einem Server) in dem Computersystemnetz bewegt werden. Die Quelle repräsentiert jede zentralisierte Quelle in dem Netzwerk, während das Ziel eine entfernt angeordnete Vorrichtung (z. B. an einem Kundenstandort) oder eine lokale Vorrichtung (z. B. eine Vorrichtung in Kommunikation mit der Quelle über ein lokales Netz) repräsentieren kann.
  • In einer Ausführungsform wird in einem Quellen-Computersystem (z. B. Server) eine eingehende Anforderung von einem Ziel (z. B. Client) für eine große Datenmenge (z. B. eine Datendatei), die beispielsweise in einem Massenspeichergerät in dem Server vorhanden ist, empfangen. Die eingehende Anforderung wird authentifiziert und wird dann verwendet, um einen Sitzungs-Thread zwischen dem Server und dem Client hervorzubringen. Die eingehende Anforderung enthält einen Befehl, der in einer Ausführungsform Extensible Markup Language (XML) verwendet. Der Befehl wird analysiert und in einen Satz von Aufgaben übersetzt, die von dem Server als Teil des Sitzungs-Threads ausgeführt werden können.
  • In einer Ausführungsform werden die Daten in Blöcke aufgeteilt und jeder Block wird der Reihe nach komprimiert und verschlüsselt und dann zu dem Client übertragen. In einer Ausführungsform werden die Blöcke parallel verarbeitet, wodurch Zeit eingespart wird. Die Übertragung der Daten zum Client wird überprüft um zu gewährleisten, dass sie vollständig und richtig ist.
  • An der Clientseite wird der Sitzungs-Thread zwischen dem Server und dem Client als Reaktion auf eine Nachricht von dem Server hervorgebracht. Die komprimierten und verschlüsselten Datenblöcke werden von dem Server empfangen, dekomprimiert, entschlüsselt und zu den angeforderten Daten zusammengesetzt.
  • Die vorliegende Erfindung stellt einen Wiederherstellungsmechanismus für automatische oder manuelle Wiederherstellung einer Verbindung zwischen dem Server und dem Client bereit, wenn die Verbindung unterbrochen wurde. Als Bestandteil des Wiederherstellungsmechanismus wird die Datenübertragung wieder an dem Punkt aufgenommen, an dem sie bei der Unterbrechung der Verbindung beendet wurde, so dass vorher übertragene Daten nicht erneut übertragen werden müssen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird als Beispiel und nicht durch Beschränkung in den Figuren der beigefügten Zeichnungen dargestellt, in denen sich ähnliche Bezugsnummern auf ähnliche Elemente beziehen und von denen:
  • 1A ein schematisches Blockdiagramm eines beispielhaften Client/Server-Computersystemnetzes zeigt, in dem Ausführungsformen der vorliegenden Erfindung implementiert werden können.
  • 1B ein beispielhaftes Computersystem zeigt, in dem Ausführungsformen der vorliegenden Erfindung ausgeführt werden können.
  • 2A ein allgemeines funktionales Blockdiagramm eines Computersystemnetzes nach einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 2B ein detaillierteres funktionales Blockdiagramm des Computersystemnetzes zeigt, das allgemein in 2A dargestellt ist.
  • 3A Datenfluss durch eine erste Ausführungsform eines Ausgabekanals der vorliegenden Erfindung zeigt.
  • 3B Datenfluss durch eine erste Ausführungsform eines Eingabekanals der vorliegenden Erfindung zeigt.
  • 4A Datenfluss durch eine zweite Ausführungsform eines Ausgabekanals der vorliegenden Erfindung zeigt.
  • 4B Datenfluss durch eine zweite Ausführungsform eines Eingabekanals der vorliegenden Erfindung zeigt.
  • 5 Datenfluss durch eine Ausführungsform eines Sitzungs-Threads nach der vorliegenden Erfindung zeigt.
  • 6A, 6B und 6C Wiederherstellung der Datenübertragung nach einem Ausfall einer Netzverbindung nach einer Ausführungsform der vorliegenden Erfindung zeigen.
  • 7A ein Ablaufdiagramm der Schritte in einem serverseitigen Prozess zur Übertragung von Daten über ein Netzwerk nach einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 7B ein Ablaufdiagramm der Schritte in einem clientseitigen Prozess zur Übertragung von Daten über ein Netzwerk nach einer Ausführungsform der vorliegenden Erfindung zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Jetzt wird detailliert Bezug genommen auf die bevorzugten Ausführungsformen der Erfindung, von denen Beispiele in den beigefügten Zeichnungen dargestellt sind. Während die Erfindung in Verbindung mit den bevorzugten Ausführungsformen beschrieben wird, wird verstanden werden, dass sie nicht vorgesehen sind, um die Erfindung auf diese Ausführungsformen zu beschränken. Im Gegenteil ist die Erfindung vorgesehen, Alternativen, Abwandlungen und Äquivalente, die im Geist und Rahmen der Erfindung, wie durch die beigefügten Patentansprüche definiert, sein können, abzudecken. Weiterhin werden in der folgenden ausführlichen Beschreibung der vorliegenden Erfindung zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung zu vermitteln. Es wird jedoch für Durchschnittsfachleute des Fachgebiets offensichtlich sein, dass die vorliegende Erfindung ohne diese spezifischen Details ausgeführt werden kann. In anderen Fällen wurden gut bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht ausführlich beschrieben, um Aspekte der vorliegenden Erfindung nicht unnötigerweise schwer verständlich zu machen.
  • Einige Abschnitte der folgenden ausführlichen Beschreibungen werden in Form von Prozeduren, logischen Blöcken, Verarbeitung und anderen symbolischen Repräsentationen von Operationen mit Datenbits in einem Computerspeicher dargestellt. Diese Beschreibungen und Repräsentationen sind die Mittel, die von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit wirksam an andere Fachleute zu übermitteln. In der vorliegenden Anwendung wird eine Prozedur, ein logischer Block, ein Prozess oder dergleichen als eine folgerichtige Sequenz von Schritten oder Befehlen angesehen, die zu einem gewünschten Ergebnis führen. Die Schritte sind diejenigen, die physikalische Manipulation von physikalischen Quantitäten erfordern. Gewöhnlich, aber nicht notwendigerweise, nehmen diese Quantitäten die Form von elektrischen oder magnetischen Signalen an, die in einem Computersystem gespeichert, übertragen, kombiniert, verglcihen oder anderweitig manipuliert werden können. Es hat sich manchmal als praktisch erwiesen, hauptsächlich aus Gründen der normalen Verwendung, sich auf diese Signale als Sitzungen, Objekte, Blöcke, Teile, Threads oder dergleichen zu beziehen.
  • Es muss jedoch bedacht werden, dass sämtliche dieser und ähnlicher Begriffe mit den entsprechenden physikalischen Quantitäten assoziiert werden müssen und lediglich praktische Etiketten sind, die auf diese Quantitäten angewandt werden. Wenn nicht speziell anders angegeben, wird, wie aus den folgenden Diskussionen ersichtlich, durch die vorliegende Erfindung davon ausgegangen, dass Diskussionen, die Begriffe wie „Erstellen", „Ausgeben", „Authentifizieren", „Herstellen", „Übertragen", Akkumulieren" Wiederherstellen" Wiederaufnehmen" Übersetzen" Speichern" Ausführen" Empfangen" Schreiben" Komprimieren" Dekomprimieren" Verschlüsseln" Entschlüsseln" „Senden", „Überprüfen" oder dergleichen verwenden, sich auf Aktionen und Prozesse (z. B. Prozesse 700 und 705 von 7A bzw. 7B) eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen. Das Computersystem oder die ähnliche elektronische Rechenvorrichtung manipuliert und wandelt Daten um, die als physikalische (elektronische) Quantitäten in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen repräsentiert werden. Die vorliegende Erfindung ist gut geeignet für die Verwendung von anderen Computersystemen.
  • 1A zeigt ein Blockdiagramm des Client/Server-Computersystemnetzes 100, auf dem Ausführungsformen der vorliegenden Erfindung ausgeführt werden können. Dieses Client/Server-System 100 besteht aus dem Server-Computersystem 110 (z. B. Unix- oder NT-Servercomputer), dem Client-Computersystem 102 und entfernten Computersystemen 103105 (z. B. Personal-Computer, Laptop-Computer, Workstations, Endgeräte usw.), die für den Zugriff auf die Informationen, die für das Server-Computersystem 110 verfügbar sind, verwendet werden können. Der Server 110 kann jede zentralisierte Quelle in dem Netzwerk 100 repräsentieren, während der Client 102 und die entfernten Computersysteme 103105 eine entfernt angeordnete Vorrichtung (z. B. an einem Kundenstandort) oder eine lokale Vorrichtung (z. B. eine Vorrichtung, die über ein lokales Netz mit dem Server 110 in Kommunikation ist) repräsentieren können.
  • Jedes entfernte Computersystem 103105 hat sein eigenes physikalisches Speichersystem (z. B. Festplatte, Direktzugriffsspeicher, Nur-Lese-Speicher usw.) zum Speichern und Manipulieren von Daten. Das Client-Computersystem 102, das Server-Computersystem 110 und die entfernten Computersysteme 103105 sind durch den Netzwerkbus 107 für Interkommunikation und Übertragung von Daten verbunden. Es ist jedoch ersichtlich, dass diese Vorrichtungen stattdessen in einem drahtlosen Netzwerk verkoppelt sein können.
  • Das Server-Computersystem 110 ist an die Server-Massenspeichervorrichtung 112 gekoppelt, die durch den Netzwerkbus 107 direkt zugänglich durch das Client-Computersystem 102 und die Computerendgeräte 103105 ist oder nicht. Das Clientsystem 102 verfügt außerdem über seine eigene Client-Massenspeichervorrichtung 170. Die vorliegende Erfindung enthält Threads und Objekte in der Anwendungssoftware, die vom Server-Computersystem 110 und/oder Clientsystem 102 ausgeführt werden, um Daten dazwischen zu übertragen (siehe 2B unten).
  • In der Massenspeichervorrichtung 112 befindet sich die Betriebsdatenbank 116a, die die aktuellen Rohdaten für ein Daten-Mart oder Daten-Warehouse empfängt und speichert. Empfangene Rohdaten, die in der Betriebsdatenbank 116a gespeichert sind, werden von einer analytischen Anwendung in Informationen umgewandelt, die aussagekräftiger für Entscheidungsunterstützung sind. Daten-Marts/-Warehouses 113a, die sich in der Massenspeichervorrichtung 112 befinden, enthalten umgewandelte Daten, die von der analytischen Anwendung verarbeitet wurden. Es ist wichtig herauszustellen, dass die Daten-Marts/-Warehouses 113a und die Betriebsdatenbank 116a jeweils in getrennten Massenspeichervorrichtungen gespeichert sein könnten und dass jede Massenspeichervorrichtung über den Netzwerkbus 107 mit einem separaten Server verbunden sein könnte.
  • Eine Datendatei 120 ist eine Datei, die entweder in der Betriebsdatenbank 116a, in der Datenbank des Daten-Warehouses/Daten-Marts 113b oder woanders in der Server-Massenspeichervorrichtung 112 gespeichert ist. Nach der vorliegenden Erfindung wird die Datendatei 120 sicher, schnell und zuverlässig über den Netzwerkbus 107 an das Client-Computersystem 102 oder die entfernten Computersysteme 103105 zur Anzeige oder Speicherung in diesen Systemen oder zur Verwendung in analytischen Anwendungen, die in diesen Systemen residieren, übertragen. Die Datendatei 120 ist eine große Datei, die beispielsweise Betriebsdaten wie Kundendaten oder Daten einer dritten Partei enthält. Die Datendatei 120 kann stattdessen Daten enthalten, die nach einer analytischen Anwendung umgewandelt wurden. Es ist ersichtlich, dass die vorliegende Erfindung auch verwendet werden kann, um einen Datenstrom vom Server-Computersystem 110 zu einer Zielvorrichtung (z. B. Client-Computersystem 102 oder an die entfernten Computersysteme 103105) zu übertragen.
  • Die Betriebsdatenbank 116b und das Daten-Warehouse 113b sind auch als in der Client-Massenspeichervorrichtung 170 gespeichert dargestellt. Eine Datendatei 120 ist auch als in der Client-Massenspeichervorrichtung 179 gespeichert dargestellt, um die Übertragung und den Empfang der Datendatei, wie im vorstehenden Absatz erwähnt, zu repräsentieren. Es ist ersichtlich, dass die vorliegende Erfindung gleichermaßen verwendet werden kann, um eine Datendatei (oder einen Datenstrom) vom Client 102 an den Server 110 oder von diesen Vorrichtungen an jede andere Vorrichtung im Netzwerk 100 zu übertragen. Allgemein ausgedrückt, kann die vorliegende Erfindung verwendet werden, um eine Datendatei oder einen Datenstrom von einer Quellvorrichtung zu einer Zielvorrichtung zu übertragen. Zur Vereinfachung der Diskussion wird die vorliegende Erfindung im Kontext einer Übertragung einer Datendatei von einem Server an einen Client beschrieben.
  • Jetzt wird Bezug genommen auf 1B, die ein beispielhaftes Computersystem 1090 darstellt, auf dem Ausführungsformen der vorliegenden Erfindung ausgeführt werden können. Das Computersystem 1090 veranschaulicht den Server 110, den Client 102 und die entfernten Computersysteme 103105 von 1A.
  • Im Allgemeinen umfasst das Computersystem 1090 von 1B Bus 1000 zur Übertragung von Informationen, einen oder mehrere Prozessoren 1001, die an den Bus 1000 gekoppelt sind, zur Verarbeitung von Informationen und Befehlen, Direktzugriffsspeicher (flüchtig) (RAM) 1002, der an den Bus 1000 gekoppelt ist, zur Speicherung von Informationen und Befehlen für Prozessor 1001, Nur-Lese-Speicher (nicht flüchtig) (ROM) 1003, der an den Bus 1000 gekoppelt ist, zur Speicherung von statischen Informationen und Befehlen für Prozessor 1001, Datenspeichervorrichtung 1004 wie eine magnetische oder optische Platte und ein Plattenlaufwerk, das an den Bus 1000 gekoppelt ist, zur Speicherung von Informationen und Befehlen, eine optionale Benutzerausgabevorrichtung wie Anzeigevorrichtung 1005, die an den Bus 1000 gekoppelt ist, zur Anzeige von Informationen für den Computerbenutzer, eine optionale Benutzereingabevorrichtung wie eine alphanumerische Eingabevorrichtung 1006 einschließlich von alphanumerischen und Funktionstasten, die an den Bus 1000 gekoppelt ist, zur Übertragung von Informationen und Befehlsauswahlen an Prozessor 1001, und eine optionale Benutzerausgabevorrichtung wie Cursorsteuerungsvorrichtung 1007, die an den Bus 1000 gekoppelt ist, zur Übertragung von Eingabeinformationen und Befehlsauswahlen an Prozessor 1001. Weiterhin wird eine optionale Eingabe-/Ausgabe-(E/A)-Vonichtung 1008 verwendet, um das Computersystem 1090 an beispielsweise ein Netzwerk zu koppeln.
  • Die Anzeigevorrichtung 1005, die vom Computersystem 1090 verwendet wird, kann eine Flüssigkristallvorrichtung, eine Kathodenstrahlröhre oder eine andere Anzeigevorrichtung sein, die geeignet ist, um grafische Bilder und alphanumerische Zeichen zu erzeugen, die für den Benutzer erkennbar sind. Die Cursorsteuerungsvorrichtung 1007 gestattet es dem Computerbenutzer, dynamisch die zweidimensionale Bewegung eines sichtbaren Symbols (Zeiger) auf einem Anzeigebildschirm der Anzeigevorrichtung 1005 zu signalisieren. Viele Implementierungen der Cursorsteuerungsvorrichtung sind im Fachgebiet bekannt, einschließlich eines Trackballs, einer Maus, eines Joysticks oder von Spezialtasten auf der alphanumerischen Eingabevorrichtung 1006, die imstande sind, die Bewegung einer gegebenen Richtung oder einer Weise der Verlagerung zu signalisieren. Es ist ersichtlich, dass die Cursorsteuerung 1007 auch durch Eingabe von der Tastatur unter Verwendung von Spezialtasten und Tastenfolgebefehlen gelenkt und/oder aktiviert werden kann. Alternativ kann der Cursor über Eingabe von einer Zahl von speziell angepassten Cursorlenkvorrichtungen gelenkt und/oder aktiviert werden.
  • 2A zeigt ein funktionales Blockdiagramm einer Ausführungsform des Client/Server-Computersystemnetzes 100 von 1A nach einer Ausführungsform der vorliegenden Erfindung. In dieser Ausführungsform, auch unter Bezug auf 1A, stellt die vorliegende Erfindung einen sicheren Datenstrom 118 bereit, der die Datendatei 120 vom Server-Computersystem 110 zum Client-Computersystem 102 überträgt. Die Datendatei 120 ist ursprünglich im Daten-Warehouse 113a oder in der Betriebsdatenbank 116a in der Server-Massenspeichervorrichtung 112 gespeichert und wird zur Client-Massenspeichervorrichtung 170 übertragen.
  • Zur Vereinfachung der Diskussion wird Kommunikation als vom Server 110 zum Client 102 erfolgend dargestellt; es ist jedoch ersichtlich, dass Kommunikation gleichermaßen vom Client 102 zum Server 110 erfolgen kann. In diesem letztgenannten Fall würden die Pfeile, die die Richtung des Datenflusses angeben, in die entgegen gesetzte Richtung zeigen, der „Ausgabekanal" würde sich auf den Kanal am Client 102 beziehen und der „Eingabekanal" würde sich auf den Kanal am Server 110 beziehen.
  • 2B zeigt ein funktionales Blockdiagramm, das zusätzliche Details des Client/Server-Computersystemnetzes 100 nach einer Ausführungsform der vorliegenden Erfindung vermittelt. Das Listenerobjekt 130a ist vorgesehen, um eine eingehende Verbindungsanforderung zu empfangen und einen Sitzungs-Thread 140a als Reaktion darauf hervorzubringen (genauer ausgedrückt, ruft Listenerobjekt 130a das Sitzungsmanagerobjekt 138a auf, um den Sitzungs-Thread 140a zu erzeugen). Das Server-Listenerobjekt 130a empfängt an einem gut bekannten Port 132 eine eingehende Anforderung 134 vom Client-Computersystem 102. In der vorliegenden Ausführungsform wird die Anforderung 134 in dem auf dem Client 102 ausgeführten Sitzungs-Thread 140b erzeugt. Die Anforderung 134 ist eine Anforderung zur Herstellung einer Client-Socket-Verbindung 136 und zur Übertragung von Daten von der Server-Massenspeichervorrichtung 112 (z. B. Datendatei 120) zum Client-Computersystem 102.
  • Eine Anforderung 134 kann von einer entfernten Vorrichtung im Netz 100 oder von einer lokalen Vorrichtung empfangen werden. Das heißt, dass eine Anforderung 134 beispielsweise über das Internet von einer Vorrichtung empfangen werden kann, die sich außerhalb einer Firewall oder eines Unternehmens-Intranets (z. B. ein lokales Netz) befindet, oder die Anforderung 134 kann von einer lokalen Vorrichtung innerhalb des Unternehmens-Intranets stammen. Anstatt zu versuchen, die Quelle der Anforderung 134 zu bestimmen, werden in der vorliegenden Ausführungsform jedoch alle Anforderungen in verschlüsselter Form geliefert/empfangen.
  • In der vorliegenden Ausführungsform werden alle Computer im Netzwerk 100 als unsicher angesehen. Alle Schlüssel werden in verschlüsselter Form gespeichert, wobei ein Kennwort-basierender Entschlüsselungsalgorithmus zur Entschlüsselung und Verschlüsselung von Schlüsseln verwendet wird.
  • Alle registrierten Benutzer, die den Datenabrufprozess der vorliegenden Erfindung implementieren möchten, haben ihr eigenes Konto. Schlüssel für jedes Konto werden in separaten Dateien gespeichert. Jede Datei hat den Namen des Kontos und wird unter Verwendung des Kontenkennworts verschlüsselt. Alle registrierten Kontenschlüsseln werden in einem zentralen Verzeichnis gespeichert (nicht dargestellt) und werden unter Verwendung eines Verzeichniskennworts verschlüsselt. In der vorliegenden Ausführungsform wird das Verzeichnis mit einem einzelnen Kennwort initialisiert, das durch ein Administratorkennwort verborgen und gesichert ist. Das Verzeichniskennwort wird für alle gesicherten (verschlüsselten) Objekte verwendet.
  • Das zentrale Verzeichnis ist im Hauptspeicher des Servers 110 gespeichert (und gleichermaßen ist ein zentrales Verzeichnis im Hauptspeicher des Clients 102 gespeichert). Das zentrale Verzeichnis verfügt über die Fähigkeit zur Verschlüsselung jedes gespeicherten Objekts unter Verwendung von Kennwort-basierender Verschlüsselung. In einer Ausführungsform fragt das zentrale Verzeichnis das Objekt, ob es Verschlüsselung benötigt.
  • In der vorliegenden Ausführungsform gibt es drei Verzeichnis-Objektarten: ein Objekt zur Repräsentation eines Kontos, ein Objekt, das ein Verzeichniskennwort für das administrative Konto repräsentiert, und ein Objekt zur Repräsentation jeder Sitzungsinstanz für Wiederherstellungszwecke. Das Objekt, das ein Konto repräsentiert, enthält einen Schlüssel (oder ein Kennwort), der verwendet wird, um eine sichere Verbindung zwischen dem Client 102 und dem Server 110 der 2A und 2B herzustellen. Das Objekt, das das Verzeichniskennwort für das administrative Konto repräsentiert, wird verwendet, um Zugang zu allen Verzeichnisobjekten zu erhalten, und ist durch ein Administratorkonto-Kennwort gesichert. Das Objekt, das jede Sitzungsinstanz repräsentiert, enthält alle Informationen, die für Sitzungswiederherstellung benötigt werden (siehe 6A, 6B und 6C unten).
  • Wieder mit Bezugnahme auf 2B, ist das Listenerobjekt 130a in der vorliegenden Ausführungsform Bestandteil einer Mehrfach-Thread-Software-Anwendung, die zur parallelen Ausführung in Koordination mit anderen Threads der vorliegenden Erfindung fähig ist. Ein „Thread" ist ein Bestandteil der Anwendung, der unabhängig von den anderen Teilen, die unter Umständen gleichzeitig in diesem Parallelmodus ausgeführt werden, ausgeführt werden kann. Parallele Ausführung von Threads wird in dieser Ausführungsform der vorliegenden Erfindung erreicht, indem so viel wie möglich der Anwendungsausführung zwischen den verschiedenen Threads geteilt wird. Eine derartige Mehrfach-Threading-Ausführungsform erhöht die Geschwindigkeit der Datenübertragung in der vorliegenden Erfindung.
  • Das Listenerobjekt 130a stellt eine Client-Socket-Verbindung 136 an dem gut bekannten Port 132, die vom Client-Computersystem 102 angefordert wurde, am Server-Computersystem 110 her. Wenn eine Benutzer-Anforderung 134 empfangen wird, ruft der Listener-Thread 130a das Sitzungsmanagerobjekt 138a auf, um einen neuen Sitzungs-Thread zu erzeugen und die Handhabung der Benutzeranforderung zu beginnen. Nach der Ausführung dieser Aufgaben kehrt das Listenerobjekt 130a zurück zur Aufgabe, auf eine andere eingehende Benutzeranforderung zu horchen (z. B. eine andere Anforderung vom Client-Computersystem 102 oder von einem anderen Computersystem im Netzwerk 100 von 1A).
  • In der vorliegenden Ausführungsform bringt das Sitzungsmanagerobjekt 138a von 2B den Sitzungs-Thread 140a hervor, der einen Befehl von der Verbindung liest, die vom Listenerobjekt 130a hergestellt wurde, den Befehl analysiert und ihn ausführt (siehe auch 5 unten). Das Sitzungsmanagerobjekt 138a enthält (verfolgt) Informationen hinsichtlich aller laufenden Sitzungen.
  • Eine Sitzung 140a enthält ein Kanalobjekt mit mehreren Threads (z. B. Kanal 139a), über den die Daten tatsächlich übertragen werden. Das Kanalobjekt 139a ist vorgesehen, um Daten in einer sicheren Weise zu übertragen. Zusätzliche Informationen in Bezug auf das Kanalobjekt 139a werden unten in Verbindung mit den Figwen 3A, 3B, 4A und 4B gegeben.
  • Bezug nehmend auf 2B, wird aus Sicherheitsgründen nur Clients, die zum Zugriff auf das Daten-Warehouse 113a und die Betriebsdatenbank 116 befugt sind, gestattet, die Datendatei 120 zu empfangen. Ein in der vorliegenden Erfindung inkorporiertes Protokoll ist zur Authentifizierung vorgesehen, dass die eingehende Anforderung 134 von einem Client-Computersystem 102 stammt, das zum Empfang der Datendatei 120 befugt ist. Authentifizierungsprotokolle können Kennwörter, intelligente Token oder andere gut bekannte Techniken enthalten.
  • In der vorliegenden Ausführungsform stellt das Sitzungsmanagerobjekt 138a die Anwendungsprogrammschnittstellen (APIs) zur Überwachung und Verwaltung von Sitzungen bereit. Ein Objekt ist ein Anwendungsdatenelement, das Befehle für die mit ihm durchzuführenden Operationen enthält. Nachdem das Listenerobjekt 130a eine Benutzeranforderung 134 empfängt, empfängt das Sitzungsmanagerobjekt 138a einen Aufruf vom Listenerobjekt 130a zum Erzeugen und Starten eines Sitzungs-Threads 140a zur Verarbeitung von Benutzerbefehlen. In dieser Ausführungsform bringt das Sitzungsmanagerobjekt 138a den Sitzungs-Thread 140a hervor.
  • Das Sitzungsmanagerobjekt 138a stellt die Funktionalität zur Erzeugung einer eindeutigen Identifizierung (ID) für eine Sitzung und zur Verwaltung von Sitzungsprotokollen für Wiederherstellungszwecke bereit. Die vom Sitzungsmanagerobjekt 138a bereitgestellten APIs enthalten eine API zum Erzeugen einer Sitzung, eine API zum Ausführen der Sitzung, eine API zum Anhalten der Sitzung durch Übergabe der Sitzungs-ID, eine API zum Aktualisieren des Status der Sitzung durch Übergabe der Sitzungs-ID, eine API zum Abfragen von Sitzungsinformationen und eine API zum Wiederherstellen einer fehlgeschlagenen Sitzung.
  • In der vorliegenden Ausführungsform weist das Sitzungsmanagerobjekt 138a, nachdem es eine neue Sitzung erzeugt hat, dieser Sitzung eine eindeutige ID zu. Das Sitzungsmanagerobjekt 138a speichert (z. B. in einer internen Hash-Tabelle) ein Sitzungsinformationenobjekt. Das Sitzungsmanagerobjekt 138a übergibt bei der Erzeugung einer neuen Sitzung seinen eigenen Verweis als einen Initialisierungsparameter an die Sitzung. Die Sitzung verwendet diesen Verweis dann in Kombination mit ihrer eindeutigen Sitzungs-ID zum Aufrufen einer Sitzungsmanager-Callback-Funktion zur Bereitstellung einer Aktualisierung ihrer Statusinformationen für das Sitzungsmanagerobjekt 138a.
  • Damit empfängt das Listenerobjekt 130a des Servers 110 in der vorliegenden Ausführungsform der vorliegenden Erfindung eine eingehende Verbindungsanforderung vom Client 102 und leitet die eingehende Verbindungsanforderung weiter an das Sitzungsmanagerobjekt 138a. Das Sitzungsmanagerobjekt 138a des Servers 110 bringt den Sitzungs-Thread 140a hervor, der den Befehl von der Verbindungsanforderung 134 liest (z. B. einen Befehl, der Übertragung der Datendatei 120 von 2A anfordert). Der Befehl enthält alle Informationen, die erforderlich sind, um die Datendatei 120 zu öffnen und die Datendatei 120 durch eine Verbindung zwischen dem Client 102 und dem Server 110 zu senden. Die Sitzung 140a analysiert den Befehl und erzeugt und initiiert ein Kanalobjekt 139a (mit seinen Threads) und führt den Kanal aus. Das Kanalobjekt 139a wird mit der gegenwärtig eingerichteten Netzverbindung zwischen dem Server 110 und dem Client 102 initialisiert.
  • Das Kanalobjekt 139a repräsentiert den Satz von Objekten, die zum Senden und Empfangen einer Datei (z. B. Datendatei 120) erforderlich sind. In der vorliegenden Ausführungsform enthält dieser Satz von Objekten die Lese-, Komprimierungs-, Verschlüsselungs-, Dekomprimierungs-, Entschlüsselungs- und Schreibobjekte, die in Verbindung mit den 3A3B und 3A4B beschrieben werden.
  • An der Clientseite empfängt das Listenerobjekt 139b die eingehende Verbindung vom Server 110 und leitet diese Verbindung weiter an den Verbindungsmanager 138b. Der Verbindungsmanager 138b bringt eine Sitzung 140b hervor. Die Sitzung 140b liest den Befehl von der Verbindung. Dieser Befehl enthält alle Informationen, die erforderlich sind, um die Verbindung mit dem Server 110 herzustellen, die Datendatei 120 zu lesen und die Datendatei 120 zum Client 102 übertragen zu lassen. Die Sitzung 140b analysiert den Befehl und führt das Folgende aus: Herstellen einer Verbindung mit dem Server 110, Senden des Befehls zum Starten der Übertragung der Datendatei 120 und Initialisieren und Ausführen des Kanals.
  • 3A zeigt den Datenfluss durch eine Ausführungsform eines Ausgabekanalobjekts 139a nach der vorliegenden Erfindung. In dieser Ausführungsform umfasst der Ausgabekanal 139a vier Datenumwandlungs-Threads oder -Objekte: Lesekanalobjekt 142a, Komprimierungskanalobjekt 146, Verschlüsselungskanalobjekt 156 und Schreibkanalobjekt 152a. Die Datenumwandler (Lesekanalobjekt 142a, Komprimierungskanalobjekt 146, Verschlüsselungskanalobjekt 156 und Schreibkanalobjekt 152a) können parallel arbeiten (z. B. können sie jeweils ihre eigenen Threads haben). Der Ausgabekanal 139a umfasst außerdem das Blockmanagerobjekt 154a.
  • Das Blockmanagerobjekt 154a enthält mehrere Datenblöcke (z. B. Vektoren von Datenblöcken). Ein Datenblock ist ausgeführt, um Byteanordnungen zwischen Umwandlungen zu speichern. In der vorliegenden Ausführungsform ist jeder Datenblock mit einem Datenumwandlungsobjekt assoziiert, und nur dieses Objekt kann in den Datenblock schreiben; ein Datenumwandlungsobjekt kann jedoch mit mehreren Datenblöcken assoziiert sein. Eine Größe eines Datenblocks kann variieren, so dass, wenn ein Datenumwandlungsobjekt feststellt, dass es Ausgabedaten nicht in dem Datenblockpuffer unterbringen kann, das Datenumwandlungsobjekt einen neuen (größeren) Puffer erzeugen kann, der den alten (kleineren) Puffer ersetzt. Außerdem kann beispielsweise ein Datenblock, der komprimierte Daten enthält, kleiner sein als einer, der unkomprimierte Daten enthält.
  • Das Blockmanagerobjekt 154a steuert die Gesamtzählung von Datenblöcken für jedes Datenumwandlungsobjekt; das heißt, das Blockmanagerobjekt 154a verfügt über einen Parameter, der die Zahl der Datenblöcke pro Datenumwandlungsobjekt begrenzt. Im Allgemeinen werden etwa vier Datenblöcke pro Datenumwandlungsobjekt spezifiziert. Wenn ein Datenumwandlungsobjekt einen Datenblock anfordert, aber die Zahl der verfügbaren Datenblöcke gleich dem für das Umwandlungsobjekt zulässige Maximum ist (das heißt, dass keine freien Datenblöcke vorhanden sind), warten das Blockmanagerobjekt 154a und das Datenumwandlungsobjekt, bis ein Datenblock freigegeben wird.
  • Weiterhin Bezug nehmend auf 3A, liest in der vorliegenden Ausführungsform das Lesekanalobjekt 142a einen Teil der Datendatei 120 und schreibt diesen Teil in einen ersten Datenblockpuffer im Hauptspeicher des Server-Computersystems 110. Die Datendatei 120 ist normalerweise eine große Datei. Indem nur ein Teil der Datei gelesen wird, können nachgeordnete Umwandlungen hinsichtlich Komprimierung und Verschlüsselung parallel ablaufen, während anschließende Teile der Datendatei 120 gelesen und in den ersten Datenblockpuffer geschrieben werden.
  • Das Komprimierungskanalobjekt 146 liest die Daten in dem ersten Datenblockpuffer, wandelt sie um (komprimiert sie) und schreibt die komprimierten Daten in einen zweiten Datenblockpuffer. Das Komprimierungskanalobjekt 146 codiert die in der Datendatei 120 enthaltenen Daten in einer Weise, die sie kompakter machen.
  • Das Verschlüsselungskanalobjekt 156 liest die komprimierten Daten aus dem zweiten Datenblockpuffer, verschlüsselt sie und schreibt sie in einen dritten Datenblockpuffer.
  • Das Schreibkanalobjekt 152a liest den verschlüsselten Datenblock und schreibt ihn in den Netzwerk-Socket-Strom (in den Eingabekanal 139b; 3B).
  • In der vorliegenden Ausführungsform funktioniert der Ausgabekanal 139a wie folgt: Der Ausgabekanal 139a empfängt die Datendatei 120. Die Datendatei 120 kann vom Ausgabekanal 139a in ihrer Gesamtheit empfangen und dann in kleinere Datenblöcke aufgeteilt werden, oder jeweils ein Abschnitt der Datendatei 120 kann aus der Massenspeichervorrichtung 112 (1A) gelesen werden.
  • Das Lesekanalobjekt 142a fordert einen freien Datenblock an. Das Blockmanagerobjekt 154a sucht nach einem freien Datenblock, und wenn kein derartiger Block vorhanden ist, erzeugt das Blockmanagerobjekt 154a einen neuen Block, kennzeichnet ihn als freigegeben und weist ihn dem Lesekanalobjekt 142a zu. Das Lesekanalobjekt 142a schreibt Daten aus der Datendatei 120 in den Datenblock und kennzeichnet die Daten als bereit zur Verschlüsselung. Das Komprimierungskanalobjekt 146 empfängt diesen Datenblock vom Blockmanagerobjekt 154a und fordert einen freien Datenblock an (für seine Ausgabe). Das Blockmanagerobjekt 154a erzeugt einen neuen Datenblock, kennzeichnet ihn als freigegeben und weist ihn dem Komprimierungskanalobjekt 146 zu.
  • Parallel dazu fordert das Lesekanalobjekt 142a einen anderen Datenblock an, und der Blockmanager 154a erzeugt, wie oben beschrieben, einen neuen Block, kennzeichnet ihn als freigegeben und weist den neuen Datenblock dem Lesekanalobjekt 142a zu. Das Lesekanalobjekt 142a kann dann einen anderen Abschnitt der Datendatei 120 in diesen Block schreiben und ihn als bereit zur Komprimierung kennzeichnen.
  • In der Zwischenzeit komprimiert (codiert) das Komprimierungskanalobjekt 146 die in seinem jeweiligen Datenblock enthaltenen Daten, kennzeichnet sie als bereit zur Verschlüsselung und gibt seinen jeweiligen Datenblock frei. Das Verschlüsselungskanalobjekt 156 empfängt diesen (komprimierten) Datenblock vom Blockmanagerobjekt 154a und fordert einen freien Block für seine Ausgabe an. Das Blockmanagerobjekt 154a erzeugt einen neuen Datenblock, kennzeichnet ihn als freigegeben und weist ihn dem Verschlüsselungskanalobjekt 156 zu.
  • Das Verschlüsselungskanalobjekt 156 verschlüsselt die in seinem jeweiligen Datenblock enthaltenen Daten, kennzeichnet sie als bereit zum Schreiben und gibt seinen jeweiligen Datenblock frei. Das Schreibkanalobjekt 152a empfängt den codierten (komprimierten) und verschlüsselten Datenblock vom Blockmanagerobjekt 154a und schreibt in den Netzwerk-Socket-Ausgabestrom 307.
  • Der oben beschriebene Prozess wird wiederholt, bis das Lesekanalobjekt 142a den letzten Datenblock in der Datendatei 120 liest. Jeder Datenblock wird durch den Ausgabekanal 139a geleitet, wobei Datenblöcke erzeugt und freigegeben werden, wie es von den jeweiligen Umwandlungsobjekten erfordert wird. In dieser Weise kann die Zahl der Datenblöcke reduziert werden, so dass Speichenessourcen nicht unnötigerweise verbraucht werden.
  • In dieser Ausführungsform der vorliegenden Erfindung werden Mittel, die Durchschnittsfachleuten im Fachgebiet gut bekannt sind, eingesetzt, um zu gewährleisten, dass die Datendatei 120 vollständig und richtig an den Client 102 übertragen wurde.
  • Damit werden die Ziele der vorliegenden Erfindung erreicht. Eine Datendatei 120 wird auf Anforderung vom Server-Computersystem 110 an mindestens ein Computersystem, das sich entfernt vom Server-Computersystem 110 befindet (z. B. Client 102), gesandt. Die Datenübertragung wird sicher, schnell und zuverlässig durchgeführt.
  • 3B zeigt den Datenfluss durch eine Ausführungsform eines Eingabekanals 139b der vorliegenden Erfindung. Wie in den 2B und 3B gezeigt, können in einem anderen Aspekt der vorliegenden Erfindung die Operationen des Server-Computersystems 110 im Client-Computersystem 102 gespiegelt werden. Ein Netzwerkstrom von komprimierten/verschlüsselten Datenblöcken 307 wird vom Server-Computersystem 110 durch das Client-Computersystem 102 empfangen und wird entschlüsselt, dekomprimiert und schließlich in die Datendatei 120 zusammengesetzt. Alternativ können die Datenblöcke vom Server 110 als Ganzes durch den Client 102 empfangen werden.
  • An der Clientseite liest das Lesekanalobjekt 142b formatierte (verschlüsselte und komprimierte) Daten vom Netzwerk-Eingabestrom 307. Ein Entschlüsselungskanalobjekt 164 liest Daten aus einem Datenblock in Blockmanagerobjekt 154b, entschlüsselt die Daten und schreibt die Daten in einen Datenblock in Blockmanagerobjekt 154b.
  • Ein Dekomprimierungskanalobjekt 158 liest Daten aus einem Datenblock in Blockmanagerobjekt 154b, dekomprimiert (decodiert) die Daten und schreibt die Daten in einen Datenblock in Blockmanagerobjekt 154b. Das Schreibkanalobjekt 152 schreibt die Daten in den Ausgabestrom für Datendatei 120 in beispielsweise die Massenspeichervorrichtung 170 (2A).
  • Die Datenumwandler (Lesekanalobjekt 142b, Entschlüsselungskanalobjekt 164, Dekomprimierungskanalobjekt 168 und Schreibkanalobjekt 152) funktionieren ähnlich wie die, die oben in Verbindung mit 3A beschrieben wurden. Mittel, die Fachleuten gut bekannt sind, können eingesetzt werden, um zu gewährleisten, dass die Datendatei 120 vollständig und richtig übertragen wurde.
  • Damit werden die Ziele der vorliegenden Erfindung auch in der clientseitigen Ausführungsform der vorliegenden Erfindung erreicht. Eine Datendatei 120 wird auf Anforderung des Client-Computersystems 102 vom Server-Computersystem 110 an das Client-Computersystem 102 gesandt. Die Datenübertragung wird sicher, schnell und zuverlässig durchgeführt.
  • Die vorstehende Diskussion veranschaulicht ein „Ziehen" von Daten vom Server-Computersystem 110 durch das Client-Serversystem 102. Wie erkennbar ist, könnte die Datenübertragung in einem anderen Aspekt der vorliegenden Erfindung durch „Schieben" von Daten vom Server-Computersystem 110 erfolgen, wobei das Server-Computersystem 110 ein „horchendes" Client-Computersystem 102 anweisen würde, Daten zu empfangen. Geeignete Socket-Verbindungen, Threads und Objekte würden nach der vorliegenden Erfindung erzeugt werden und Daten würden über das Computernetz vom Server-Computersystem 110 zum Client-Computersystem 102 übertragen werden.
  • Die 4A und 4B zeigen alternative Ausführungsformen des Ausgabekanals 139a und des Eingabekanals 139b der 3A und 3B (die alternativen Ausführungsformen sind als Ausgabekanal 122 und Eingabekanal 124 bezeichnet). Die Operation und Funktion der nummerierten Elemente in den 4A und 4B ist die gleiche wie die von gleich nummerierten Elementen in den 3A bzw. 3B.
  • In der Ausführungsform von 4A wird ein Streaming-Mechanismus zum Komprimieren der Datendatei 120, Verschlüsseln der Datendatei 120 und dann Senden der Datendatei 120 über das Netzwerk zum Client 102 oder einer anderen entfernten Vorrichtung verwendet. Anstatt dass die Datei in Blöcke aufgeteilt wird, wie oben in Verbindung mit 3A beschrieben, und jeder Block als eine kleine Datei behandelt wird, kann die Datei dadurch stattdessen als eine zusammenhängende Datei behandelt werden.
  • Das Komprimierungskanalobjekt 164 und das Verschlüsselungskanalobjekt 156 können eine Ausgabe erzeugen, die sich in der Größe von ihrer Eingabe unterscheidet. Die Stufenausgabeströme 186 und 188 schreiben Daten in einen Ausgabedatenblockpuffer, bis dieser Block voll ist oder bis keine Daten zum Schreiben mehr vorhanden sind. Wenn der aktuelle Ausgabedatenblock voll ist, geben die Ausgabeströme 186 und 188 an, dass der aktuelle Block bereit zum Lesen durch das nächste Umwandlungsobjekt ist, und fragen das Blockmanagerobjekt 154a nach dem nächsten verfügbaren Datenblock. Durch Akkumulation von Streaming-Teilen der Datendatei 120 vom Komprimierungskanalobjekt 146 und Verschlüsselungskanalobjekt 156 kann ein besseres Management von Datenblockpuffern durch das Blockmanagerobjekt 154 realisiert werden.
  • Beispielsweise kann das Komprimierungskanalobjekt 146 zu einem Komprimierungsverhältnis von 10:1 fähig sein. Anstatt eine Ausgabedatenblockpuffer-Größe gleich einem Zehntel der Größe des Eingabepuffers zu spezifizieren, kann eine bessere Nutzung der Datenblockpuffer erreicht werden, indem zehn Teil von komprimierten Datenblöcken in dem Stufenausgabestrom 186 akkumuliert werden, bevor in den Ausgabedatenblockpuffer geschrieben wird, so dass der Ausgabepuffer die gleiche Größe wie die Eingabepuffergröße aufweist.
  • In 4B akkumulieren, ähnlich der obigen Diskussion, der Stufenausgabestrom 190 und der Stufenausgabestrom 192 Daten für das Entschlüsselungskanalobjekt 164 bzw. das Dekomprimierungskanalobjekt 158. Zusätzlich wird der Stufeneingabestrom 194 im Eingabekanal 124 vorgesehen, um den gesamten Strom von komprimierten Datenblöcken zu empfangen, bis das Ende der Datendatei 120 erreicht ist, weil das Dekomprimierungskanalobjekt 168 unter Umständen eine vollständige komprimierte Datendatei 120 zur Operation benötigt.
  • 5 zeigt den Datenfluss durch eine Ausführungsform eines Sitzungs-Threads 140a in einem Server-Computersystem 110 (2B) nach der vorliegenden Erfindung. Es ist erkennbar, dass ein ähnlicher Datenfluss durch einen Sitzungs-Thread 140b in einem Client-Computersystem 102 (2B) stattfindet. Die Sitzungs-Threads 140a und 140b werden unter der Führung der Sitzungsmanagerobjekte 138a bzw. 138b ausgeführt (siehe 2B).
  • Bezug nehmend auf 5, wird ein Sitzungs-Thread 140a für jede eingehende Anforderung 134 erzeugt. Anforderungen können Befehle wie Statusbefehle, Befehle zum Senden einer oder mehrerer Dateien (z. B. Datendatei 120) an eine oder mehrere entfernte Vorrichtungen (z. B. Client 102 und Befehle zum Empfangen einer oder mehrerer Dateien von einer entfernten Vorrichtung enthalten. In einer Ausfülhrungsform verwenden die Befehle in Anforderung 134 die Extensible Markup Language (XML).
  • In dieser Ausführungsform überprüft das Protokoll 174 die eingehende Anforderung 134 und leitet sie zum XML-Befehlsübersetzer 173. Das Protokoll 174 wird verwendet, um Befehle in verschlüsselter Form zu senden und zu empfangen, und wird für Benutzerauthentifizierung verwendet. Das Protokoll 174 wird von der Channel Factory 182 verwendet, um einen Kommunikations-Socket für einen Kanal zu öffnen (z. B. Eingabekanäle 139b oder 124 oder Ausgabekanäle 139a oder 122 der 3B, 4B, 3A bzw. 4A).
  • Fortfahrend unter Bezugnahme auf 5, analysiert das XML-Befehlsübersetzerobjekt 173 die eingehende Anforderung 134, erzeugt optimierte Tasks niedriger Stufe und setzt die Tasks mit assoziierten Parametern in die Task-Tabelle 176 ein. Jeder Parameter wird unter Verwendung der Task „Deklarieren" (nachstehend erwähnt) an alle Tasks übergeben, die ihn benötigen, so dass, wenn ein Parameter deklariert wird, er an mehreren Stellen und in mehreren Tasks gemeinsam genutzt wird, wenn er benötigt wird.
  • Die eingehende Anforderung 134 wird in eingehende Tasks niedriger Stufe übersetzt, weil die Zahl dieser Tasks begrenzt werden kann, während die Zahl von XML-Befehlen in der eingehenden Anforderung 134 groß sein könnte. Die XML-Befehle können jedoch in interne Tasks niedriger Stufe übersetzt werden, um die Implementierung zu erleichtern und um die Implementierung umfangreicher zu machen. Außerdem erleichtert die Verwendung von internen Tasks niedriger Stufe anstelle von XML-Befehlen die parallele Verarbeitung und vermeidet das Erfordernis nach redundanten Verarbeitungsschritten.
  • Die internen Tasks niedriger Stufe umfassen folgende, sind aber nicht darauf beschränkt:
    Verbinden: zum Herstellen einer Verbindung zwischen zwei Vorrichtungen (z. B. Server 110 und Client 102), zum Erstellen und Initialisieren des Protokolls 174 und zum Weiterleiten eines Initialisierungsbefehls an das Sitzungsmanagerobjekt 138a;
    Kanal erzeugen: zum Erzeugen und Initialisieren eines Kanals;
    Kanal ausführen: zum Durchführen der Dateiübertragung;
    Extern ausführen: zum Ausführen eines externen Befehls an der lokalen Vorrichtung;
    Sitzungsstatus holen: zum Erhalten eines Statusberichts zu einer oder mehr Sitzungen;
    Sitzung anhalten: zum Anhalten einer Sitzung;
    Deklarieren: zum Einfügen einer Reihe in einen separaten Variablenvektor, der von Taskabwickler 178 verwaltet wird (der Variablenvektor stellt einen Mechanismus bereit, um Objekte in mehreren Tasks gemeinsam zu nutzen);
    Warten: zum Warten, bis ein Kanal die Übertragung einer Datei oder von Dateien abgeschlossen hat;
    Beenden: zum Beenden einer Sitzung;
    Konto einrichten: zum Einrichten eines neuen Kontos;
    Konto bearbeiten: zum Bearbeiten eines bestehenden Kontos; und
    Konto entfernen: zum Entfernen eines bestehenden Kontos.
  • Der XML-Befehlsübersetzer 173 setzt diese Tasks zur Ausführung durch den Taskabwickler 178 in die Task-Tabelle 176 ein. Die Task-Tabelle 176 ist ein Speicherobjekt und umfasst eine Hash-Tabelle der Tasks.
  • Der Taskabwickler 178 führt die Tasks aus der Task-Tabelle 176 in einer gegebenen Reihenfolge aus. Der Taskabwickler 178 verwendet eine API des Sitzungsmanagerobjekts 138a (2B) zum Ausführen der Tasks. Der Taskabwickler 178 vollführt die Ausführung in einer Schleife durch die Task-Tabelle 176, bis der Befehl Beenden gefunden wird. Nachdem der XML-Befehlsübersetzer 173 eine Task-Tabelle 176 für einen Befehl 141 erzeugt, übernimmt der Taskabwickler 178 die Steuerung des Sitzungs-Threads und beginnt mit der Ausführung der Tasks in dem Sitzungs-Thread. Der Taskabwickler 178 aktualisiert außerdem die Sitzungsstatistik für die Wiederherstellungsoption, die nachstehend in Verbindung mit den 6A, 6B und 6C beschrieben wird.
  • Bezug nehmend auf 5, wird ein Kanalobjekt (z. B. Kanalobjekt 139a und auch Kanalobjekt 122 von 4A) durch eine Channel Factory 182 erzeugt und initialisiert. In der vorliegenden Ausführungsform initialisiert die Channel Factory 182 das Kanalobjekt 139a mit Eingabe- und/oder Ausgabeströmen.
  • Fortfahrend unter Bezugname auf 5, repräsentiert Kanalobjekt 139a den Satz von Datenumwandlungsobjekten, die zum Senden und Empfangen einer Datei (z. B. Datendatei 120) benötigt werden. In der vorliegenden Ausführungsform enthält der Satz von Datenumwandlungsobjekten die Lese-, Komprimierungs-, Verschlüsselungs-, Dekomprimierungs-, Entschlüsselungs- und Schreibobjekte, die in Verbindung mit den 3A3B und 4A4B beschrieben wurden. Das Protokoll 174 leitet ausgeführte Tasks zu einer entfernten Sitzung 184.
  • Die 6A, 6B und 6C veranschaulichen einen anderen Aspekt der vorliegenden Erfindung hinsichtlich der Wiederherstellung der Datenübertragung nach einem temporären Verlust und/oder Ausfall einer Netzverbindung. Da nach der vorliegenden Erfindung große Datenmengen übertragen werden, ist Wiederherstellung eine wichtige Überlegung. In der vorliegenden Ausführungsform werden zwei Wiederherstellungsmodi in Betracht gezogen: automatische Wiederherstellung der Netzverbindung und manuelle Sitzungswiederherstellung.
  • Automatische Wiederherstellung der Netzverbindung bedeutet, dass sowohl der Eingabekanal 139b als auch der Ausgabekanal 139a (2B) ausgeführt werden, aber die Netzverbindung verloren wurde oder ausgefallen ist. In diesem Fall kann die Netzverbindung automatisch wiederhergestellt werden.
  • Wenn eine Netzverbindung ausfällt, werden beide Kanäle über eine „Ausnahme" benachrichtigt. Wenn ein Kanal eine Ausnahme empfängt, ruft er die API für seinen jeweiligen Sitzungsmanager (z. B. Sitzungsmanagerobjekt 138a oder 138b von 2B) auf, um die Verbindung wiederherzustellen. Die API gibt einen neuen Sitzungs-Thread für die Verbindung zurück, wenn die Verbindung wiederhergestellt werden kann, oder eine NULL, wenn die Verbindung nicht wiederhergestellt werden kann.
  • Bezug nehmend auf die 6A, 6B und 6C, sind zwei Sitzungs-Threads an dem Wiederherstellungsprozess beteiligt. In 6A erzeugt Sitzungsmanagerobjekt 138a (2B) die Sitzung 1 (z. B. Sitzungs-Thread 140a) im Server-Computersystem 110 und initiiert die Verbindung mit dem Client-Computersystem 102. Das Sitzungsmanagerobjekt 138b (2B) empfängt die Anforderung zum Starten einer Sitzung und erzeugt Sitzung 1 (z. B. Sitzungs-Thread 140b) im Client-Computersystem 102.
  • In 2B ist die Verbindung verloren gegangen. In 6C sendet das Sitzungsmanagerobjekt 138a, nachdem die Verbindung verloren gegangen ist und der initiierende Sitzungsmanager (Sitzungsmanagerobjekt 138a in Server 110) aufgerufen wird, um die Sitzung wiederherzustellen, eine Anforderung an den Client 102 (Sitzungsmanagerobjekt 138b), um die Netzverbindung für Sitzung 1 wiederherzustellen. Wenn der Client 102 (speziell Sitzungsmanagerobjekt 138b) die Anforderung vom Server 110 empfängt, bringt er einen zweiten Sitzungs-Thread (Sitzung 2, z. B. Sitzungs-Thread 140c) hervor. Die Sitzung 2 übergibt die Verbindung an die wartende Sitzung 1 im Client 102. Sobald die Verbindung wiederhergestellt ist, fahren beide Kanäle (Ausgabekanal 139a und Eingabekanal 139b) fort, Daten ab dem Punkt, an dem sie angehalten haben, zu übertragen.
  • Informationen über eine Sitzung werden in den Sitzungsmanagerobjekten 138a im Server 110 gespeichert. Der Sitzungsmanager 138a speichert alle Sitzungsparameter und die Zählung der Bytes von Daten, die vor dem Ausfall in Sitzung 1 geschrieben wurden. Folglich kann der Lesevorgang das Lesen von dem richtigen Byteversatz starten, und der Schreibvorgang kann fortfahren, indem er die Datenblöcke anfügt, die erzeugt, aber nicht übertragen wurden.
  • Im Wiederherstellungsmodus enthält die Task-Tabelle 176 (5) dieselben Tasks, aber bei der Ausführung werden einige der Tasks abhängig von den Ergebnissen der vorherigen Taskausführung und den Einstellungen unter Umständen übersprungen.
  • Manuelle Sitzungswiederherstellung wird eingesetzt, wenn einer der Kanäle ausfällt. Die Wiederherstellung erfolgt normalerweise nicht automatisch, weil es wünschenswert ist, zuerst die Ursache des Ausfalls zu ermitteln und zu beheben.
  • 7A zeigt ein Ablaufdiagramm der serverseitigen Schritte in einem Prozess 700 zum Übertragen von Daten über ein Netzwerk 100 (1A) nach einer Ausführungsform der vorliegenden Erfindung. In dieser Ausführungsform wird der Prozess 700 durch ein Server-Computersystem 110 (1A ), veranschaulicht durch Computersystem 1090 (1B), als computerlesbare Befehle, die in einem Speichergerät (z. B. ROM 1003, RAM 1002 oder Datenspeichervorrichtung 1004 von 1B) gespeichert sind, implementiert und durch einen Prozessor (z. B. Prozessor 1001 von 1B) ausgeführt. Es ist jedoch ersichtlich, dass einige Aspekte von Prozess 700 im Server-Computersystem 110 implementiert sein können und andere Aspekte des Prozesses 700 im Client-Computersystem 102 (1A) ausgeführt werden.
  • In Schritt 702 von 7A empfängt der Server 110 eine Anforderung 134 (2B) für eine Datendatei, die in einem Massenspeichergerät im Server gespeichert ist (z. B. Datendatei 120, die in der Massenspeichervorrichtung 112 von 1A gespeichert ist). In einer Ausführungsform horcht ein Listenerobjekt 130a (2B) nach einer derartigen Anforderung. In der vorliegenden Ausführungsform enthält die Anforderung 134 Befehle; siehe 5. In einer Ausführungsform verwendet die Anforderung 134 XML.
  • In Schritt 704 von 7B wird die Anforderung authentifiziert, um zu gewährleisten, dass die Anforderung von einem autorisierten Benutzer stammt. In einer Ausführungsform überprüft das Protokoll 174 (5) die eingehende Anforderung 134.
  • In Schritt 706 von 7B wird ein Sitzungs-Thread (z. B. Sitzungs-Thread 140a) als Reaktion auf die Benutzeranforderung 134 (2B) hervorgebracht. In einer Ausführungsform ruft das Listenerobjekt 130a (2B) das Sitzungsmanagerobjekt 138a (2B) auf, und das Sitzungsmanagerobjekt 138a erzeugt den Sitzungs-Thread 140a und weist ihm eine eindeutige ID zu. Der Sitzungs-Thread 140a liest den Befehl (die Befehle), der (die) in der Benutzeranforderung 134 enthalten ist (sind), und übersetzt die Anforderung 134 in einen Satz von eingehenden Tasks niedriger Stufe, die für den Sitzungs-Thread 140a auszuführen sind (siehe 5). Der Sitzungsmanager 138a sendet außerdem eine Nachricht an den Client 102, um ihn anzuweisen, einen Sitzungs-Thread (z. B. Sitzungs-Thread 140b) hervorzubringen. Ein Kanalobjekt 139a wird auch erzeugt und stellt den Satz von Datenumwandlungsobjekten bereit, die zum Senden und Empfangen der Datendatei 120 benötigt werden; siehe die 3A und 4A.
  • In Schritt 708 von 7A werden die Daten in der Datendatei 120 aus der Server-Massenspeichervorrichtung 112 (1A) gelesen und komprimiert, wie in Verbindung mit 3A oder 4A beschrieben.
  • In Schritt 710 von 7B werden die komprimierten Daten verschlüsselt, wie in Verbindung mit 3A oder 4A beschrieben.
  • In Schritt 712 von 7A werden die Daten an die anfordernde Vorrichtung gesandt (z. B. an Client 102 über den Netzwerkbus 107 in Netzwerk 100 von 1B) und vollständige und richtige Datenübertragung werden überprüft.
  • Die Schritte 708, 710 und 712 werden parallel für verschiedene Teile der Datendatei 120 ausgeführt.
  • 7B zeigt ein Ablaufdiagramm der clientseitigen Schritte in einem Prozess 750 zum Übertragen von analytischen Daten über ein Netzwerk nach einer Ausführungsform der vorliegenden Erfindung. In dieser Ausführungsform wird der Prozess 750 durch das Client-Computersystem 102 (1A), veranschaulicht durch Computersystem 1090 (1B), als computerlesbare Befehle, die in einem Speichergerät (z. B. ROM 1003, RAM 1002 oder Datenspeichervorrichtung 1004 von 1B) gespeichert sind, implementiert und durch einen Prozessor (z. B. Prozessor 1001 von 1B) ausgeführt. Es ist jedoch ersichtlich, dass einige Aspekte von Prozess 750 im Client-Computersystem 102 implementiert sein können und andere Aspekte des Prozesses 750 im Server-Computersystem 110 ausgeführt werden.
  • In Schritt 752 von 7B gibt eine anfordernde Vorrichtung (z. B. Client 102 von 1A) eine Anforderung 134 (2B) für eine Datendatei 120 (1A) an einen Server (z. B. Server 110 von 1A) aus.
  • In Schritt 754 von 7B empfängt der Client 102 eine Nachricht vom Server 110 (speziell vom Sitzungsmanagerobjekt 138a von 2B), die den Client 102 anweist, einen Sitzungs-Thread (z. B. Sitzungs-Thread 140b von 2B) hervorzubringen.
  • In Schritt 756 von 7B empfängt der Client 102 verschlüsselte und komprimierte Datenblöcke, die die Datendatei 120 repräsentieren, vom Server 110, siehe 3B oder 4B.
  • In Schritt 758 von 7B werden die Daten entschlüsselt, wie von 3B oder 4B beschrieben.
  • In Schnitt 760 von 7B werden die Daten dekomprimiert, wie von 3B oder 4B beschrieben.
  • Die Schritte 756, 758 und 760 werden parallel für verschiedene Teile der Datendatei 120 ausgeführt.
  • Zusammengefasst stellt die vorliegende Erfindung ein zuverlässiges, sicheres, authentifiziertes, überprüfbares und schnelles System und Verfahren für die Übertragung von großen Datenmengen, wie die in einer analytischen Anwendung verwendeten Daten (z. B. Betriebsdaten und umgewandelte Daten in einem Daten-Warehouse/Daten-Mart), über ein Netzwerk bereit.
  • Die vorstehenden Beschreibungen von spezifischen Ausführungsformen der vorliegenden Erfindung wurden für Zwecke der Veranschaulichung und Beschreibung präsentiert. Sie sollen nicht umfassend sein oder die Erfindung auf die genauen offenbarten Formen beschränken, und offensichtlich sind angesichts der obigen Lehre viele Abwandlungen und Variationen möglich. Die Ausführungsformen wurden ausgewählt und beschrieben, um die Grundsätze der Erfindung und ihre praktische Anwendung am besten zu erläutern, um dadurch andere Fachleute in die Lage zu versetzen, die Erfindung und verschiedene Ausführungsformen mit verschiedenen Abwandlungen, wie für die vorgesehene besondere Verwendung geeignet, am besten zu nutzen. Es ist beabsichtigt, dass der Rahmen der Erfindung durch die hieran beigefügten Patentansprüche und ihre Äquivalente definiert wird.

Claims (19)

  1. Verfahren zur Datenübertragung in einer multithreadingfähigen analytischen Data-Warehousing-Anwendung, die von einem Ausgangscomputersystem ausgeführt wird und zur gleichzeitigen Ausführung von mehreren Sitzungs-Threads imstande ist, das Verfahren umfassend: Empfangen (702) einer Pluralität von eingehenden Anforderungen nach analytischen Daten, die in einer Massenspeichereinheit des Ausgangscomputersystems resident sind; Authentifizieren (704) der eingehenden Anforderungen; Hervorbringen (706) einer Pluralität von Sitzungs-Threads, wobei jeder Thread konfiguriert ist zum Lesen und Analysieren eines Befehls, der über die eingehenden Anforderungen empfangen wurde, wobei der Befehl zum Senden der Daten an ein zweites Computersystem vorgesehen ist; und gleichzeitiges (708, 710, 712) Ausführen einer Pluralität von Datentransformations-Threads innerhalb jedes Sitzungs-Threads, wobei jeder Sitzungs-Thread mit einem ersten, einem zweiten und einem dritten Datenblockpuffer assoziiert ist, jeder der Sitzungs-Threads umfassend einen Leser-Thread, der Daten liest und zumindest einen Teil der Daten in den ersten Datenblockpuffer schreibt; einen Komprimierungs-Thread, der den Teil der Daten in dem ersten Datenblockpuffer zu einem komprimierten Datenblock komprimiert und den komprimierten Datenblock in den zweiten Datenblockpuffer schreibt; und einen Verschlüsseler-Thread, der den komprimierten Datenblock in dem zweiten Datenblockpuffer zu einem verschlüsselten und komprimierten Datenblock verschlüsselt und den verschlüsselten und komprimierten Datenblock in den dritten Datenblockpuffer schreibt; und einen Schreiber-Thread, der den verschlüsselten und komprimierten Datenblock in dem dritten Datenblockpuffer liest und den verschlüsselten und komprimierten Datenblock an das zweite Computersystem sendet.
  2. Verfahren nach Anspruch 1, weiter umfassend: Überprüfen, dass die Datenübertragung an das zweite Computersystem vollständig ist; und Überprüfen, dass die Datenübertragung an das zweite Computersystem ohne Fehler ist.
  3. Verfahren nach Anspruch 1, wobei das Ausgangscomputersystem und das zweite Computersystem über das Internet vernetzt sind.
  4. Verfahren nach Anspruch 1, wobei die Daten Daten umfassen, die von einer analytischen Anwendung verarbeitet wurden.
  5. Verfahren nach Anspruch 1, wobei die eingehenden Anforderungen Extensible Markup Language (XML) verwenden.
  6. Verfahren nach Anspruch 1, wobei Hervorbringen (706) jedes Sitzungs-Threads weiter umfasst: Übersetzen des Befehls in eine Pluralität von Aufgaben; Speichern der Aufgaben in einer Aufgabentabelle in einer gegebenen Reihenfolge; und Ausführen der Aufgaben der Reihe nach, bis eine Aufgabe, die den Sitzungs-Thread beendet, gefunden wird.
  7. Verfahren nach Anspruch 1, wobei der erste Datenblockpuffer und der zweite Datenblockpuffer in der Größe im Wesentlichen gleich sind und wobei ausreichend komprimierte Datenblöcke akkumuliert werden, um den zweiten Datenblockpuffer zu füllen, bevor der Komprimierer-Thread in den zweiten Datenblockpuffer schreibt.
  8. Verfahren nach Anspruch 1, wobei der zweite Datenblockpuffer und der dritte Datenblockpuffer in der Größe im Wesentlichen gleich sind und wobei ausreichend verschlüsselte und komprimierte Datenblöcke akkumuliert werden, um den dritten Datenblockpuffer zu füllen, bevor der Verschlüsseler-Thread in den dritten Datenblockpuffer schreibt.
  9. Verfahren nach Anspruch 1, weiter umfassend: Wiederherstellen einer Verbindung mit dem zweiten Computersystem, wenn eine bestehende Verbindung ausfällt; und Wiederaufnehmen der Datenübertragung zu dem zweiten Computersystem an dem Punkt in den Daten, an dem die bestehende Verbindung ausgefallen war.
  10. Verfahren zum Empfangen von Daten, die von einem Ausgangscomputersystem in einer ersten multithreadingfähigen analytischen Data-Warehousing-Anwendung, die von einem Zielcomputersystem ausgeführt wird und zur gleichzeitigen Ausführung von mehreren Sitzungs-Threads imstande ist, übertragen sind, das Verfahren umfassend: Ausgeben (752) einer Pluralität von Anforderungen nach Daten an das Ausgangscomputersystem, in dem die Daten residieren, wobei das Ausgangscomputersystem eine zweite multithreadingfähige analytische Anwendung ausführt; Hervorbringen (754) einer Pluralität von Sitzungs-Threads als Reaktion auf Nachrichten von dem Ausgangscomputersystem; Empfangen (756) mindestens eines verschlüsselten und komprimierten Datenblocks der Daten von dem Ausgangscomputersystem; gleichzeitiges (756, 758, 760) Ausführen einer Pluralität von Datentransformations-Threads innerhalb jedes Sitzungs-Threads, wobei jeder Sitzungs-Thread mit einem ersten, einem zweiten und einem dritten Datenblockpuffer assoziiert ist, jeder der Sitzungs-Threads umfassend einen Lese-Thread zum Schreiben des verschlüsselten und komprimierten Datenblocks in den ersten Datenblockpuffer; einen Entschlüsseler-Thread zum Entschlüsseln des verschlüsselten und komprimierten Datenblocks in dem ersten Datenblockpuffer in einen komprimierten Datenblock und Schreiben des komprimierten Datenblocks in einen zweiten Datenblockpuffer; und einen Entkomprimierungs-Thread zum Entkomprimieren des komprimierten Datenblocks in dem zweiten Datenblockpuffer und Schreiben eines resultierenden Datenblocks in einen dritten Datenblockpuffer.
  11. Verfahren nach Anspruch 10, weiter umfassend: Überprüfen, dass die Datenübertragung von dem Ausgangscomputersystem vollständig war.
  12. Verfahren nach Anspruch 10, weiter umfassend: Überprüfen, dass die Datenübertragung von dem Ausgangscomputersystem ohne Fehler war.
  13. Verfahren nach Anspruch 10, wobei das Zielcomputersystem und das Ausgangscomputersystem über das Internet vernetzt sind.
  14. Verfahren nach Anspruch 10, wobei die Daten Daten umfassen, die von einer analytischen Anwendung verarbeitet wurden.
  15. Verfahren nach Anspruch 10, wobei eine Pluralität von verschlüsselten und komprimierten Datenblöcken akkumulieren, bevor der Entschlüsseler-Thread ausgeführt wird.
  16. Verfahren nach Anspruch 10, wobei eine Pluralität von komprimierten Datenblöcken akkumulieren, bevor der Entkomprimierer-Thread ausgeführt wird.
  17. Verfahren nach Anspruch 10, weiter umfassend: Wiederherstellen einer Verbindung mit dem Ausgangscomputersystem, wenn eine bestehende Verbindung ausfällt; und Wiederaufnehmen der Datenübertragung von dem Ausgangscomputersystem an dem Punkt in den Daten, an dem die bestehende Verbindung ausgefallen war.
  18. Ausgangscomputersystem, umfassend: einen Bus (1000); eine Speichereinheit (1002, 1003, 1004), die an den Bus (1000) gekoppelt ist; eine multithreadingfähige analytische Data-Warehousing-Anwendung, die in der Speichereinheit gespeichert ist, und umfassend: ein Hörer-Objekt (130a) zum Empfangen einer Pluralität von eingehenden Anforderungen nach Daten, die in einer Massenspeichereinheit in dem Ausgangscomputersystem residieren; Protokoll zum Authentifizieren der eingehenden Anforderungen; ein Sitzungsmanager-Objekt (138a) zum Hervorbringen einer Pluralität von Sitzungs-Threads, wobei jeder Thread konfiguriert ist zum Lesen und Analysieren eines Befehls, der über die eingehenden Anforderungen empfangen wurde, wobei der Befehl zum Senden der Daten zu einem zweiten Computersystem vorgesehen ist; ein Leserkanal-Objekt (142a) zum Lesen von Daten und Schreiben von mindestens einem Teil der Daten in einen ersten Datenblockpuffer; ein Komprimierungskanal-Objekt (146), das den Teil der Daten in dem ersten Datenblockpuffer in einen komprimierten Datenblock komprimiert und den komprimierten Datenblock in einen zweiten Datenblockpuffer schreibt; ein Verschlüsselerkanal-Objekt (156) zum Verschlüsseln des komprimierten Datenblocks in dem zweiten Datenblockpuffer in einen verschlüsselten und komprimierten Datenblock und Schreiben des verschlüsselten und komprimierten Datenblocks in einen dritten Datenblockpuffer; und ein Schreiberkanal-Objekt (152a) zum Lesen des verschlüsselten und komprimierten Datenblocks in dem dritten Datenblockpuffer und Senden des verschlüsselten und komprimierten Datenblocks an das zweite Computersystem, wobei jeder Sitzungs-Thread das Leserkanal-Objekt, das Komprimierungskanal-Objekt, das Verschlüsselerkanal-Objekt und das Schreiberkanal-Objekt gleichzeitig ausführt; und einen Prozessor (1001), der an den Bus gekoppelt ist, wobei der Prozessor zum Ausführen der multithreadingfähigen analytischen Data-Warehousing-Anwendung konfiguriert ist.
  19. Zielcomputersystem, umfassend: einen Bus (1000); eine Speichereinheit (1002, 1003, 1004), die an den Bus gekoppelt ist; eine multithreadingfähige analytische Data-Warehousing-Anwendung, die in der Speichereinheit gespeichert ist, und umfassend: eine erste Pluralität von Sitzungs-Threads (140b) zum Ausgeben von Anforderungen nach Daten an ein Ausgangscomputersystem, in dem die Daten residieren; ein Sitzungsmanager-Objekt (138b) zum Hervorbringen einer zweiten Pluralität von Sitzungs-Threads als Reaktion auf Nachrichten von dem Ausgangscomputersystem; ein Hörer-Objekt (130b) zum Empfangen mindestens eines verschlüsselten und komprimierten Datenblocks von dem Ausgangscomputersystem; ein Leserkanal-Objekt (142b) zum Lesen von Daten und Schreiben von mindestens einem Teil der verschlüsselten und komprimierten Daten in einen ersten Datenblockpuffer; ein Entschlüsselerkanal-Objekt (164) zum Entschlüsseln des verschlüsselten und komprimierten Datenblocks in einen komprimierten Datenblock und Schreiben des komprimierten Datenblocks in einen zweiten Datenblockpuffer; und ein Entkomprimierungskanal-Objekt (158) zum Entkomprimieren des komprimierten Datenblocks in dem zweiten Datenblockpuffer und Schreiben eines resultierenden Datenblocks in einen dritten Datenblockpuffer, wobei jeder Sitzungs-Thread das Leserkanal-Objekt, das Entschlüsselerkanal-Objekt und das Entkomprimierungskanal-Objekt gleichzeitig ausführt; und einen Prozessor, der an den Bus gekoppelt ist, wobei der Prozessor zum Ausführen der multithreadingfähigen analytischen Data-Warehousing-Anwendung konfiguriert ist.
DE60218160T 2001-06-15 2002-06-14 Verfahren und systeme zur datenübertragung über ein netz Expired - Lifetime DE60218160T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/882,733 US7162643B1 (en) 2001-06-15 2001-06-15 Method and system for providing transfer of analytic application data over a network
US882733 2001-06-15
PCT/US2002/018808 WO2002103984A2 (en) 2001-06-15 2002-06-14 Methods and systems for transferring data over a network

Publications (2)

Publication Number Publication Date
DE60218160D1 DE60218160D1 (de) 2007-03-29
DE60218160T2 true DE60218160T2 (de) 2007-10-31

Family

ID=25381232

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60218160T Expired - Lifetime DE60218160T2 (de) 2001-06-15 2002-06-14 Verfahren und systeme zur datenübertragung über ein netz

Country Status (7)

Country Link
US (1) US7162643B1 (de)
EP (1) EP1400086B1 (de)
AT (1) ATE354242T1 (de)
CA (1) CA2450869C (de)
DE (1) DE60218160T2 (de)
ES (1) ES2281515T3 (de)
WO (1) WO2002103984A2 (de)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6965886B2 (en) * 2001-11-01 2005-11-15 Actimize Ltd. System and method for analyzing and utilizing data, by executing complex analytical models in real time
JP3914861B2 (ja) * 2002-11-29 2007-05-16 Necインフロンティア株式会社 通信システム
US20050086328A1 (en) * 2003-10-17 2005-04-21 Landram Fredrick J. Self configuring mobile device and system
US8244903B2 (en) * 2003-12-22 2012-08-14 Emc Corporation Data streaming and backup systems having multiple concurrent read threads for improved small file performance
US8732696B2 (en) * 2004-09-30 2014-05-20 Sap Aktiengesellschaft Analytic application model and marketplace
JP4347350B2 (ja) * 2007-02-15 2009-10-21 富士通株式会社 データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法
WO2008134627A2 (en) 2007-04-27 2008-11-06 Boomi, Inc. System and method for automated on-demand creation of a customized software application
US10133883B2 (en) * 2009-02-09 2018-11-20 International Business Machines Corporation Rapid safeguarding of NVS data during power loss event
US9710282B2 (en) 2011-12-21 2017-07-18 Dell Products, Lp System to automate development of system integration application programs and method therefor
US8943076B2 (en) 2012-02-06 2015-01-27 Dell Products, Lp System to automate mapping of variables between business process applications and method therefor
US8805716B2 (en) 2012-03-19 2014-08-12 Dell Products, Lp Dashboard system and method for identifying and monitoring process errors and throughput of integration software
US8615500B1 (en) * 2012-03-29 2013-12-24 Emc Corporation Partial block allocation for file system block compression using virtual block metadata
US8782103B2 (en) 2012-04-13 2014-07-15 Dell Products, Lp Monitoring system for optimizing integrated business processes to work flow
US9015106B2 (en) 2012-04-30 2015-04-21 Dell Products, Lp Cloud based master data management system and method therefor
US9606995B2 (en) 2012-04-30 2017-03-28 Dell Products, Lp Cloud based master data management system with remote data store and method therefor
US9158782B2 (en) 2012-04-30 2015-10-13 Dell Products, Lp Cloud based master data management system with configuration advisor and method therefore
US8589207B1 (en) 2012-05-15 2013-11-19 Dell Products, Lp System and method for determining and visually predicting at-risk integrated processes based on age and activity
US9069898B2 (en) 2012-05-31 2015-06-30 Dell Products, Lp System for providing regression testing of an integrated process development system and method therefor
US9092244B2 (en) 2012-06-07 2015-07-28 Dell Products, Lp System for developing custom data transformations for system integration application programs
US9286047B1 (en) 2013-02-13 2016-03-15 Cisco Technology, Inc. Deployment and upgrade of network devices in a network environment
US9183074B2 (en) 2013-06-21 2015-11-10 Dell Products, Lp Integration process management console with error resolution interface
US9838424B2 (en) 2014-03-20 2017-12-05 Microsoft Technology Licensing, Llc Techniques to provide network security through just-in-time provisioned accounts
US20150281225A1 (en) * 2014-03-27 2015-10-01 Microsoft Corporation Techniques to operate a service with machine generated authentication tokens
US10374904B2 (en) 2015-05-15 2019-08-06 Cisco Technology, Inc. Diagnostic network visualization
US9800497B2 (en) 2015-05-27 2017-10-24 Cisco Technology, Inc. Operations, administration and management (OAM) in overlay data center environments
US9967158B2 (en) 2015-06-05 2018-05-08 Cisco Technology, Inc. Interactive hierarchical network chord diagram for application dependency mapping
US10142353B2 (en) 2015-06-05 2018-11-27 Cisco Technology, Inc. System for monitoring and managing datacenters
US10536357B2 (en) 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US10528624B2 (en) * 2015-12-07 2020-01-07 Sap Se Optimal hash calculation of archive files and their file entries
US10171357B2 (en) 2016-05-27 2019-01-01 Cisco Technology, Inc. Techniques for managing software defined networking controller in-band communications in a data center network
US10931629B2 (en) 2016-05-27 2021-02-23 Cisco Technology, Inc. Techniques for managing software defined networking controller in-band communications in a data center network
US10289438B2 (en) 2016-06-16 2019-05-14 Cisco Technology, Inc. Techniques for coordination of application components deployed on distributed virtual machines
US10708183B2 (en) 2016-07-21 2020-07-07 Cisco Technology, Inc. System and method of providing segment routing as a service
US10972388B2 (en) 2016-11-22 2021-04-06 Cisco Technology, Inc. Federated microburst detection
US10498858B2 (en) 2016-12-14 2019-12-03 Dell Products, Lp System and method for automated on-demand creation of and execution of a customized data integration software application
US10708152B2 (en) 2017-03-23 2020-07-07 Cisco Technology, Inc. Predicting application and network performance
US10523512B2 (en) 2017-03-24 2019-12-31 Cisco Technology, Inc. Network agent for generating platform specific network policies
US10594560B2 (en) 2017-03-27 2020-03-17 Cisco Technology, Inc. Intent driven network policy platform
US10250446B2 (en) 2017-03-27 2019-04-02 Cisco Technology, Inc. Distributed policy store
US10764141B2 (en) 2017-03-27 2020-09-01 Cisco Technology, Inc. Network agent for reporting to a network policy system
US10873794B2 (en) 2017-03-28 2020-12-22 Cisco Technology, Inc. Flowlet resolution for application performance monitoring and management
US10680887B2 (en) 2017-07-21 2020-06-09 Cisco Technology, Inc. Remote device status audit and recovery
US10554501B2 (en) 2017-10-23 2020-02-04 Cisco Technology, Inc. Network migration assistant
US10523541B2 (en) 2017-10-25 2019-12-31 Cisco Technology, Inc. Federated network and application data analytics platform
US10594542B2 (en) 2017-10-27 2020-03-17 Cisco Technology, Inc. System and method for network root cause analysis
US11233821B2 (en) 2018-01-04 2022-01-25 Cisco Technology, Inc. Network intrusion counter-intelligence
US11765046B1 (en) 2018-01-11 2023-09-19 Cisco Technology, Inc. Endpoint cluster assignment and query generation
US10917438B2 (en) 2018-01-25 2021-02-09 Cisco Technology, Inc. Secure publishing for policy updates
US10574575B2 (en) 2018-01-25 2020-02-25 Cisco Technology, Inc. Network flow stitching using middle box flow stitching
US10826803B2 (en) 2018-01-25 2020-11-03 Cisco Technology, Inc. Mechanism for facilitating efficient policy updates
US10873593B2 (en) 2018-01-25 2020-12-22 Cisco Technology, Inc. Mechanism for identifying differences between network snapshots
US10999149B2 (en) 2018-01-25 2021-05-04 Cisco Technology, Inc. Automatic configuration discovery based on traffic flow data
US10798015B2 (en) 2018-01-25 2020-10-06 Cisco Technology, Inc. Discovery of middleboxes using traffic flow stitching
US11128700B2 (en) 2018-01-26 2021-09-21 Cisco Technology, Inc. Load balancing configuration based on traffic flow telemetry
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
CN111835700B (zh) * 2019-12-04 2022-07-22 北京嘀嘀无限科技发展有限公司 一种数据处理方法、装置、电子设备及存储介质

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0408812B1 (de) 1989-07-21 2000-03-01 Hewlett-Packard Company Verteilte auf Objekte basierende Systeme
US5257365A (en) 1990-03-16 1993-10-26 Powers Frederick A Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records
US5563999A (en) 1990-10-19 1996-10-08 Moore Business Forms, Inc. Forms automation system
EP0663353A1 (de) 1991-06-28 1995-07-19 Kao Corporation Lager- und Ausgabe-Methode für Gegenstände
US5659724A (en) 1992-11-06 1997-08-19 Ncr Interactive data analysis apparatus employing a knowledge base
US5420688A (en) 1992-12-14 1995-05-30 Farah; John Interferometric fiber optic displacement sensor
US5405531A (en) 1993-02-16 1995-04-11 Geo-Microbial Technologies, Inc. Method for reducing the amount of and preventing the formation of hydrogen sulfide in an aqueous system
US5794229A (en) 1993-04-16 1998-08-11 Sybase, Inc. Database system with methodology for storing a database table by vertically partitioning all columns of the table
US5794228A (en) 1993-04-16 1998-08-11 Sybase, Inc. Database system with buffer manager providing per page native data compression and decompression
US5455945A (en) 1993-05-19 1995-10-03 Vanderdrift; Richard System and method for dynamically displaying entering, and updating data from a database
CA2097540C (en) 1993-06-01 1998-05-12 William G. O'farrell Accessing remote data objects in a distributed memory environment
US5713020A (en) 1993-09-02 1998-01-27 Microsoft Corporation Method and system for generating database queries containing multiple levels of aggregation
US5553279A (en) 1993-10-08 1996-09-03 International Business Machines Corporation Lossless distribution of time series data in a relational data base network
US5519859A (en) 1993-11-15 1996-05-21 Grace; John A. Method and apparatus for automatic table selection and generation of structured query language instructions
US5537589A (en) 1994-06-30 1996-07-16 Microsoft Corporation Method and system for efficiently performing database table aggregation using an aggregation index
US5675785A (en) 1994-10-04 1997-10-07 Hewlett-Packard Company Data warehouse which is accessed by a user using a schema of virtual tables
US5511190A (en) 1995-01-20 1996-04-23 Tandem Computers, Inc. Hash-based database grouping system and method
CN101359350B (zh) 1995-02-13 2012-10-03 英特特拉斯特技术公司 用于安全地管理在数据项上的操作的方法
US6078925A (en) 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US5708828A (en) 1995-05-25 1998-01-13 Reliant Data Systems System for converting data from input data environment using first format to output data environment using second format by executing the associations between their fields
US6026388A (en) 1995-08-16 2000-02-15 Textwise, Llc User interface and other enhancements for natural language information retrieval system and method
US5721903A (en) 1995-10-12 1998-02-24 Ncr Corporation System and method for generating reports from a computer database
US5870746A (en) 1995-10-12 1999-02-09 Ncr Corporation System and method for segmenting a database based upon data attributes
US5692181A (en) 1995-10-12 1997-11-25 Ncr Corporation System and method for generating reports from a computer database
US5832496A (en) 1995-10-12 1998-11-03 Ncr Corporation System and method for performing intelligent analysis of a computer database
US5689566A (en) 1995-10-24 1997-11-18 Nguyen; Minhtam C. Network with secure communications sessions
US5794030A (en) 1995-12-04 1998-08-11 Objectivity, Inc. System and method for maintenance and deferred propagation of schema changes to the affected objects in an object oriented database
US5884262A (en) 1996-03-28 1999-03-16 Bell Atlantic Network Services, Inc. Computer network audio access and conversion system
US5706495A (en) 1996-05-07 1998-01-06 International Business Machines Corporation Encoded-vector indices for decision support and warehousing
US5991742A (en) 1996-05-20 1999-11-23 Tran; Bao Q. Time and expense logging system
JPH09311806A (ja) 1996-05-24 1997-12-02 Hitachi Ltd データ不正更新の検出方法
US5778355A (en) 1996-06-11 1998-07-07 International Business Machines Corp. Database method and apparatus for interactively retrieving data members and related members from a collection of data
US5721911A (en) 1996-06-25 1998-02-24 International Business Machines Corporation Mechanism for metadata for an information catalog system
US5870747A (en) 1996-07-09 1999-02-09 Informix Software, Inc. Generalized key indexes
JPH1055367A (ja) 1996-08-09 1998-02-24 Hitachi Ltd データ利用システム
US5781911A (en) 1996-09-10 1998-07-14 D2K, Incorporated Integrated system and method of data warehousing and delivery
US5826258A (en) 1996-10-02 1998-10-20 Junglee Corporation Method and apparatus for structuring the querying and interpretation of semistructured information
US5854890A (en) 1996-10-15 1998-12-29 National Instruments Corporation Fieldbus function block shell with user selectable data ownership
US5787415A (en) 1996-10-30 1998-07-28 International Business Machines Corporation Low maintenance data delivery and refresh system for decision support system database
US5822751A (en) 1996-12-16 1998-10-13 Microsoft Corporation Efficient multidimensional data aggregation operator implementation
US5848415A (en) 1996-12-18 1998-12-08 Unisys Corporation Selective multiple protocol transport and dynamic format conversion in a multi-user network
US5898431A (en) 1996-12-31 1999-04-27 International Business Machines Corporation Database graphical user interface with calendar view
US5842213A (en) 1997-01-28 1998-11-24 Odom; Paul S. Method for modeling, storing, and transferring data in neutral form
US5857197A (en) 1997-03-20 1999-01-05 Thought Inc. System and method for accessing data stores as objects
US6002402A (en) 1997-04-09 1999-12-14 Symantec Corporation System and method for producing a drag-and-drop object from a popup menu item
US5873102A (en) 1997-04-29 1999-02-16 Oracle Corporation Pluggable tablespaces on a transportable medium
US5794246A (en) 1997-04-30 1998-08-11 Informatica Corporation Method for incremental aggregation of dynamically increasing database data sets
US6032158A (en) 1997-05-02 2000-02-29 Informatica Corporation Apparatus and method for capturing and propagating changes from an operational database to data marts
US6078994A (en) * 1997-05-30 2000-06-20 Oracle Corporation System for maintaining a shared cache in a multi-threaded computer environment
US5987454A (en) 1997-06-09 1999-11-16 Hobbs; Allen Method and apparatus for selectively augmenting retrieved text, numbers, maps, charts, still pictures and/or graphics, moving pictures and/or graphics and audio information from a network resource
US6233575B1 (en) 1997-06-24 2001-05-15 International Business Machines Corporation Multilevel taxonomy based on features derived from training documents classification using fisher values as discrimination values
US6119167A (en) 1997-07-11 2000-09-12 Phone.Com, Inc. Pushing and pulling data in networks
US5999924A (en) 1997-07-25 1999-12-07 Amazon.Com, Inc. Method and apparatus for producing sequenced queries
JP3922482B2 (ja) 1997-10-14 2007-05-30 ソニー株式会社 情報処理装置および方法
US6122628A (en) 1997-10-31 2000-09-19 International Business Machines Corporation Multidimensional data clustering and dimension reduction for indexing and searching
US6269369B1 (en) 1997-11-02 2001-07-31 Amazon.Com Holdings, Inc. Networked personal contact manager
US6014670A (en) 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6339775B1 (en) 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6151601A (en) 1997-11-12 2000-11-21 Ncr Corporation Computer architecture and method for collecting, analyzing and/or transforming internet and/or electronic commerce data for storage into a data storage area
US6128624A (en) 1997-11-12 2000-10-03 Ncr Corporation Collection and integration of internet and electronic commerce data in a database during web browsing
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
US6151584A (en) 1997-11-20 2000-11-21 Ncr Corporation Computer architecture and method for validating and collecting and metadata and data about the internet and electronic commerce environments (data discoverer)
EP0944003A1 (de) 1998-03-18 1999-09-22 SONY EUROPE GmbH Benachrichtigungssubsystem
EP0949787A1 (de) 1998-03-18 1999-10-13 Sony International (Europe) GmbH Internetkonto für Mehrfachpersönlichkeit
US6393386B1 (en) 1998-03-26 2002-05-21 Visual Networks Technologies, Inc. Dynamic modeling of complex networks and prediction of impacts of faults therein
US6032145A (en) 1998-04-10 2000-02-29 Requisite Technology, Inc. Method and system for database manipulation
US6065007A (en) 1998-04-28 2000-05-16 Lucent Technologies Inc. Computer method, apparatus and programmed medium for approximating large databases and improving search efficiency
US6421781B1 (en) 1998-04-30 2002-07-16 Openwave Systems Inc. Method and apparatus for maintaining security in a push server
US20020056081A1 (en) * 1999-12-02 2002-05-09 Qualcomm Incorporated Apparatus and method for decoding digital image and audio signals
US6141699A (en) 1998-05-11 2000-10-31 International Business Machines Corporation Interactive display system for sequential retrieval and display of a plurality of interrelated data sets
US6216125B1 (en) 1998-07-02 2001-04-10 At&T Corp. Coarse indexes for a data warehouse
US6292657B1 (en) 1998-07-13 2001-09-18 Openwave Systems Inc. Method and architecture for managing a fleet of mobile stations over wireless data networks
US6208990B1 (en) 1998-07-15 2001-03-27 Informatica Corporation Method and architecture for automated optimization of ETL throughput in data warehousing applications
US6192364B1 (en) 1998-07-24 2001-02-20 Jarg Corporation Distributed computer database system and method employing intelligent agents
US6269336B1 (en) 1998-07-24 2001-07-31 Motorola, Inc. Voice browser for interactive services and methods thereof
US6446096B1 (en) 1998-09-11 2002-09-03 International Business Machines Corporation Method and system for providing device-specific key control using role-based HTML element tags
US6480711B1 (en) 1998-09-15 2002-11-12 Nms Communications Corporation Method and system for wireless data communication over the internet
US6154783A (en) 1998-09-18 2000-11-28 Tacit Knowledge Systems Method and apparatus for addressing an electronic document for transmission over a network
AU6169399A (en) 1998-10-02 2000-04-26 Ncr Corporation Techniques for deploying analytic models in parallel
US6477525B1 (en) 1998-12-28 2002-11-05 Oracle Corporation Rewriting a query in terms of a summary based on one-to-one and one-to-many losslessness of joins
US6457030B1 (en) 1999-01-29 2002-09-24 International Business Machines Corporation Systems, methods and computer program products for modifying web content for display via pervasive computing devices
US6411936B1 (en) 1999-02-05 2002-06-25 Nval Solutions, Inc. Enterprise value enhancement system and method
US6272485B1 (en) 1999-02-18 2001-08-07 Creative Internet Applications, Inc. Transferring selected formatted documents over a computer network using interface script
US6418200B1 (en) 1999-02-26 2002-07-09 Mitel, Inc. Automatic synchronization of address directories for unified messaging
GB2347567A (en) 1999-03-05 2000-09-06 Sharp Kk CMOS level shifters and sense amplifiers
US6369840B1 (en) 1999-03-10 2002-04-09 America Online, Inc. Multi-layered online calendaring and purchasing
US6173310B1 (en) 1999-03-23 2001-01-09 Microstrategy, Inc. System and method for automatic transmission of on-line analytical processing system report output
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6535872B1 (en) 1999-04-08 2003-03-18 International Business Machines Corporation Method and apparatus for dynamically representing aggregated and segmented data views using view element sets
US6446059B1 (en) 1999-06-22 2002-09-03 Microsoft Corporation Record for a multidimensional database with flexible paths
US6449619B1 (en) 1999-06-23 2002-09-10 Datamirror Corporation Method and apparatus for pipelining the transformation of information between heterogeneous sets of data sources
US6385604B1 (en) 1999-08-04 2002-05-07 Hyperroll, Israel Limited Relational database management system having integrated non-relational multi-dimensional data store of aggregated data elements
US6408292B1 (en) 1999-08-04 2002-06-18 Hyperroll, Israel, Ltd. Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions
US6404884B1 (en) 1999-10-08 2002-06-11 Grape Technology Group, Inc. Personalized assistance system and method
US6430624B1 (en) 1999-10-21 2002-08-06 Air2Web, Inc. Intelligent harvesting and navigation system and method
US6446062B1 (en) 1999-12-23 2002-09-03 Bull Hn Information Systems Inc. Method and apparatus for improving the performance of a generated code cache search operation through the use of static key values
US6526335B1 (en) 2000-01-24 2003-02-25 G. Victor Treyz Automobile personal computer systems
US6424426B1 (en) 2000-03-28 2002-07-23 Mongonet Fax-to-email and email-to-fax communication system and method
US6336137B1 (en) 2000-03-31 2002-01-01 Siebel Systems, Inc. Web client-server system and method for incompatible page markup and presentation languages
JP2001295809A (ja) 2000-04-11 2001-10-26 Smc Corp ガイド付きシリンダ
US6502101B1 (en) 2000-07-13 2002-12-31 Microsoft Corporation Converting a hierarchical data structure into a flat data structure

Also Published As

Publication number Publication date
CA2450869A1 (en) 2002-12-27
EP1400086A2 (de) 2004-03-24
US7162643B1 (en) 2007-01-09
DE60218160D1 (de) 2007-03-29
ES2281515T3 (es) 2007-10-01
CA2450869C (en) 2012-03-20
EP1400086B1 (de) 2007-02-14
WO2002103984A2 (en) 2002-12-27
ATE354242T1 (de) 2007-03-15
WO2002103984A3 (en) 2003-04-24

Similar Documents

Publication Publication Date Title
DE60218160T2 (de) Verfahren und systeme zur datenübertragung über ein netz
DE602005002679T2 (de) WEB-Dienst-Anwendungsprotokoll und SOAP-Verarbeitungsmodell
DE69029759T2 (de) Flexible Schnittstelle für Beglaubigungsdienste in einem verteilten Datenverarbeitungssystem
DE10051571B4 (de) Methode und System zur Unterstützung von Sicherheitsvorgaben unter Verwendung einer Stylesheet-Verarbeitung
DE69630480T2 (de) Verfahren, Vorrichtung und Datenstrukturen zur Objektverwaltung
DE69736697T2 (de) Verfahren und Gerät zur Steuerung von Zugriff auf Systembetriebsmittel
DE60006065T2 (de) Verfahren und system zur entwicklung, anwendung, fernladung, und ausfuhrung, von datenbank gesteuerten webseiten
DE60028561T2 (de) Bereitstellung von kundendiensten, die daten aus datenquellen abrufen, wobei die datenquellen die vom kunden geforderten formate nicht notwendigerweise unterstützen
DE60109631T2 (de) Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE69721632T2 (de) Verfahren und Vorrichtung zur Servletverarbeitung
DE60308489T2 (de) Anwendungsfensterschließung als Reaktion auf ein Ereignis in einem Parent-Fenster
DE60109467T2 (de) Verfahren und vorrichtung zur übertragung von netzwerkinformationen durch sichere transkodierung
DE60307244T2 (de) Verfahren und system zur durchführung von post-ausgabe-konfigurations und datenänderungen an einem persönlichen sicherheitsgerät unter verwendung einer kommunikations-pipeline
DE112016004896T5 (de) Bereitstellung von Remote-Befehlsausführung mit fein abgestimmtem Zugriff für Instanzen von virtuellen Maschinen in einer verteilten Datenverarbeitungsumgebung
DE112016001075T5 (de) Verteiltes speichern und abrufen von datensätzen
DE202015009311U1 (de) Öffnen lokaler Anwendungen von Browsern
DE69733305T2 (de) System/Verfahren zur wirkungsvollen Übermittlung von Datenströmen in einem Multimediasystem
DE112011102129T5 (de) Sicherheitsmodell für Abläufe, die sichere Fremddienste zusammenführen
DE112009004075T5 (de) Selektives kommunizieren von daten eines peripheriegeräts zumehreren sendenden computern
DE112012005639T5 (de) Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing
DE69814697T2 (de) Vorrichtung, methode und computer programm produkt für client/server rechner mit vom client auswählbarer lokalisierung von transaktionsobjekten
EP0868691A1 (de) Verfahren zur zugriffskontrolle auf rechnerkontrollierte programme, die von mehreren benutzereinheiten gleichzeitig benutzt werden können
DE602005005435T2 (de) System und Verfahren zur Kommunikationsverwaltung von Komponentenanwendungen
DE10024347B4 (de) Sicherheitsservice-Schicht

Legal Events

Date Code Title Description
8364 No opposition during term of opposition