-
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
-