DE112016004168T5 - Systeme und Verfahren zum Speichern und Auslesen von Inhalten - Google Patents

Systeme und Verfahren zum Speichern und Auslesen von Inhalten Download PDF

Info

Publication number
DE112016004168T5
DE112016004168T5 DE112016004168.3T DE112016004168T DE112016004168T5 DE 112016004168 T5 DE112016004168 T5 DE 112016004168T5 DE 112016004168 T DE112016004168 T DE 112016004168T DE 112016004168 T5 DE112016004168 T5 DE 112016004168T5
Authority
DE
Germany
Prior art keywords
file
client device
stored
parts
portions
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.)
Pending
Application number
DE112016004168.3T
Other languages
English (en)
Inventor
Brain Schneider
Nicholas Mark Vasic Cooper
Dongli Tu
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.)
Google LLC
Original Assignee
Google 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 Google LLC filed Critical Google LLC
Publication of DE112016004168T5 publication Critical patent/DE112016004168T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Es werden hier Systeme und Verfahren für den Zugriff auf Teile einer Datei auf einem Client-Gerät dargestellt. Ein oder mehrere Teile einer Datei werden zum Herunterladen auf das Client-Gerät ausgewählt, wobei die Datei auf einem webbasierten Speichersystem gespeichert ist, das über ein Netzwerk mit dem Client-Gerät kommuniziert. Mindestens ein Teil des (der) ausgewählten Teils/Teile wird ermittelt, das nicht auf dem Client-Gerät gespeichert ist. Es wird ohne Zutun des Benutzers eine Anforderung an das webbasierte Speichersystem übertragen, den (die) betreffenden Teil(e) der Datei herunterzuladen, und der (die) betreffende(n) Teil(e) der Datei wird (werden) über das Netzwerk auf das Client-Gerät heruntergeladen.

Description

  • Querverweise zu verwandten Anmeldungen
  • Diese Patentanmeldung erhebt Anspruch auf die Nutzung des U.S.-Patentes mit der Nummer 14/853,214 , die am 14.09.2015 zum Patent angemeldet wurde und die hierin in ihrer Gesamtheit aufgenommen wird.
  • Gebiet der Erfindung
  • Diese Offenbarung bezieht sich allgemein auf die Datenspeicherung, insbesondere auf Systeme und Verfahren zur Speicherung von Daten in und den Zugriff auf Daten von Cloud-Speichern.
  • Hintergrund
  • Webbasierte Speichersysteme sind Datei-Hostingsysteme, mit denen der Benutzer Daten, auf die von einem oder mehreren Benutzergeräten aus zugegriffen werden kann, speichern und abrufen kann. Diese Speichersysteme können Cloud-Speicher für das Speichern von Benutzerdaten verwenden. Es ist manchmal wünschenswert, dass ein Benutzergerät Zugriff auf Dateien hat, die in einem webbasierten Speichersystem gespeichert sind. Wenn diese Dateien jedoch sehr groß sind, mag der Benutzer nicht solange warten wollen, bis die gesamte Datei auf das Gerät des Benutzers heruntergeladen wurde, bevor der Benutzer die Datei öffnen kann.
  • Kurzdarstellung
  • Hierin werden Systeme und Verfahren zur Datenspeicherverwaltung dargestellt. Ein Aspekt bezieht sich auf ein System oder ein Verfahren zum Zugriff auf Teile einer Datei auf einem Client-Gerät. Ein oder mehrere Teile einer Datei werden zum Herunterladen auf das Client-Gerät ausgewählt, wobei die Datei auf einem webbasierten Speichersystem gespeichert ist, das über ein Netzwerk mit dem Client-Gerät kommuniziert. Mindestens ein Teil des (der) ausgewählten Teils/Teile wird ermittelt, das nicht auf dem Client-Gerät gespeichert ist. Es wird ohne Zutun des Benutzers eine Anforderung an das webbasierte Speichersystem übertragen, den (die) betreffenden Teil(e) der Datei herunterzuladen, und der (die) betreffende(n) Teil(e) der Datei wird (werden) über das Netzwerk auf das Client-Gerät heruntergeladen.
  • Ein weiterer Aspekt betrifft ein System, einschließlich der Mittel zum Zugriff auf Teile einer Datei auf einem Client-Gerät. Das System beinhaltet Mittel zum Auswählen eines oder mehrerer Teile einer Datei zum Herunterladen auf das Client-Gerät, wobei die Datei auf einem webbasierten Speichersystem gespeichert wird, das über ein Netzwerk mit dem Client-Gerät kommuniziert, Mittel zur Ermittlung mindestens eines Teils der ausgewählten Teile, die nicht auf dem Client-Gerät gespeichert sind, Mittel zum Senden einer Anforderung, ohne Zutun des Benutzers, an das Web-basierte Speichersystem, den (die) Teil(e) der Datei herunterzuladen, und Mittel zum Herunterladen des (der) betreffenden Teils/Teile der Datei auf das Client-Gerät über das Netzwerk.
  • Bei manchen Ausführungsformen beinhalten die Mittel zur Ermittlung Mittel zum Vergleich der ausgewählten Teile mit Einträgen in einer Metadatei. Jeder Eintrag in der Metadatei beinhaltet eine Teilbezeichnung, die jeden der ausgewählten Teile bezeichnet, sowie einen Hinweis darauf, ob jeder der ausgewählten Teile auf dem Client-Gerät gespeichert ist. Die Metadatei kann auf dem Client-Gerät gespeichert sein, ohne dass dessen Benutzer darauf zugreifen kann. Die Metadatei wird aktualisiert, sobald der mindestens eine Teil heruntergeladen wurde, so dass sie die Information enthält, dass der angegebene mindestens eine Teil auf dem Client-Gerät gespeichert ist.
  • Bei manchen Ausführungsformen entspricht die Datei einem Dokument und das System enthält Mittel, einem Benutzer, der das Client-Gerät verwendet, eine Ansicht eines ersten Teils des Dokumentes zu ermöglichen, wobei die ausgewählten Teile der Datei einen zweiten und dritten Teil des Dokumentes beinhalten, die an den ersten Teil angrenzen. Die ausgewählten Teile der Datei können Teilen der Datei entsprechen, denen aufgrund eines historischen Betrachtungsmusters oder der Bearbeitungstätigkeit der Datei bestimmte Prioritäten zugeordnet werden. Bei manchen Ausführungsformen ist auf dem Client-Gerät eine Anwendung zum Anzeigen der Inhalte der Datei installiert, die nicht verändert wird, um die Anzeige der ausgewählten Teile der Datei zu ermöglichen.
  • Bei manchen Ausführungsformen beinhaltet das System des weiteren Mittel zur Verschlüsselung der betreffenden Teile der Datei, bevor der (die) betreffende(n) Teil(e) der Datei auf dem Client-Gerät gespeichert wird (werden). Die Mittel zur Verschlüsselung verwenden einen ersten Schlüssel und einen ersten Initialisierungsvektor, wobei der erste Schlüssel und ein zweiter Initialisierungsvektor, der sich vom ersten Initialisierungsvektor unterscheidet, zum Verschlüsseln eines anderen Teils der Datei verwendet werden, die auf dem Client-Gerät gespeichert ist. Das System kann des Weiteren Mittel zum Speichern des ersten Initialisierungsvektors und des zweiten Initialisierungsvektors in einer Metadatei beinhalten, wobei jeder Eintrag in der Metadatei eine Teilbezeichnung enthält, die jeden der ausgewählten Teile bezeichnet, sowie eine Angabe dazu, ob jeder der ausgewählten Teile auf dem Client-Gerät gespeichert ist.
  • Bei manchen Ausführungsformen beinhaltet das System des Weiteren Mittel zur Bestimmung einer Größe eines oder mehrerer Teile der Datei aufgrund mindestens eines der folgenden Elemente: einer Netzwerkverbindungsgeschwindigkeit, eines Dateityps und einer Datenmenge innerhalb der Datei, deren Anforderung durch einen Benutzer des Client-Gerätes vorhergesagt wird.
  • Figurenliste
  • Die vorgenannten und andere Merkmale der vorliegenden Offenbarung, einschließlich ihrer Natur und verschiedenen Vorteile, werden verständlicher, wenn man die folgende detaillierte Beschreibung unter Hinzuziehung der zugehörigen Zeichnungen berücksichtigt, von denen:
    • 1 ein Blockdiagramm eines computerisierten Systems ist, das, gemäß einer Beispielausführungsform, den Zugriff auf Teile einer Datei auf einem Client-Gerät ermöglicht.
    • 2 ein Diagramm einer Datenbankstruktur ist, die Teile von Dateien verfolgt und eine Angabe dazu speichert, ob jeder Teil lokal im Cache eines Client-Gerätes gespeichert ist, gemäß einer veranschaulichenden Ausführungsform.
    • 3 ein Flussdiagramm eines Beispielverfahrens zur Bereitstellung eines oder mehrerer Teile einer Datei als Reaktion auf eine Leseanforderung ist, gemäß einer veranschaulichenden Ausführungsform.
    • 4 ein Flussdiagramm eines Beispielverfahrens zur Bereitstellung eines oder mehrerer Teile einer Datei als Reaktion auf eine Schreibanforderungen ist, gemäß einer veranschaulichenden Ausführungsform.
    • 5 ein Flussdiagramm eines Beispielverfahrens für den Zugriff auf Teile einer Datei auf einem Client-Gerät ist, gemäß einer veranschaulichenden Ausführungsform.
    • 6 ein Blockdiagramm eines Computergerätes ist, das sämtliche hier beschriebenen Prozesse ausführen kann, gemäß einer veranschaulichenden Ausführungsform.
  • Ausführliche Beschreibung
  • Um die Offenbarung insgesamt verständlich zu machen, werden im Folgenden einige veranschaulichende Ausführungsformen beschrieben, darunter ein System zum Speichern und Abrufen von Dateiinhalten in einem webbasiertes Speichersystem. Insbesondere wird ein Verfahren beschrieben, das das effiziente Herunterladen und Verwenden von Daten erlaubt. Das hierin beschriebene Verfahren können es einem Benutzer an einem Client-Gerät z. B. erlauben, einen Teil einer Datei anzusehen und optional zu verändern, ohne die gesamte Datei auf das Client-Gerät herunterladen zu müssen. Dies kann den Verbrauch verschiedener Rechenressourcen senken, z. B. die zum Herunterladen der Daten einer Datei erforderliche Bandbreite, den Speicherbedarf auf dem Client-Gerät und, falls die Datei auf dem Client-Gerät verändert wird, die zum Hochladen der Änderungen an das webbasierte Speichersystem erforderliche Bandbreite. Allerdings wird ein regulär geschulter Benutzer sehen, dass die hier beschriebenen Systeme und Methoden entsprechend abgeändert und angepasst werden können, um der jeweiligen Anwendung zu genügen, und ebenfalls, dass die hier beschriebenen Systeme und Methoden auch in anderen geeigneten Anwendungen eingesetzt werden können und dass diese Zusätze und Änderungen nicht aus deren Ausmaß abweichen. Im Allgemeinen können die hier beschriebenen computerisierten Systeme eine oder mehrere Treiber umfassen, die einen Prozessor oder Rechner, wie einen Computer, ein Logikgerät oder ein anderes Gerät oder einen Prozessor umfassen, der mit Hardware, Firmware und Software bestückt ist, um eine oder mehrere der hier beschriebenen computerisierten Methoden durchzuführen.
  • Diese Offenbarung betrifft Systeme und Verfahren zum Speichern und Abrufen von Dateien von einem Cloud-Speichersystem. Mithilfe der hier aufgeführten Systeme und Verfahren werden viele der mit bestehenden webbasierten Datei-Upload-Systemen verbundene Probleme überwunden und werden als webbasiertes Speichersystem beschrieben, das über ein Netzwerk mit anderen Systemen kommunizieren kann, um Benutzerdaten zu speichern und gemeinsam zu nutzen. Im Allgemeinen wird eine Person mit normalen Kenntnissen dieser Materie verstehen, dass die hier beschriebenen Systeme und Methoden sich auf Systeme beziehen, die lokal miteinander verbunden sind, ohne über das Ausmaß dessen hinauszugehen.
  • 1 zeigt ein Beispiel einer Netzwerk- und Datenbankstruktur, die zur Umsetzung der hier beschriebenen Systeme und Methoden verwendet werden kann. 1 ist ein Blockdiagramm eines computerisierten Systems 100, das es ermöglicht, von einem Client-Gerät aus auf Daten zuzugreifen, die auf einem Cloud-Speichersystem gespeichert sind. Das System 100 umfasst ein webbasiertes Speichersystem 110 und ein Client-Gerät 102, die so konfiguriert sind, dass sie über ein Netzwerk 101 miteinander kommunizieren können. Das webbasierte Speichersystem 110 beinhaltet einen Server 112, einen Prozessor 114 und eine Datenbank 116 für Benutzerdaten und das Client-Gerät 102 beinhaltet einen Cache 103, eine Metadatei 104, eine Anzeige 105, einen Prozessor 106, ein Benutzereingabegerät 107 und eine Netzwerkschnittstelle 108. Zu den hiesigen Zwecken bezeichnet der Begriff „Prozessor“ ein oder mehrere Computer, Mikroprozessoren, logische Geräte, Server oder andere Geräte, die mit Hardware, Firmware und Software konfiguriert sind, um eine oder mehrere der hier beschriebenen computergesteuerten Techniken auszuführen. Prozessoren und verarbeitende Geräte können ebenfalls ein oder mehrere Speichergeräte zum Speichern von Eingaben, Ausgaben und Daten umfassen, die aktuell verarbeitet werden. Nur ein webbasiertes Speichersystem 110 und ein Client-Gerät 102 zeigt 1 um eine komplizierte Abbildung zu vermeiden. Das System 100 kann allgemein mehrere webbasierte Speichersysteme und jede beliebige Anzahl Client-Geräte 102 unterstützen.
  • Das webbasierte Speichersystem 110 ist ein Datei-Hosting-System, auf dem Benutzer Daten speichern, abrufen und verändern können. Diese Daten können als Web-Daten eines Benutzers bezeichnet werden, die in der Datenbank für Benutzerdaten 116 gespeichert werden. Der Server 112, der Prozessor 114 oder beide können Funktionen in Zusammenhang mit der Verwaltung und Pflege der Datenbank für Benutzerdaten 116 ausüben, wie z. B. die Bereitstellung von Speicherplatz für die Daten, der Empfang neuer Daten, die in der Datenbank gespeichert werden sollen, das Löschen von Daten aus der Datenbank, Angaben dazu, wie viel Speicherplatz in der Datenbank verfügbar ist, oder irgendeine sonstige geeignete auf die Datenbankpflege bezogene Funktion. Das webbasierte Speichersystem 110 kann auf einem System mit nur einem Server oder in einem verteilten System gespeichert werden. Insbesondere kann das webbasierte Speichersystem 110 Cloud-Speicher zur Speicherung der Benutzerdaten verwenden.
  • Die auf dem webbasierten Speichersystem 110 gespeicherten Dateien können sehr groß sein. Die Dateien können z. B. Videoinhalte, große Datenbankstrukturen zur Archivierung oder sonstige einschlägige Arten großer Dateien enthalten. Wenn die Verbindung zum Netzwerk 101 langsam ist (z. B. eine langsame Internetverbindung), kann es lange dauern, bis eine Datei heruntergeladen ist. Es mag allgemein nicht erwünscht sein, zu warten, bis die große Datei heruntergeladen ist, bevor sie dem Benutzer des Client-Gerätes zur Verfügung steht. In diesem Fall kann die Datei in mehrere Teile oder Blöcke zerteilt und nur die interessierenden Teile auf das Client-Gerät heruntergeladen werden. In solchen Beispielen kann jeder Teil eine eigene Untermenge der Daten der Datei beinhalten, oder, anders ausgedrückt, jeder Teil kann einige, aber nicht alle Daten der Datei beinhalten. Die Teile der Datei können z. B. eine feste Anzahl Bytes enthalten und von gleicher oder unterschiedlicher Größe sein.
  • Das Client-Gerät 102 kann den Zugriff auf einen Teil einer großen Datei anfordern, die auf dem webbasierten Speichersystem 110 gespeichert ist. Ist die Datei z. B. eine Videodatei, mag es nicht erwünscht sein, warten zu müssen, bis die ganze Datei in den Cache 103 des Client-Gerätes 102 heruntergeladen wurde, bevor der Videoinhalt der Datei dem Benutzer zur Verfügung steht. In diesem Fall kann die Videodatei in mehrere Teile zerteilt werden und der oder die interessierende(n) Teil(e) auf das Client-Gerät 102 heruntergeladen werden. Während manche der hierin beschriebenen Beispiele sich auf große Videodateien beziehen, ist diese Offenbarung nicht auf Videodateien beschränkt und auch auf andere Dateitypen anwendbar, darunter Dateien mit Audioinhalten, Textinhalten, Bildinhalten, Datenbankinhalten oder sonstigen einschlägigen Arten von Dateiinhalten.
  • Wie in 1 gezeigt, beinhaltet das Client-Gerät 102 einen Cache 103, eine Metadatei 104, eine Anzeige 105, einen Prozessor 106, ein Benutzereingabegerät 107 und eine Netzwerkschnittstelle 108. Das Benutzereingabegerät 107 erlaubt es dem Benutzer, die Dateien zu handhaben. Das Benutzereingabegerät 107 kann z. B. eine Tastatur, eine Maus oder eine berührungsempfindliche Anzeige einschließen, so dass der Benutzer durch Auswahl einer in der Datenbank für die Benutzerdaten 116 gespeicherten Datei Eingaben vornehmen kann. Die vom Benutzer vorgenommenen Eingaben können eine Anforderung des Benutzers sein, die ausgewählte Datei zu lesen oder zu verändern.
  • Die Datei ist in der Datenbank für die Benutzerdaten 116 im Cloud-Speicher gespeichert, ein Teil der Datei, oder auch die ganze Datei, kann jedoch auch lokal im Cache 103 auf dem Client-Gerät 102 gespeichert sein. Wenn die Datei bereits im Cache 103 gespeichert ist, braucht das Client-Gerät 102 die Datei von dem webbasierten Speichersystem 110 nicht erst herunterzuladen. In diesem Fall kann die Datei dem Benutzer unmittelbar zur Verfügung gestellt werden, indem eine Anwendung geöffnet wird, die den Inhalt der Datei über die Anzeige 105 darstellen kann. Andernfalls überträgt das Client-Gerät 102 eine Anforderung an das webbasierte Speichersystem 110, den Inhalt der Datei an das Client-Gerät 102 zu übertragen. In einem Beispiel kann der Cache 103 auch gar keinen Teil der Datei speichern. In diesem Fall kann die Anforderung eine Angabe enthalten, welche Teile der Datei in den Cache 103 heruntergeladen werden sollen, oder ob die ganze Datei in den Cache 103 heruntergeladen werden soll. In einem weiteren Beispiel kann im Cache 103 bereits eine Untermenge der Teile der Datei gespeichert sein. Wenn die angeforderten Teile bereits lokal im Cache vorhanden sind, kann es in diesem Fall nicht nötig sein, dass das Client-Gerät 102 die angeforderten Teile herunterlädt. Alternativ, wenn einer der angeforderten Teile bereits lokal im Cache vorhanden ist, so kann das webbasierte Speichersystem 110 die angeforderten Teile an das Client-Gerät 102 übertragen.
  • Wenn einige der angeforderten Teile bereits lokal im Cache vorhanden sind, so kann das webbasierte Speichersystem 110 die angeforderten Teile, die nicht bereits lokal im Cache vorhanden sind, an das Client-Gerät 102 übertragen. Die bereits lokal im Cache vorhandenen Teile können z. B. Teile einer Videodatei sein, die bereits angesehen wurden bzw. die bereits lokal im Cache des Client-Gerätes 102 vorhanden sind. Es mag wünschenswert sein, dass das Client-Gerät 102 die Videodatei streamt. Zum Erleichtern des Streamingvorgangs kann das Client-Gerät 102 manche der späteren Teile der Videodatei, die noch nicht angesehen wurden, vorsorglich lokal speichern, für den Fall, dass der Benutzer diese späteren Teile der Videodatei noch anschauen will. In diesem Fall kann das Client-Gerät 102 spätere Teile zum Herunterladen anfordern, während schon vorher heruntergeladene Teile bereits abgespielt werden. Diese später angeforderten Teile können dann an das Client-Gerät 102 übertragen und im Cache 103 gespeichert werden, bis sie zum Anschauen bereit sind.
  • In dem obigen Beispiel wird die Datei so beschrieben, dass sie Videoinhalte enthält. Die Datei kann ganz allgemein aber auch andere Inhalte enthalten. Die Datei kann z. B. ein Dokument sein, das Text bzw. grafische oder Bildinhalte enthält. In diesem Fall kann die Datei in Teile aufgeteilt werden, die der Reihe nach angeordnet sind. Als Beispiel kann der Benutzer einen bestimmten Teil der Datei über die Anzeige 105 betrachten. Der bestimmte Teil kann lokal im Cache 103 gespeichert werden, die übrigen Teile der Datei können jedoch auf dem webbasierten Speichersystem 110 gespeichert sein und nicht lokal im Cache. Indem der Benutzer über die Anzeige 105 den jeweiligen Teil der Datei betrachtet, kann das System 100 den vorangegangenen und den nachfolgenden Teil ermitteln, die an den jeweiligen Teil angrenzen. Der vorangegangene Teil bzw. der folgende Teil kann in den Cache heruntergeladen werden 103, während der jeweilige Teil betrachtet wird, vorsorglich für den Fall, dass der Benutzer zu einem dieser Teile blättert. In ähnlicher Weise kann das System 100 bestimmen, dass manche Teile der Datei Inhalte enthalten, die mit größerer Wahrscheinlichkeit betrachtet werden als andere Teile der Datei, und solchen Teilen relative Prioritäten zuordnen. Textinhalte mögen z. B. mit größerer Wahrscheinlichkeit betrachtet und bearbeitet werden als Bildinhalte, so dass Teile mit Textinhalten mit Priorität gegenüber Teilen mit Bildinhalten heruntergeladen werden.
  • Bei manchen Ausführungsformen können Teile der Datei, die mit größerer Wahrscheinlichkeit angezeigt werden sollen (und die deshalb Priorität haben), auf der Basis eines historischen Musters des Anzeigeverhaltens ermittelt werden. In einem Beispiel können Inhalte, die vor Kurzem geändert wurden, oder die sich seit der letzten Version, die der Benutzer gesehen hat, stark verändert haben, anderen Teilen gegenüber vorrangig behandelt werden. In einem weiteren Beispiel erkennt das System 100, dass der Benutzer in einer bestimmten Richtung durch ein Dokument blättert (z. B. von oben nach unten oder von unten nach oben). Die Teile der Datei können dann, entsprechend dieser Richtung, mit Priorität geladen werden, so dass Teile, die der Prognose gemäß früher heruntergeladen werden und vor Teilen, die der Prognose gemäß später angezeigt werden sollen.
  • Allgemein muss die Datei nicht unbedingt eine Videodatei oder ein Dokument sein, das Text- bzw. Bildinhalte enthält. Die Datei kann eine Datei von beliebiger Art sein, die geeignet ist, um sie in mehrere Teile aufzuteilen. Bei manchen Ausführungsformen ist die Datei eine Datenbankstruktur, die Datensätze mit bestimmten Daten enthält. Als Beispiel kann die Datei eine Liste von Datensätzen sein, wie z. B. eine Liste von Schülern, die an einer bestimmten Schule angemeldet sind. Jeder Datensatz auf der Liste kann Daten enthalten, die zu einem bestimmten Schüler gehören, z. B. der Name des Schülers, seine E-Mail-Adresse, Anschrift, Matrikelnummer, Kontaktangaben für den Notfall, belegte Kurse, Transkription, Schulgebührenkontostand oder sonstige einschlägige Daten zu einem bestimmten Schüler. In diesem Fall kann die Datei eine große Datei sein, die auf dem webbasierten Speichersystem 110 gespeichert ist. Ein Benutzer am Client-Gerät 102, z. B. ein Schulleiter, kann evtl. lediglich einen ausgewählten Teil der Datei ansehen wollen, z. B. einen Teil der Datei, der einen Datensatz enthält, der zu einem bestimmten Schüler gehört. In diesem Fall kann nur der ausgewählte Teil der Datei von dem webbasierten Speichersystem 110 auf das Client-Gerät 102 heruntergeladen werden, anstatt die ganze Datei über das Netzwerk 101 herunterzuladen, was lange dauern kann. Nachdem der entsprechende Teil auf das Client-Gerät 102 heruntergeladen wurde, kann der Benutzer den Datensatz für einen ausgewählten Schüler auf dem Client-Gerät 102 ändern, das den geänderten Teil der Datei dann an das webbasierte Speichersystem 110 hochladen kann. In diesem Fall kann die Datei in Teile aufgeteilt werden, die groß genug sind, um eine bestimmte Anzahl Datensätze zu speichern. Jeder Teil kann z. B. einer ganzzahligen Anzahl von Schülern entsprechen, wie z. B. einem oder mehreren Schülern.
  • Bei manchen Ausführungsformen wird die Größe der Teile der Datei optimal gewählt. Insbesondere sollte die Größe der Teile unter Berücksichtigung der Netzwerkverbindungsgeschwindigkeit sowie einer Verwendungsprognose der Datei bemessen werden. Es mag nicht gewünscht sein, zu große Teile zu verwenden, da große Teile mehr Zeit erfordern, um sie über das Netzwerk 101 zu senden, als kleinere Teile. Darüber hinaus mögen große Teile nicht erwünscht sein, wenn die Menge der Inhalte, die gegenwärtig auf dem Client-Gerät 102 gebraucht wird, lediglich einem kleinen Teil eines großen Teils entspricht. In dem obigen Beispiel, bei dem die Datei eine Datenbankstruktur ist, die die an einer Schule angemeldeten Schüler erfasst, mag es z. B. nicht gewünscht sein, Teile der Datei zu verwenden, deren Größe so bemessen ist, dass sie eine große Anzahl Schüler enthalten. Für den Benutzer am Client-Gerät 102 mag es insbesondere wünschenswert sein, jeweils die zu bestimmten Schülern gehörenden Datensätze anzusehen und zu ändern, so dass Teile geeignet sein mögen, deren Größe so bemessen ist, dass sie einzelne Datensätze zu bestimmten Schülern enthalten. Es versteht sich, dass das hierin beschriebe Beispiel, das sich auf eine Datei bezieht, die Daten speichert, die sich auf Schüler beziehen, die an einer Schule angemeldet sind, lediglich zur Veranschaulichung beschrieben wird und dass die Systeme und Verfahren dieser Offenbarung allgemein auf Dateien anwendbar sind, die Daten speichern, die sich auf Aufzeichnungen beliebiger Art beziehen.
  • Es kann darüber hinaus nicht gewünscht sein, eine Datei in viele kleine Teile zu teilen, wenn die Teile so klein sind, dass bei einer Anforderung vom Client-Gerät 102, einen Teil der Datei herunterzuladen, mehrere Teile heruntergeladen werden müssten. In dem oben beschriebenen Beispiel mag es nicht gewünscht sein, dass die Teile so klein sind, dass sie lediglich einen Bruchteil des Datensatzes für einen bestimmten Schüler beinhalten, da jede Anfrage, den Datensatz für einen Schüler anzusehen oder zu ändern, das Herunterladen und Speichern mehrerer Teile erforderlich machen könnte.
  • Abhängig von der Anwendung, mag es für den Benutzer am Client-Gerät 102 wünschenswert sein, Datensätze anzusehen und zu ändern, die mehreren Schülern gleichzeitig entsprechen. Der Benutzer mag z. B. die Datensätze aller Schüler in einem bestimmten Kurs ansehen wollen, oder von Schülern, die eines oder mehrere Kriterien erfüllen, z. B. alle Schüler in einem bestimmten Jahrgang, Schüler, die ihren Abschluss machen, Schüler, die in einem Verein oder einer Organisation sind, Schüler, deren Konto für die Schulgebühren einen Saldo aufweist, oder eine sonstige einschlägige Kategorie. In diesem Fall können während der Übertragung Teile erzeugt werden, bei denen die jeweiligen Einträge über die Schüler (die das bzw. die Kriterien erfüllen) in einem Teil gebündelt und auf das Client-Gerät 102 heruntergeladen werden. In diesem Fall sind die Teile und ihre Größe nicht im Voraus bestimmt, sondern werden je nach Bedarf dynamisch ermittelt.
  • Entsprechend der hierin gegebenen Beschreibung erlauben die Systeme und Verfahren dieser Offenbarung einem Benutzer an einem Client-Gerät 102, einen Teil einer Datei anzusehen und optional zu verändern, ohne die gesamte Datei auf das Client-Gerät 102 herunterladen zu müssen. Diese Offenbarung erlaubt es einem Client-Gerät 102, nur die relevanten Teile einer Datei von dem webbasierten Speichersystem 110 herunterzuladen, so dass der Benutzer bestimmte Teile je nach Bedarf ansehen und optional verändern kann.
  • Bei manchen Ausführungsformen arbeiten die Systeme und Verfahren dieser Offenbarung in einer Weise, die für den Benutzer des Client-Gerätes 102 nicht sichtbar ist. Insbesondere kann sich der Benutzer nicht darüber im Klaren sein, dass das Client-Gerät 102 mit dem webbasierten Speichersystem 110 in der beschriebenen Weise kommuniziert, um zu einem bestimmten Zeitpunkt Teile einer Datei herunterzuladen. Darüber hinaus können auch die auf dem Client-Gerät 102 ausgeführten Softwareanwendungen zum Öffnen, Anzeigen und Ändern der verschiedenen Teile der Datei nicht darüber informiert sein, dass lediglich Teile der Datei lokal im Cache des Client-Gerätes 102 vorhanden sind und nicht die gesamte Datei. Im Unterschied zu Video-Streaming-Anwendungen können die Anwendungen auf dem Client-Gerät 102 entsprechend dieser Offenbarung ggf. nicht speziell dafür ausgestattet sein müssen, das Öffnen und Ansehen von Teilen einer Datei auf einmal handhaben zu können.
  • In diesem Fall arbeiten die Systeme und Verfahren dieser Offenbarung im Hintergrund auf dem Client-Gerät 102. Als Beispiel benutzt der Benutzer eine Softwareanwendung auf dem Client-Gerät 102 zum Öffnen und Blättern durch ein Dokument der Größe 20 Megabyte (MB). Das Dokument entspricht einer Datei, die auf dem webbasierten Speichersystem gespeichert ist, und die in zehn Teile aufgeteilt ist, von denen jeder die Größe 2 MB hat. Während der Benutzer durch die ersten zehn MB blättert, kann die Softwareanwendung das 11· bis 15 · MB anfordern. Das Client-Gerät 105 kann eine Datenbankstruktur (z. B. die in Bezug auf 2 im Detail gezeigte und beschriebene Datenbankstruktur) abfragen und dabei feststellen, dass das 11· MB bis 15 · MB den Teilen 6, 7 und 8 entspricht. Nachdem die angeforderten Megabytes des Dokumentes auf die Teile der Datei abgebildet wurden, überträgt das Client-Gerät 102 dann eine Anfrage zum webbasierten Speichersystem 110, die Teile 6, 7 und 8 herunterzuladen.
  • Bei manchen Ausführungsformen werden die Teile der Datei verschlüsselt, bevor sie im Cache 103 gespeichert werden, und entschlüsselt, bevor sie einem Benutzer des Client-Gerätes 102 zur Verfügung gestellt werden. Z. B. wird zum Verschlüsseln der Teile im Cache 103 der Advanced Encryption Standard (AES) angewendet, obwohl allgemein jede geeignete Verschlüsselungsmethode verwendet werden kann. Es mag wünschenswert sein, Daten zu verschlüsseln, die von dem webbasierten Speichersystem 110 auf das Client-Gerät 102 heruntergeladen werden, und wenn es nur ist, um die Benutzer dazu zu ermutigen, ihre Dateien in einem Cloud-System zu speichern, wie z. B. dem webbasierten Speichersystem 110. Verliert ein Benutzer z. B. sein Client-Gerät 102, so kann eine andere Person, die auf das Client-Gerät 102 zugreift, auf die im Cache 103 gespeicherten Daten ggf. nicht zugreifen, weil die im Cache 103 gespeicherten Daten verschlüsselt sind.
  • Bei den zum Verschlüsseln der im Cache 103 gespeicherten Teile verwendeten Methoden kann derselbe Schlüssel für eine ganze Datei verwendet werden, jedoch mit verschiedenen Initialisierungsvektoren für jeden Teil der Datei. Die verschiedenen Initialisierungsvektoren können in der Metadatei 104 gespeichert sein, oder in einer Datenbankstruktur, wie z. B. der Datenbankstruktur 200, die beschrieben wurde mit Bezug auf 2. Um die Teile der Datei zu entschlüsseln, kann ein Entschlüsselungsverfahren durchgeführt werden, vom Anfang eines Teils bis zum letzten Byte des Teils, der auf dem Client-Gerät 102 angezeigt oder geändert werden soll. Wie in 1 gezeigt, ist die Metadatei 104 auf dem Client-Gerät gespeichert, die Metadatei 104 kann jedoch auf dem webbasierten Speichersystem 110 oder auf jedem anderen Gerät gespeichert sein, das Zugang zum Netzwerk 101 hat. Bei manchen Ausführungsformen ist die Metadatei für einen Benutzer des Client-Gerätes nicht zugänglich.
  • Der Prozessor 106 kann dafür konfiguriert werden, sämtliche Funktionen auszuführen, die laut der vorliegenden Offenbarung vom Benutzergerät 102 ausgeführt werden. Insbesondere kann der Prozessor 106 eine oder mehrere Teile zum Herunterladen auf das Client-Gerät 102 auswählen, mindestens einen der ausgewählten Teile ermitteln, der nicht auf dem Client-Gerät gespeichert ist, eine Anfrage an das webbasierte Speichersystem 110 senden, den angegebenen Teil herunterzuladen, und diesen dann herunterladen. Darüber hinaus kann der Prozessor 114 dafür konfiguriert sein, sämtliche Funktionen auszuführen, die laut der vorliegenden Offenbarung vom webbasierten Speichersystem 110 ausgeführt werden. Zusätzlich oder alternativ können beliebige der hier als vom Prozessor 106 auszuführend beschriebenen Funktionen auch vom Prozessor 114 ausgeführt werden und umgekehrt. Der größte Teil dieser Offenbarung beschreibt z. B. die Metadatei 104 so, als wäre sie auf dem Client-Gerät 102 gespeichert. Alternativ dazu kann die Metadatei 104 auch auf dem webbasierten Speichersystem gespeichert sein, ohne dass dadurch vom Umfang dieser Offenbarung abgewichen würde.
  • 2 zeigt beispielhaft eine Datenbankstruktur 200, die die Teile einer Menge von Dateien protokolliert, z. B. einer Menge von Dateien, die zu einem oder mehreren Benutzern des Client-Gerätes 102 gehören. Die Datenstruktur 200 kann Daten entsprechen, die in der Metadatei 104 gespeichert sind, die gezeigt und beschrieben wurde mit Bezug auf 1. Die in der Datenbankstruktur 200 gezeigten Daten können in der Metadatei 104 lokal auf dem Client-Gerät 102 gespeichert sein, in dem webbasierten Speichersystem 110 oder in einem anderen System, das zu dem Netzwerk 101 Zugang hat. Die in 2 gezeigte Datenbankstruktur 200 ist im Grunde eine Abbildung, die zur Ermittlung der Teile und ihrer Positionen innerhalb der Datei verwendet werden kann. Insbesondere wird jeder Eintrag in der Datenbankstruktur 200 in einer Zeile der Datenbankstruktur 200 dargestellt und entspricht einem Teil einer Datei. Jeder Eintrag beinhaltet eine Dateibezeichnung, eine Teilbezeichnung, einen Anfangspunkt, einen Endpunkt, eine Fahne, die anzeigt, ob der Teil im lokalen Cache gespeichert ist, z. B. im Cache 103 auf dem Client-Gerät 102, und einen Zeitstempel, der angibt, wann der Teil zuletzt geändert wurde. Jedes Paar aus Anfangspunkt und Endpunkt zeigt die Positionen innerhalb der Datei an, wo sich jeweils der Beginn und das Ende eines Teils innerhalb der Datei befinden.
  • Wie in 2 gezeigt, ist die durch die Dateibezeichnung 154 bezeichnete Datei in vier Teile aufgeteilt, die die Teilbezeichnungen 1, 2, 3 und 4 tragen. Jeder Teil der Datei 154 hat die gleiche Größe von 50 Dateneinheiten, wobei sich jede Einheit auf eine Anzahl Datenbits oder -bytes beziehen kann. Darüber hinaus ist jeder der vier Teile der Datei 154 lokal im Cache 103 gespeichert. Da jeder Teil der Datei 154 im Cache 103 gespeichert ist, ermittelt das System 100, wenn der Benutzer über das Client-Gerät 102 auf irgendeinen Teil der Datei 154 zugreifen möchte, mithilfe der Datenstruktur 200, dass alle Teile der Datei 154 bereits im Cache 103 gespeichert sind, und dass keine Teile über das Netzwerk 101 übertragen zu werden brauchen.
  • Als weiteres Beispiel zeigt die Datenstruktur 200 eine Datei 931, die in sieben Teile aufgeteilt ist, von denen jeder eine Größe von 100 Dateneinheiten hat. Im Unterschied zu der Datei 154 ist keiner der Teile der Datei 931 lokal im Cache 103 gespeichert. In diesem Fall ermittelt das System 100, wenn das Client-Gerät 102 eine Abfrage für den Zugriff auf die Datei 931 (oder einen Teil davon) erkennt, mithilfe der Datenstruktur 200, dass kein Teil der Datei 931 lokal auf dem Client-Gerät 102 gespeichert ist. Als Reaktion auf diese Bestimmung überträgt das webbasierte Speichersystem 100 die gewünschten Teile über das Netzwerk 101 auf das Client-Gerät 102, damit sie dem Benutzer zur Verfügung stehen.
  • Als weiteres Beispiel zeigt die Datenstruktur 200 eine Datei 287, die in fünf Teile aufgeteilt ist, von denen jeder eine Größe von 100 Dateneinheiten hat. Zwei dieser fünf Teile (die Teile 1 und 2) sind lokal im Cache 103 gespeichert, während die übrigen drei Teile (die Teile 3, 4 und 5) der Datei 287 nicht im Cache 103 gespeichert sind. In diesem Fall braucht das webbasierte Speichersystem 100, wenn einer der Teile 1 oder 2 vom Client-Gerät 102 angefordert wird, diese Teile nicht über das Netzwerk 101 auf das Client-Gerät 102 zu übertragen, weil diese Teile bereits lokal im Cache vorhanden sind. Andererseits überträgt das webbasierte Speichersystem 100, wenn einer der Teile 3, 4 oder 5 vom Client-Gerät 102 angefordert wird, die angeforderten Teile an das Client-Gerät 102.
  • Wie in 2 gezeigt, überlappen sich die Teile der verschiedenen Dateien nicht. Es versteht sich jedoch, dass die Teile einander überlappen können, ohne dass dadurch vom Umfang dieser Offenbarung abgewichen würde. Darüber hinaus zeigt die Datenstruktur 200 Dateien, von denen jede in gleich große Teile aufgeteilt ist, obwohl die Größe der Teile für verschiedene Dateien unterschiedlich sein kann. Allgemein könnten die Teile für verschiedene Dateien stets die gleiche Größe haben, oder es könnten für die gleiche Datei verschieden große Teile verwendet werden. Bei manchen Ausführungsformen kann die Abbildung, wenn die Teile von gleicher Größe sind, die Anfangspunkte ohne die Endpunkte, die Endpunkte ohne die Anfangspunkte oder einen anderen Punkt, z. B. den Mittelpunkt des jeweiligen Teils beinhalten.
  • Die in der Datenbankstruktur 200 gezeigten Einträge sind lediglich zur Veranschaulichung dargestellt, und die Einträge in der hierin beschriebenen Abbildung können eine Untermenge der gezeigten Felder beinhalten, bzw. weitere, nicht gezeigte Felder, wie z. B. einen Zeitstempel, der angibt, wann die Datei (oder der Teil) erstellt oder zuletzt geöffnet wurde, den Dateityp oder den Inhalt des jeweiligen Teils der Datei und die Anzahl der Teile, in die die betreffende Datei aufgeteilt ist.
  • Wie in 2 gezeigt, haben die Teile der Datei feste Größen für eine bestimmte Datei, und verschiedene Dateien können in Teile verschiedener Größe aufgeteilt sein. Allgemein kann die Größe der Teile der Datei für verschiedene Dateien, und sogar innerhalb derselben Datei, gleich oder unterschiedlich sein. Insbesondere kann die Größe eines Teils einer Datei dynamisch ermittelt werden, als Reaktion auf die Erkennung einer Verbindungsgeschwindigkeit über das Netzwerk 101. Die Größe der Teile kann z. B. auf der Basis einer Geschwindigkeit der Internetverbindung dynamisch ermittelt werden. Insbesondere kann, wenn die Geschwindigkeit der Internetverbindung niedrig ist, die Größe der Teile kleiner sein, als wenn die Geschwindigkeit der Internetverbindung hoch ist.
  • Während die Teile auf das Client-Gerät 102 heruntergeladen oder vom Client-Gerät 102 gelöscht werden, wird die Metadatei 104 aktualisiert, um zu berücksichtigen, welche Teile im Cache 103 gespeichert sind. Insbesondere wird die Datenbankstruktur 200 aktualisiert, um korrekt zu protokollieren, welche Teile bereits lokal im Cache des Client-Gerätes 102 vorhanden sind und welche nicht.
  • 3 ist ein Flussdiagramm eines Beispielverfahrens 300 zur Bereitstellung eines Teils einer Datei als Reaktion auf eine Leseanforderung vom Client-Gerät 102. Das Verfahren 300 beinhaltet die Schritte, eine Leseanforderung zu empfangen (Schritt 302), zu bestimmen, ob die Leseanforderung gültig ist (Entscheidungsblock 304) und zu bestimmen, ob die Datei innerhalb der Leseanforderung im Cache gespeichert ist (Entscheidungsblock 308). In einem Beispiel kann sich eine Leseanforderung als ungültig herausstellen, wenn die Anfrage einen falschen Offset enthält, wie z. B. eine Anforderung für Daten, die vor dem Anfang bzw. nach dem Ende einer Datei beginnen. Als weiteres Beispiel kann eine Leseanforderung ungültig sein, wenn sie Daten von einer Datei anfordert, die nicht mehr vorhanden ist oder die gelöscht wurde, wenn das Client-Gerät 102 keine Erlaubnis hat, aus der angeforderten Datei zu lesen, wenn sich die Anforderung auf Daten aus einem Ordner bezieht, anstatt aus einer bestimmten Datei, wenn die Leseanforderung keine Position angibt, an der die gelesenen Daten abgelegt werden sollen, oder irgendeine entsprechende Kombination daraus. Wenn die Leseanforderung ungültig ist, wird die Anfrage im Schritt 306 zurückgewiesen. Wenn die Datei im Cache gespeichert ist, z. B. lokal im Cache 103, so wird sie dem Benutzer über das Client-Gerät 102 im Schritt 310 zur Verfügung gestellt. Anderenfalls bestimmt die Methode im Entscheidungsblock 309, wenn die Datei nicht im Cache gespeichert ist, ob der angeforderte Teil der Datei im Cache gespeichert ist. In diesem Fall wird der angeforderte Teil der Datei heruntergeladen und im Schritt 312 im Cache gespeichert, und der heruntergeladene Teil wird dem Benutzer im Schritt 314 zur Verfügung gestellt. Bei Entscheidungsblock 316 wird die Leseanforderung geprüft, um zu ermitteln, ob es noch weitere Teile gibt, die noch nicht heruntergeladen oder dem Benutzer zur Verfügung gestellt worden sind. Die Schritte 309, 311, 312 und 314 werden wiederholt, bis alle in der Leseanforderung enthaltenen Teile heruntergeladen und dem Benutzer zur Verfügung gestellt wurden.
  • Bei Entscheidungsblock 308 kann die Ermittlung, ob die Datei im Cache gespeichert ist, die Erkennung von Teilen beinhalten, die in der Leseanforderung enthalten sind. Als Beispiel kann sich die Anfrage auf einen Teil der Datei beziehen, der durch seine Größe bezeichnet wird, wie z. B. 11 MB bis 15 MB einer Datei von 20 MB. Das System 100 kann dann mithilfe einer Datenbankstruktur, wie z. B. der Datenbankstruktur 200, den angeforderten Teil ermitteln, wobei die Datenbankstruktur die entsprechenden Bezeichnungen auf die einzelnen Teile der Datei abbildet. In einem weiteren Beispiel kann die Anfrage bereits die Bezeichnung des entsprechenden Teils nennen. Das System 100 kann bei Entscheidungsblock 309 bestimmen, ob irgendeiner der Teile in der Anfrage bereits lokal im Cache des Client-Gerätes 102 vorhanden ist. Bereits im Cache gespeicherte Teile können im Schritt 311 zur Verfügung gestellt werden, während nicht im Cache gespeicherte Teile im Schritt 312 heruntergeladen und dem Benutzer im Schritt 314 zur Verfügung gestellt werden.
  • 4 ist ein Flussdiagramm eines Beispielverfahrens 400 zur Bereitstellung eines Teils einer Datei als Reaktion auf eine Schreibanforderung vom Client-Gerät 102. Das Verfahren 400 beinhaltet die Schritte des Empfangs einer Schreibanforderung (Schritt 402), der Ermittlung, ob die Schreibanforderungen gültig ist (Entscheidungsblock 404) und der Bestimmung, ob die in der Schreibanforderung angegebene Datei im Cache gespeichert ist (Entscheidungsblock 408). Eine Schreibanforderung kann ggf. aus denselben Gründen ungültig sein, aus denen auch eine Leseanforderung ungültig sein kann, wie oben beschrieben mit Bezug auf 3. Darüber hinaus kann eine Schreibanforderung Ungültig sein, wenn sie einen vorgegebenen Grenzwert überschreitet. Wenn die Schreibanforderung ungültig ist, so wird die Anfrage im Schritt 406 zurückgewiesen. Wenn die Datei im Cache gespeichert ist, z. B. lokal im Cache 103, so wird die Datei dem Benutzer im Schritt 410 über das Client-Gerät 102 zur Verfügung gestellt, und geänderte Teile der Datei werden im Schritt 411 auf das webbasierte Speichersystem 110 hochgeladen. Anderenfalls, bestimmt die Methode, wenn die Datei nicht im Cache gespeichert ist, am Entscheidungsblock 409, ob der angeforderte Teil der Datei im Cache gespeichert ist. Wenn nicht, wird der angeforderte Teil der Datei im Schritt 412 heruntergeladen und im Cache gespeichert, und der heruntergeladene Teil wird dem Benutzer im Schritt 414 zur Verfügung gestellt. Anderenfalls, fährt das Verfahren 400 unmittelbar mit dem Schritt 414 fort, wenn der angeforderte Teil der Datei laut der Bestimmung am Entscheidungsblock 409 bereits im Cache gespeichert ist, und stellt dem Benutzer den heruntergeladenen Teil zur Verfügung. Beim Entscheidungsblock 416 wird ermittelt, ob der Benutzer an dem zur Verfügung gestellten Teil Änderungen vorgenommen hat. In diesem Fall wird der geänderte Teil dann im Schritt 418 hochgeladen. Anderenfalls wird am Entscheidungsblock 420 die Leseanforderung untersucht, um zu ermitteln, ob weitere Teile vorhanden sind, die noch nicht heruntergeladen oder dem Benutzer zur Verfügung gestellt wurden. Die Schritte 409, 412, 414, 416 und 418 werden wiederholt, bis alle in der Schreibanforderung angegebenen Teile heruntergeladen und dem Benutzer zur Verfügung gestellt wurden.
  • 5 ist ein Flussdiagramm eines Beispielverfahrens 500 für den Zugriff auf Teile einer Datei auf einem Client-Gerät. Das Verfahren 500 beinhaltet die Schritte der Auswahl eines oder mehrerer Teile einer Datei zum Herunterladen auf das Client-Gerät, wobei die Datei über ein Netzwerk auf einem webbasierten Speichersystem gespeichert wird, das mit dem Client-Gerät kommuniziert (Schritt 502), der Erkennung mindestens eines der ausgewählten Teile, die nicht auf dem Client-Gerät gespeichert sind (Schritt 504), die Übertragung einer Anforderung an das webbasierte Speichersystem ohne Zutun des Benutzers, den (die) betreffenden Teil(e) der Datei (Schritt 506) herunterzuladen und den (die) betreffenden Teil(e) der Datei über das Netzwerk auf das Client-Gerät (Schritt 508) herunterzuladen.
  • Am Schritt 502 werden ein oder mehrere Teile einer Datei zum Herunterladen auf das Client-Gerät ausgewählt, wobei die Datei über ein Netzwerk auf einem webbasierten Speichersystem gespeichert wird, das mit dem Client-Gerät kommuniziert. Bei manchen Ausführungsformen kann, wenn die Datei ein Dokument darstellt, ein erster Teil des Dokumentes einem Benutzer, der das Client-Gerät 102 benutzt, über die Anzeige 105 zur Verfügung gestellt werden. Die ausgewählten Teile der Datei können einem zweiten und dritten Teil des Dokumentes entsprechen, die an den ersten Teil angrenzen. Zusätzlich oder alternativ können die ausgewählten Teile der Datei auf der Basis eines historischen Betrachtungsmusters der Datei ermittelt werden. Blättert der Benutzer z. B. in einer Richtung von oben nach unten durch das Dokument, so können die ausgewählten Teile der Datei diejenigen Teile enthalten, die der Prognose gemäß als nächste betrachtet werden sollen. Darüber hinaus können den Teilen bestimmte Prioritäten zugewiesen werden, die sich nach der Leserichtung richten. Es können z. B. Teile, die oberhalb anderer Teile des Dokumentes erscheinen, eine höhere Priorität erhalten, als solche, die weiter unten stehen, und Teile mit höherer Priorität können vor den anderen Teilen heruntergeladen werden. Zusätzlich oder alternativ können die ausgewählten Teile der Datei auf der Basis einer bestimmten Bearbeitungstätigkeit der Datei ermittelt werden. Ein Teil der Datei, die vom Benutzer noch nicht angesehen wurde, die jedoch von einem oder mehreren anderen Benutzern stark bearbeitet wurde, kann z. B. vor anderen Teilen, die weniger stark bearbeitet wurden, Priorität erhalten.
  • Bei manchen Ausführungsformen wird die Größe der Teile der Datei auf der Basis von mindestens einer Netzwerkverbindungsgeschwindigkeit, des Dateityps und einer Datenmenge innerhalb der Datei ermittelt, die laut einer Prognose durch einen Benutzer des Client-Gerätes angefordert werden wird. Wie mit Bezug auf 1 beschrieben kann eine geringere Verbindungsgeschwindigkeit mit kleineren Teilen verbunden sein, als wenn die Verbindungsgeschwindigkeit des Netzwerks 101 hoch ist. Wenn darüber hinaus die Datei eine Datenbank enthält, die Datensätze verfolgt, z. B. von Schülern, die an einer bestimmten Schule angemeldet sind, so kann die Datei in Teile aufgeteilt werden, deren Größe so gewählt wird, dass sie für die bestimmte Anwendung geeignet ist. Die Größe der Teile kann z. B. so gewählt werden, dass sie einen Datensatz für einen einzigen Schüler enthalten.
  • Im Schritt 504 wird mindestens ein Teil der ausgewählten Teile ermittelt, die nicht auf dem Client-Gerät gespeichert sind. Die im Schritt 502 ausgewählten Teile können z. B. mit Einträgen in einer Metadatei verglichen werden, wie z. B. der mit Bezug auf 2 gezeigten und beschriebenen Datenbankstruktur 200. Insbesondere kann jeder Eintrag in der Metadatei einen Bezug auf eine Teilbezeichnung beinhalten, die jeden der ausgewählten Teile angibt. Jeder Eintrag in der Metadatei kann des Weiteren eine Angabe dazu beinhalten, ob jeder der ausgewählten Teile auf dem Client-Gerät gespeichert ist.
  • Am Schritt 506 wird ohne Zutun des Benutzers (oder, anders ausgedrückt, autonom) eine Anforderung an das webbasierte Speichersystem übertragen, den (die) Teil(e) der Datei herunterzuladen. Bei manchen Ausführungsformen wird auf dem Client-Gerät eine Anwendung installiert, die Inhalte der Datei auf dem Client-Gerät anzeigt, und die Anwendung wird nicht verändert, um die Anzeige der ausgewählten Teile der Datei zu ermöglichen. Insbesondere ist die Anwendung, die zum Öffnen der Datei verwendet wurde, als diese als Ganzes lokal im Cache gespeichert war, die gleiche Anwendung, die zum Öffnen der Teile der Datei verwendet werden kann, und es brauchen keinerlei Änderungen an der Anwendung vorgenommen werden, damit diese Teile einer Datei öffnen kann. Allgemein können die Systeme und Verfahren dieser Offenbarung auf dem Client-Gerät eines Benutzers ausgeführt werden, ohne dass der sonst übliche Umgang des Benutzers mit dem Client-Gerät verändert werden muss, gleichgültig ob der interessierende Teil der Datei zunächst im Cache gespeichert ist oder nicht.
  • Im Schritt 508 wird (werden) der (die) betreffende(n) Teil(e) der Datei über das Netzwerk auf das Client-Gerät heruntergeladen. Insbesondere wird der (mindestens eine) ermittelte Teil von dem webbasierten Speichersystem 110 an das Client-Gerät 102 übertragen. Bevor der gesendete Teil auf dem Client-Gerät 102 gespeichert wird, kann der gesendete Teil verschlüsselt werden. Wie oben beschrieben kann die Verschlüsselungsmethode die Verwendung desselben Schlüssels und eines anderen Initialisierungsvektors beinhalten, als sie für andere Teile derselben Datei verwendet werden. Darüber hinaus können die verschiedenen Initialisierungsvektoren in der Metadatei 104 oder als Feldeintrag in der Datenbankstruktur 200 gespeichert sein.
  • 6 ist ein Blockdiagramm eines Computergerätes sowie beliebiger der Komponenten des Systems in 1 zur Durchführung irgendeines der hier beschriebenen Prozesse. Jede der Komponenten dieser Systeme kann auf einem oder mehreren Computern 600 ausgeführt werden. In bestimmten Fällen können mehrere der Komponenten dieser Systeme in einem Computer 600 enthalten sein. Bei bestimmten Ausführungsformen können eine Komponente und ein Speichergerät in mehreren Computern 600 ausgeführt werden.
  • Der Computer 600 umfasst mindestens eine Kommunikationsschnittstelle, ein Eingangs-/Ausgangssteuergerät 610, Systemspeicher und ein oder mehrere Datenspeichergeräte. Der Systemspeicher beinhaltet mindestens einen Arbeitsspeicher (RAM 602) und mindestens einen Festspeicher (ROM 1004). All diese Elemente kommunizieren mit einer zentralen Prozessoreinheit (CPU 606), um den Betrieb des Computers 600 zu ermöglichen. Der Computer 600 kann auf diverse Weisen konfiguriert werden. Der Computer 600 kann z. B. ein konventioneller Tischcomputer sein, oder die Funktionen des Computers 600 können alternativ über mehrere Computersysteme und Architekturen verteilt werden. In 6, der Computer 600 ist über ein Netzwerk oder ein lokales Netzwerk mit anderen Servern oder Systemen verbunden.
  • Der Computer 600 kann ein einer verteilten Architektur konfiguriert werden, worin Datenbanken und Prozessoren in/an getrennten Einheiten oder Stellen untergebracht sind. Manche Einheiten führen primäre Verarbeitungsfunktionen aus und enthalten mindestens ein allgemeines Steuergerät oder einen Prozessor und einen Systemspeicher. Bei verteilten Ausführungsformen der Architektur müssen alle Einheiten über die Kommunikationsschnittstelle 608 an einen Kommunikationsknotenpunkt oder -port (ohne Abbildung) angeschlossen sein, der die primäre Kommunikationsverknüpfung mit anderen Servern, Client- oder Benutzercomputern und anderen zugehörigen Geräten darstellt. Der Kommunikationsknotenpunkt oder -port kann selbst über eine minimale Verarbeitungskapazität verfügen und dient primär als Kommunikationsrouter. Eine Reihe von Kommunikationsprotokollen können ein Teil des Systems darstellen, einschließlich, jedoch nicht ausschließlich: Ethernet, SAP, SAS™, ATP, BLUETOOTH™, GSM und TCP/IP.
  • Die CPU 606 umfasst einen Prozessor, wie z. B. einen oder mehrere herkömmliche Mikroprozessoren und einen oder mehrere zusätzliche Co-Prozessoren, wie mathematische Co-Prozessoren zur Entlastung der CPU 606. Die CPU 606 kommuniziert mit der Kommunikationsschnittstelle 608 und dem Eingangs-/Ausgangssteuergerät 610, über das die CPU 606 mit anderen Geräten, wie anderen Servern, Benutzerterminals oder Geräten kommunizieren kann. Die Kommunikationsschnittstelle 608 und das Eingangs-/Ausgangssteuergerät 610 können mehrere Kommunikationskanäle für die simultane Kommunikation z. B. mit anderen Prozessoren, Servern, oder Client-Terminals beinhalten.
  • Die CPU 606 kommuniziert ebenfalls mit dem Datenspeichergerät. Das Datenspeichergerät kann eine geeignete Kombination aus magnetischem, optischem oder Halbleiterspeicher umfassen und kann z. B. RAM 602, ROM 604, eine Flashdrive oder ein optisches Laufwerk, wie ein CD-Laufwerk, oder eine Festplatte enthalten. Die CPU 606 und das Datenspeichergerät können sich z. B. ausschließlich in einem einzigen Computer oder einem anderen Rechner befinden, oder sie können über ein Kommunikationsmedium, wie z. B. einen USB-Port, ein serielles Anschlusskabel, ein Koaxialkabel, ein Ethernetkabel, eine Telefonleitung, einen Funkfrequenzempfänger oder über ein ähnliches drahtloses oder verdrahtetes Medium oder eine Kombination dieser genannten miteinander verbunden sein. So kann die CPU 606 z. B. über die Kommunikationsschnittstelle 608 mit dem Datenspeichergerät verbunden sein. Die CPU 606 kann zur Durchführung einer oder mehrerer bestimmter Verarbeitungsfunktionen konfiguriert werden.
  • Auf dem Datenspeichergerät können z. B. (i) ein Betriebssystem 612 für den Computer 600; (ii) eine oder mehrere Anwendungen 614 (z. B. Computerprogrammcode oder ein Computerprogrammprodukt) gespeichert werden, die dazu geeignet sind, die CPU 606 entsprechend den hier beschriebenen Systemen und Methoden zu steuern, insbesondere entsprechend den hier im Einzelnen beschriebenen Verfahren bzgl. der CPU 606; oder (iii) Datenbank(en) 616, die so angepasst sind, dass sie Informationen speichern können, die zum Speichern von vom Programm benötigten Informationen verwendet werden können.
  • Das Betriebssystem 612 und die Anwendungen 614 können z. B. komprimiert, uncompiliert und verschlüsselt gespeichert werden und können Computerprogrammcode enthalten. Die Anweisungen des Programms können von einem computerlesbaren Medium, außer dem Datenspeichergerät, in den Hauptspeicher geschrieben werden, wie z. B. vom ROM 604 oder vom RAM 602. Während die Durchführung von Sequenzen von Anweisungen im Programm dazu führt, dass die CPU 606 die hier beschriebenen Prozessschritte durchführt, können auch fest verdrahtete Kreise anstatt von oder in Kombination mit Softwareanweisungen für die Ausführungsform des Prozesses der vorliegenden Offenlegung verwendet werden. Daher sind die hier beschriebenen Systeme und Methoden nicht auf eine spezifische Kombination aus Hardware und Software beschränkt.
  • Es kann geeigneter Computerprogrammcode zur Verfügung gestellt werden, um eine oder mehrere der mit der Bereitstellung der hier beschriebenen Prozesse verbundenen Funktionen ausführen zu können. Das Programm kann auch Programmelemente enthalten, z. B. ein Betriebssystem 612, ein Datenbank-Verwaltungssystem und „Gerätetreiber“, über die der Prozessor über das Eingangs-/Ausgangssteuergerät 610 mit Computer-Peripheriegeräten kommunizieren kann (z. B. eine Videoanzeige, eine Tastatur, eine Computermaus usw.).
  • Der Begriff „computerlesbares Medium“, wie er hier verwendet wird, bezieht sich auf ein beliebiges nicht flüchtiges Medium, das Anweisungen an den Prozessor des Computers 600 sendet bzw. an deren Übermittlung teilnimmt (oder an irgendeinen anderen Prozessor eines hier beschriebenen Geräts). Dieses Medium kann viele Formen annehmen, einschließlich unter anderem nichtflüchtige und flüchtige Medien. Zu den nichtflüchtigen Medien gehören z. B. optische magnetische oder optomagnetische Disks oder integrierte Speicherschaltung, wie Flash-Speicher. Zu den flüchtigen Medien gehören dynamisches RAM (DRAM), welches gewöhnlich als Hauptspeicher dient. Übliche Formen maschinenlesbarer Medien beinhalten z. B. Disketten, Floppy Disks, Festplatten, Magnetbänder, beliebige sonstige magnetische Datenträger, CD-ROMs, DVDs, beliebige sonstige optische Medien, Lochkarten, Lochstreifen, beliebige sonstige physische Medien mit Lochmustern, RAM-, PROM-, EPROM-, EEPROM-Speicher (Electronically Erasable Programmable Read-Only Memory), beliebige sonstige Speicherchips oder -kassetten oder jedes andere nicht flüchtige Medium, von dem ein Computer lesen kann.
  • Diverse Formen computerlesbarer Medien können daran beteiligt sein, eine oder mehrere Sequenzen einer oder mehrerer Anweisungen an die CPU 606 (oder einen anderen hierin beschriebenen Prozessor oder ein anderes Gerät) zur Ausführung übertragen werden. So können die Anweisungen zum Beispiel zunächst auf einer magnetischen Disk eines Ferncomputers getragen werden (ohne Abbildung). Der Ferncomputer kann diese Anweisungen in seinen dynamischen Speicher laden und die Anweisungen anschließend über eine Ethernet-Verbindung, ein Kabel oder sogar über eine Telefonleitung mit Modem senden. Ein an einen Computer direkt angeschlossenes Kommunikationsgerät 600 (z. B. ein Server) kann die Daten über die entsprechende Kommunikationsleitung erhalten und diese für den Prozessor auf einem Systembus bereitstellen. Der Systembus transportiert die Daten dann an den Hauptspeicher, von dem der Prozessor die Anweisungen anschließend abruft und ausführt. Die vom Hauptspeicher empfangenen Anweisungen können optional entweder vor oder nach der Ausführung durch den Prozessor gespeichert werden. Darüber hinaus können Anweisungen über einen Kommunikationsport als elektrische, elektromagnetische oder optische Signale empfangen werden; dies sind Beispiele der drahtlosen Kommunikation oder Datenstreams, die diverse unterschiedliche Arten von Informationen übertragen.
  • Auch wenn verschiedene Ausführungsformen der vorliegenden Offenbarung gezeigt und beschrieben werden, wird dem Fachmann klar sein, dass diese Ausführungsformen lediglich als Beispiel dienen. Den Fachkräften werden zahlreiche Variationen, Abänderungen und Ersetzungen einfallen, ohne von der Veröffentlichung abzuweichen. Es sollte klar sein, dass diverse Alternativen zu den hier beschriebenen Ausführungen in der Praxis dieser Offenlegung angewandt werden können.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 14/853214 [0001]

Claims (20)

  1. Ein Verfahren zum Zugriff auf Teile einer Datei auf einem Client-Gerät, umfassend: die Auswahl einer oder mehrerer Teile einer Datei zum Herunterladen auf das Client-Gerät durch mindestens einen Computerprozessor, wobei die Datei auf einem webbasierten Speichersystem gespeichert werden, das über ein Netzwerk mit dem Client-Gerät kommuniziert; die Ermittlung mindestens eines der ausgewählten Teile, die nicht auf dem Client-Gerät gespeichert sind; das Senden einer Anforderung an das webbasierte Speichersystem, den (die) Teil(e) der Datei ohne Zutun des Benutzers herunterzuladen; und das Herunterladen des (der) betreffenden Teil(e) der Datei über das Netzwerk auf das Client-Gerät.
  2. Verfahren nach Anspruch 1, worin die Ermittlung einen Vergleich der ausgewählten Teile mit Einträgen in einer Metadatei umfasst und wobei jeder Eintrag in der Metadatei eine Teilbezeichnung beinhaltet, die jeden der ausgewählten Teile angibt, sowie eine Angabe dazu, ob jeder der ausgewählten Teile auf dem Client-Gerät gespeichert ist.
  3. System nach Anspruch 2, worin die Metadatei auf dem Client-Gerät gespeichert ist und für einen Benutzer des Client-Gerätes nicht zugänglich ist.
  4. Verfahren nach Anspruch 2 oder Anspruch 3, die des Weiteren die Aktualisierung der Metadatei umfasst, nachdem die (mindestens eine) ermittelte Teil heruntergeladen wurde, so dass sie anzeigt, dass der (mindestens eine) ermittelte Teil auf dem Client-Gerät gespeichert ist.
  5. Verfahren nach irgendeinem der vorstehenden Ansprüche, worin die Datei einem Dokument entspricht und das Verfahren des Weiteren die Anzeige eines ersten Teils des Dokumentes für einen Benutzer umfasst, der das Client-Gerät benutzt, und wobei die ausgewählten Teile der Datei zweite und dritte Teile des Dokumentes beinhalten, die an den ersten Teil angrenzen.
  6. Verfahren nach irgendeinem der vorstehenden Ansprüche, worin die ausgewählten Teile der Datei Teilen der Datei entsprechen, denen bestimmte Prioritäten zugewiesen werden, die auf der Basis eines historischen Betrachtungsmusters der Datei oder der Bearbeitungstätigkeit der Datei bestimmt werden.
  7. Verfahren nach irgendeinem der vorstehenden Ansprüche, worin eine Anwendung auf dem Client-Gerät installiert ist, um Inhalte der Datei auf dem Client-Gerät anzuzeigen, und die Anwendung nicht verändert wird, um die Anzeige der ausgewählten Teile der Datei zu ermöglichen.
  8. Verfahren nach irgendeinem der vorstehenden Ansprüche, die des Weiteren die Verschlüsselung des (der) betreffenden Teil(e) der Datei umfasst, bevor der (die) betreffende(n) Teil(e) der Datei auf dem Client-Gerät gespeichert wird, worin die Verschlüsselung die Verwendung eines ersten Schlüssels und eines ersten Initialisierungsvektors beinhaltet, und der erste Schlüssel und ein zweiter Initialisierungsvektor, der sich vom ersten Initialisierungsvektor unterscheidet, zum Verschlüsseln eines anderen Teils der Datei verwendet werden, die auf dem Client-Gerät gespeichert ist.
  9. Verfahren nach Anspruch 8, die des Weiteren die Speicherung des ersten Initialisierungsvektors und des zweiten Initialisierungsvektors in einer Metadatei umfasst, worin jeder Eintrag in der Metadatei eine Teilbezeichnung beinhaltet, die jeden der ausgewählten Teile bezeichnet, sowie eine Angabe dazu, ob jeder der ausgewählten Teile auf dem Client-Gerät gespeichert ist.
  10. Verfahren nach irgendeinem der vorstehenden Ansprüche, die des Weiteren die Ermittlung der Größe der Teile der Datei auf der Basis mindestens eines der folgenden Elemente bestimmt: der Netzwerkverbindungsgeschwindigkeit, des Dateityps und einer Datenmenge innerhalb der Datei, die laut der Prognose von einem Benutzer des Client-Gerätes angefordert werden wird.
  11. Ein System für den Zugriff auf Teile einer Datei auf einem Client-Gerät, worin das System mindestens einen Computerprozessor umfasst, der so konfiguriert ist, dass er: eine oder mehrere Teile einer Datei zum Herunterladen auf das Client-Gerät auswählt, worin die Datei auf einem webbasierten Speichersystem gespeichert ist, das über ein Netzwerk mit dem Client-Gerät kommuniziert; mindestens einen der ausgewählten Teile erkennt, die nicht auf dem Client-Gerät gespeichert sind; ohne Zutun des Benutzers eine Anforderung an das webbasierte Speichersystem sendet, den (die) Teil(e) der Datei herunterzuladen; und den (die) betreffenden Teil(e) der Datei über das Netzwerk auf das Client-Gerät herunterzuladen.
  12. System nach Anspruch 11, worin der (mindestens eine) Computerprozessor mindestens einen Teil ermittelt, indem er die ausgewählten Teile mit Einträgen in einer Metadatei vergleicht, wobei jeder Eintrag in der Metadatei eine Teilbezeichnung beinhaltet, die jeden der ausgewählten Teile bezeichnet, und eine Angabe dazu, ob jeder der ausgewählten Teile auf dem Client-Gerät gespeichert ist.
  13. System nach Anspruch 12, worin die Metadatei auf dem Client-Gerät gespeichert ist und für einen Benutzer des Client-Gerätes nicht zugänglich ist.
  14. System nach Anspruch 12 oder Anspruch 13, worin der mindestens eine Computerprozessor des Weiteren so konfiguriert ist, dass er die Metadatei aktualisiert, nachdem der (mindestens eine) ermittelte Teil heruntergeladen wurde, so dass sie anzeigt, dass der (mindestens eine) ermittelte Teil auf dem Client-Gerät gespeichert ist.
  15. System nach irgendeinem der Ansprüche 11 bis 14, worin die Datei einem Dokument entspricht und der mindestens eine Computerprozessor des Weiteren so konfiguriert ist, dass er einem Benutzer, der das Client-Gerät benutzt, einen ersten Teil des Dokumentes anzeigt, und wobei die ausgewählten Teile der Datei zweite und dritte Teile des Dokumentes einschließen, die an den ersten Teil angrenzen.
  16. System nach irgendeinem der Ansprüche 11 bis 15, worin die ausgewählten Teile der Datei Teilen der Datei entsprechen, denen bestimmte Prioritäten zugewiesen werden, die auf der Basis eines historischen Betrachtungsmusters der Datei oder der Bearbeitungstätigkeit der Datei bestimmt werden.
  17. System nach irgendeinem der Ansprüche 11 bis 16, worin auf dem Client-Gerät eine Anwendung installiert ist, die Inhalte der Datei auf dem Client-Gerät anzeigt, und wobei die Anwendung nicht verändert wird, um die Anzeige der ausgewählten Teile der Datei zu ermöglichen.
  18. System nach irgendeinem der Ansprüche 11 bis 17, worin der mindestens eine Computerprozessor des Weiteren so konfiguriert ist, dass er den angegebenen (mindestens einen) Teil der Datei verschlüsselt, bevor der (die) betreffende(n) Teil(e) der Datei auf dem Client-Gerät gespeichert wird (werden), mithilfe eines ersten Schlüssels und eines ersten Initialisierungsvektors, und wobei der erste Schlüssel und ein zweiter Initialisierungsvektor, der sich vom ersten Initialisierungsvektor unterscheidet, zum Verschlüsseln eines anderen Teils der Datei verwendet werden, die auf dem Client-Gerät gespeichert ist.
  19. System nach Anspruch 18, worin der (mindestens eine) Computerprozessor des Weiteren so konfiguriert ist, dass er den ersten Initialisierungsvektor und den zweiten Initialisierungsvektor in einer Metadatei speichert, wobei jeder Eintrag in der Metadatei eine Teilbezeichnung beinhaltet, die jeden der ausgewählten Teile angibt, sowie eine Angabe dazu, ob jeder der ausgewählten Teile auf dem Client-Gerät gespeichert ist.
  20. System nach irgendeinem der Ansprüche 11 bis 19, worin der (mindestens eine) Computerprozessor des Weiteren so konfiguriert ist, dass er eine Größe des Teils/der Teile der Datei auf der Grundlage mindestens eines der folgenden Elemente bestimmt: der Netzwerkverbindungsgeschwindigkeit, des Dateityps und einer Datenmenge innerhalb der Datei, deren Anforderung durch einen Benutzer des Client-Gerätes vorhergesagt wird.
DE112016004168.3T 2015-09-14 2016-09-01 Systeme und Verfahren zum Speichern und Auslesen von Inhalten Pending DE112016004168T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/853,214 US10887371B2 (en) 2015-09-14 2015-09-14 Systems and methods for content storage and retrieval
US14/853,214 2015-09-14
PCT/US2016/049848 WO2017048517A1 (en) 2015-09-14 2016-09-01 Systems and methods for content storage and retrieval

Publications (1)

Publication Number Publication Date
DE112016004168T5 true DE112016004168T5 (de) 2018-06-21

Family

ID=56896835

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016107380.4U Active DE202016107380U1 (de) 2015-09-14 2016-09-01 Systeme zum Speichern und Auslesen von Inhalten
DE112016004168.3T Pending DE112016004168T5 (de) 2015-09-14 2016-09-01 Systeme und Verfahren zum Speichern und Auslesen von Inhalten

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202016107380.4U Active DE202016107380U1 (de) 2015-09-14 2016-09-01 Systeme zum Speichern und Auslesen von Inhalten

Country Status (8)

Country Link
US (2) US10887371B2 (de)
EP (1) EP3350722B1 (de)
JP (1) JP6789244B2 (de)
KR (1) KR102072854B1 (de)
CN (1) CN107810499B (de)
DE (2) DE202016107380U1 (de)
GB (1) GB2555952B (de)
WO (1) WO2017048517A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255242B2 (en) * 2016-06-29 2019-04-09 RedCritter Corp. Communications platform for implementing a recognition and reward system
US10484354B2 (en) * 2017-02-15 2019-11-19 Telefonaktiebolaget Lm Ericsson (Publ) Data owner restricted secure key distribution
US11533384B2 (en) * 2020-03-20 2022-12-20 International Business Machines Corporation Predictive provisioning of cloud-stored files

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3808102B2 (ja) 1995-10-27 2006-08-09 スペシャルティ、コーティング、システムズ、インコーポレイテッド 半導体ウエハ上へのパリレンaf4の蒸着方法
US6516339B1 (en) * 1999-08-18 2003-02-04 International Business Machines Corporation High performance client/server editor
US7630986B1 (en) * 1999-10-27 2009-12-08 Pinpoint, Incorporated Secure data interchange
US6842770B1 (en) * 2000-08-18 2005-01-11 Apple Computer, Inc. Method and system for seamlessly accessing remotely stored files
GB0510991D0 (en) 2005-05-28 2005-07-06 Xaar Technology Ltd Method of printhead passivation
GB0513375D0 (en) * 2005-06-30 2005-08-03 Retento Ltd Computer security
US7660581B2 (en) * 2005-09-14 2010-02-09 Jumptap, Inc. Managing sponsored content based on usage history
US8086946B2 (en) * 2006-09-05 2011-12-27 Adobe Systems Incorporated Methods and apparatus for optimizing responsiveness of portable documents
JP5574606B2 (ja) 2009-01-29 2014-08-20 キヤノン株式会社 情報処理システム、その処理方法、情報処理装置及びプログラム
US8697458B2 (en) 2009-04-22 2014-04-15 Shat-R-Shield, Inc. Silicone coated light-emitting diode
WO2011020088A1 (en) * 2009-08-14 2011-02-17 Azuki Systems, Inc. Method and system for unified mobile content protection
US9021468B1 (en) * 2010-05-18 2015-04-28 Google Inc. Bundling extension installation with web browser installation
CN102024054A (zh) * 2010-12-10 2011-04-20 中国科学院软件研究所 一种面向密文云存储的文档检索方法与系统
CN102075542B (zh) * 2011-01-26 2012-12-19 中国科学院软件研究所 一种云计算数据安全支撑平台
US8924500B2 (en) * 2011-03-29 2014-12-30 Amazon Technologies, Inc. Local storage linked to networked storage system
JP6082387B2 (ja) * 2011-05-14 2017-02-15 ビットカーサ インコーポレイテッド ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム
JP5163781B2 (ja) * 2011-07-15 2013-03-13 株式会社日立製作所 ダウンロード制御装置
EP2560344B8 (de) 2011-08-18 2018-06-27 Apple Inc. Verwaltung von Downloads über einen netzwerkbasierten digitalen Datenspeicher basierend auf Netzwerkleistung
CN102520922B (zh) * 2011-11-14 2016-04-13 上海交通大学 一种协作环境下的远程开发方法及其系统
US8886752B2 (en) * 2011-11-21 2014-11-11 Sony Computer Entertainment America System and method for optimizing transfers of downloadable content
US9542466B2 (en) * 2012-05-10 2017-01-10 Aetherstore Inc. Systems and methods for distributed storage
CN104364020A (zh) 2012-06-18 2015-02-18 Hzo股份有限公司 对全装配电子设备的内部表面施加保护涂层的系统和方法
CN102882923B (zh) * 2012-07-25 2015-04-15 北京亿赛通科技发展有限责任公司 移动终端安全存储系统及方法
US20140036519A1 (en) * 2012-08-01 2014-02-06 Raymond L. Cloward Spiraling support tube
US10140269B2 (en) * 2013-03-12 2018-11-27 Microsoft Technology Licensing, Llc Viewing effects of proposed change in document before committing change
US9538232B2 (en) * 2013-03-14 2017-01-03 Verizon Patent And Licensing Inc. Chapterized streaming of video content
CN104079704A (zh) * 2013-03-26 2014-10-01 联想(北京)有限公司 对数据进行同步的移动终端和服务器及相应的方法
CN104079615B (zh) * 2013-03-29 2018-11-09 联想(北京)有限公司 文件下载方法和信息处理装置
JP6107341B2 (ja) 2013-04-05 2017-04-05 富士通株式会社 データ管理プログラム,データ管理装置およびデータ管理方法
US9405767B2 (en) * 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
US9665501B1 (en) * 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
EP2819379A1 (de) 2013-06-28 2014-12-31 Thomson Licensing Verfahren zur Anpassung des Herunterladeverhaltens eines zum Empfang von Multimediainhalt konfigurierten Client-Endgeräts und zugehöriges Endgerät
CN104468664A (zh) * 2013-09-18 2015-03-25 中兴通讯股份有限公司 一种上传文件到云存储系统的方法、下载方法及装置
US9326026B2 (en) 2013-10-31 2016-04-26 At&T Intellectual Property I, Lp Method and apparatus for content distribution over a network
US10187358B2 (en) 2013-12-03 2019-01-22 Amazon Technologies, Inc. Data transfer optimizations
CN104717254B (zh) * 2013-12-12 2019-01-08 华为技术有限公司 文件访问的方法和云网关
CN104717240A (zh) * 2013-12-12 2015-06-17 鸿合科技有限公司 文件网络共享方法及装置
US10200427B2 (en) 2014-01-13 2019-02-05 Facebook, Inc. Systems and methods for streaming digital content using an intermediate server
CN104158857B (zh) * 2014-07-25 2017-10-27 中南大学 一种提供网络化操作系统服务的装置和方法
US9904604B2 (en) * 2014-09-30 2018-02-27 Code 42 Software, Inc. Distributed file system backup and synchronization
US9959280B1 (en) * 2014-09-30 2018-05-01 EMC IP Holding Company LLC Garbage collection of data tiered to cloud storage
US11461533B2 (en) * 2014-10-15 2022-10-04 International Business Machines Corporation Generating a document preview
US20170149860A1 (en) * 2014-10-19 2017-05-25 Tensera Networks Ltd. Partial prefetching of indexed content
US10409781B2 (en) * 2015-04-29 2019-09-10 Box, Inc. Multi-regime caching in a virtual file system for cloud-based shared content
KR102554832B1 (ko) 2015-05-07 2023-07-11 어플라이드 머티어리얼스, 인코포레이티드 챔버 컴포넌트들을 위한 부식 제어

Also Published As

Publication number Publication date
US20210126963A1 (en) 2021-04-29
KR102072854B1 (ko) 2020-02-03
JP6789244B2 (ja) 2020-11-25
CN107810499B (zh) 2022-03-25
CN107810499A (zh) 2018-03-16
US11930070B2 (en) 2024-03-12
GB201717893D0 (en) 2017-12-13
EP3350722A1 (de) 2018-07-25
KR20170134586A (ko) 2017-12-06
GB2555952A (en) 2018-05-16
US20170078362A1 (en) 2017-03-16
WO2017048517A1 (en) 2017-03-23
GB2555952B (en) 2021-10-06
JP2018526700A (ja) 2018-09-13
US10887371B2 (en) 2021-01-05
EP3350722B1 (de) 2021-02-17
DE202016107380U1 (de) 2017-02-06

Similar Documents

Publication Publication Date Title
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112016001075B4 (de) Verteiltes speichern und abrufen von datensätzen
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE69728176T2 (de) Verfahren und gerät das verteilte steuerung von gemeinsamen betriebsmitteln erlaubt
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE10062063B4 (de) Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität
DE202013012465U1 (de) End-to-End-Exposition von nativen Datentypen an Drittanbieteranwendungen
DE112012006227B4 (de) Systeme und verfahren für den remotezugriff auf den direkten speicher mit reduzierter latenzzeit
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112016006047T5 (de) Skalierbare techniken zur datenübertragung zwischen virtuellen maschinen
DE112018000227B4 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE69432064T2 (de) Dateidaten-Speicherung auf Festplatte in vielfacher Darstellung
US20210126963A1 (en) Systems and methods for content storage and retrieval
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
DE102020118005A1 (de) Verfahren und einrichtung zum dynamischen drosseln von rechenengines
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE112012002562T5 (de) Unterbringung von Daten in Partitionen auf einer Speichereinheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0015163000

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R016 Response to examination communication