DE19919146A1 - Hochleistungs-Nachrichtenspeicher - Google Patents

Hochleistungs-Nachrichtenspeicher

Info

Publication number
DE19919146A1
DE19919146A1 DE19919146A DE19919146A DE19919146A1 DE 19919146 A1 DE19919146 A1 DE 19919146A1 DE 19919146 A DE19919146 A DE 19919146A DE 19919146 A DE19919146 A DE 19919146A DE 19919146 A1 DE19919146 A1 DE 19919146A1
Authority
DE
Germany
Prior art keywords
message
index
cell
store
data
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.)
Withdrawn
Application number
DE19919146A
Other languages
English (en)
Inventor
William J Yeager
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE19919146A1 publication Critical patent/DE19919146A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers

Abstract

Es werden ein Produkt und ein Verfahren zum Erzeugen eines effizienten Nachrichtenspeichers offenbart und es wird ein Übermittlungssystem bereitgestellt. Ein Nachrichtenspeicher (100) mit einem Indexverzeichnis (104), einer Indexdatei (106) und einem Datenspeicherplatzbereich, die alle auf Seiten basieren, wird beschrieben. Jede Seite entspricht einem Zeitraum, wie z. B. einem Tag. Jeder Datenspeicherplatz enthält Nachrichtendaten und den eigentlichen Inhalt der Nachricht. Die Indexdatei (106) enthält Indexdateizellen (120), die Indexinformationen speichern, welche eine zugehörige Nachricht kennzeichnen. Das Indexverzeichnis (104) enthält Indexverzeichniszellen (116), die Informationen über die Stelle einer zugeordneten Indexdateizelle speichern, und wird dadurch einer Nachricht zugeordnet. Er enthält auch Benutzerordner (122) auf Seitenbasis, die jeweils Benutzerzellen im Benutzerspeicher aufweisen, die auf eine einem Benutzer zugeordnete Nachricht verweisen. Eine Nachricht umfaßt einen Verweiszeiger zu einer zugeordneten Indexdateizelle (120) und einen Verweiszeiger zu einer zugeordneten Indexverzeichniszelle (116). In Indexverzeichniszeiger in der Benutzerzelle, ein Indexdateizeiger in der Indexverzeichniszelle (116), ein Nachrichtenzeiger in der Indexdateizelle (120) und zwei Zeiger in der Nachricht ermöglichen, daß sich der Nachrichtenspeicher (100) bei Bedarf selbst rekonstruiert.

Description

Die vorliegende Erfindung betrifft im allgemeinen das Gebiet der Computersoftware- und Client/Server-Anwendungen. Insbesondere betrifft sie die Organisation und Speicherung von E-Mail-Nachrichtendaten, auf die von Kunden über ein Computernetzwerk zugegriffen wird.
Das beschleunigte Wachstum der Netzwerkdatentechnik in den 90er Jahren wurde von einer immer mehr vorherrschenden Form der Kommunikation begleitet, die sehr häufig als "E-Mail" bezeichnet wird. Da mehr Personen, ob zu Hause, in Gesellschaften, kleinen Geschäften, akademischen Einrichtungen oder Regierungsorganisationen, Zugang zu Computern haben, die mit irgendeiner Art Computernetzwerk verbunden sind, wird die elektronische Post schnell (und ist in vielen Umgebungen bereits) eine bevorzugte Art der Kommunikation. Leute finden die E-Mail eine effiziente und wirksame Art und Weise, um miteinander zu kommunizieren, sei es daß sie eine einfache einmalige Nachricht senden oder daß sie eine Langzeit-Diskussion oder -Konversation führen.
Während die E-Mail jahrelang innerhalb großer Instanzen wie z. B. Gesellschaften und Universitäten zum Senden von Nachrichten innerhalb der internen Netzwerke der Instanzen verwendet wurde und typischerweise auf anwendereigenen Formaten und Protokollen basiert, bringt das Internet die E-Mail aus dem Bereich von großen Unternehmen heraus und in allgemeinen Gebrauch. Da das Internet ein öffentlich zugängliches, globales Computernetzwerk ist, wird es wegen seiner E-Mail-Fähigkeit immer mehr genutzt. Außerdem werden das Internet-Protokoll (IP) und die Kommunikationsebenen des Internets (TCP/IP) zur Entwicklung von Computernetzwerken, die als Intranets bekannt sind, innerhalb privater Instanzen auf der Basis von IP und TCP/IP anstelle von anwendereigenen Formaten und Protokollen verwendet. Diese Vorgehensweise ermöglicht beispielsweise, daß eine Gesellschaft oder eine Universität ein internes Computernetzwerk besitzt, das mit dem Internet kompatibel ist und alle Merkmale des Internets aufweist, einschließlich Web-Sites, der Fähigkeit zu Hyperlink und natürlich des Sendens und Empfangens einer E-Mail.
Das explosionsartige Wachstum des Internets und die zunehmende Anziehungskraft von Intranets hat zu einer Ausbreitung von E-Mail-Nachrichten geführt. Typischerweise werden E-Mail-Nachrichten auf Netzwerkservern oder auf den Festplattenlaufwerken von Kunden- und eigenständigen Computern empfangen und gespeichert. Es besteht eine zunehmende Tendenz oder Praxis und in vielen Fällen Notwendigkeit, E-Mail-Nachrichten elektronisch zu speichern und sie auf Wunsch leicht abzurufen. Dies kann beispielsweise in einer beliebigen Art von Forschungsanstalt von Bedeutung sein, wo Nachrichten, die Ideen, Kommentare oder Analysen enthalten, unter Forschern, möglicherweise in verschiedenen Ländern, über einen Zeitraum von mehreren Jahren übermittelt werden. Es ist beispielsweise vorhersehbar, daß eine bestimmte Nachricht, die zu einem speziellen Zeitpunkt vor zwei Jahren zwischen zwei Forschern übermittelt wurde, die nicht mehr vorhanden sind, abgerufen werden muß. Diese Fähigkeit könnte natürlich auch in einer Geschäftsumgebung oder in anderen Umgebungen ein wichtiges und nützliches Merkmal sein.
Die Ausbreitung der E-Mail und die steigende Anzahl von gespeicherten Nachrichten, gekoppelt mit dem zunehmenden Bedarf für das Abrufen gespeicherter Nachrichten, hat Probleme mit derzeitigen Indexierungsschemen und Nachrichten aufgeworfen. Es besteht ein zunehmender Trend, Nachrichten auf Servern anstatt auf Kundencomputern zu speichern. Ein Mail-Server arbeitet als zentrale Ablage für Nachrichten und besitzt die Vorteile, daß er regelmäßig gesichert wird, von einem Verwalter gewartet wird und (in den meisten Fällen) schnell repariert wird, wenn er zusammengebrochen ist (z. B. wenn er abstürzt). Wenn ein Benutzer eine Abfrage macht, wird sie somit vom Server bearbeitet und zum Kunden übermittelt.
Die Zusammensetzung einer heutigen E-Mail-Nachricht kann ebenso stark variieren wie die Art der Abfrage. In einem einfachen Fall kann eine E-Mail-Nachricht zusätzlich zu den erforderlichen Anfangsblöcken einen einfachen Nachrichtenteil enthalten, der aus ein paar Textzeilen besteht. Andererseits kann eine E-Mail verschiedene Anhänge aufweisen, die komplexe Grafiken, Audiosegmente, Video, Computeranimation, Text mit spezieller Codierung (z. B. bei einer nicht auf lateinischen Buchstaben basierenden Sprache) und sogar ganze andere E-Mail-Nachrichten umfassen können.
Abfragen für Nachrichten können auch hinsichtlich der Tiefe und Breite der gewünschten Information variieren. Eine Abfrage kann beispielsweise für den gesamten Inhalt einer einzigen Nachricht sein, die vor mehreren Jahren zwischen zwei Personen übermittelt wurde. Oder eine Abfrage kann für eine Liste von Empfängern irgendeiner Nachricht sein, die hinsichtlich einer speziellen Angelegenheit in den letzten 24 Stunden gesandt wurde, wobei die Liste zwischen denjenigen Empfängern, die die Nachricht(en) geöffnet haben, und jenen, die dies nicht getan haben, unterscheidet. Insgesamt ist die Art der E-Mail-Nachrichten und der Abfragen für E-Mail-Nachrichtendaten komplexer geworden, wodurch die Schwächen der derzeitigen Mail-Server bei der Bearbeitung der Nachrichtenspeicherung und des Nachrichtenabrufs offenbart werden.
Die meisten Mail-Server, die derzeit für die vorstehend erörterte Art der Nachrichtenspeicherung und des Nachrichtenabrufs verwendet werden, sind gemäß dem Internet-Nachrichtenzugangsprotokoll oder IMAP konfiguriert. IMAP ist eine Sammlung von Befehlen zur Verarbeitung von Nachrichten und Indizes zum Sortieren und Speichern aller Informationen, die mit Nachrichten und den an ihnen ausgeführten Handlungen verbunden sind. Damit ein nach IMAP konfigurierter Server das IMAP vollständig ausnutzt, müssen mit Benutzern auf dem Netzwerk und Nachrichten in Zusammenhang stehende Informationen, die den Nachrichteninhalt und Metadaten hinsichtlich der Nachricht enthalten, derart gespeichert werden, daß die IMAP- Indexierung ausgenutzt wird. Obwohl IMAP-Server Daten in einem gewissen Grad gemäß der IMAP-Indexierung speichern, tut es keiner derart, daß ein schneller, zuverlässiger und nicht konkurrierender Abruf und Speicherung der Daten optimiert wird.
Derzeitige IMAP-Server erleiden Konkurrenzprobleme und andere Unwirtschaftlichkeiten, die zu einer schlechten Leistung führen. Obwohl sie Nachrichtendaten als Sammlung von Feldern behandeln, die einen Datensatz bilden, d. h. sie basieren auf Datensätzen, führt das Schreiben einer neuen Nachricht in eine Eingangsbox eines Benutzers (die Mailbox, in der ein Benutzer neue Post empfängt) sehr wahrscheinlich zur Minderung des Benutzers, andere Operationen an der Eingangsbox auszuführen. Der Nachrichtenspeicher dieser IMAP-Server war nicht dazu ausgelegt, die im IMAP verfügbare Indexierung effizient zu nutzen. Ein Benutzer kann beispielsweise nur Informationen hinsichtlich bestimmter Felder (z. B. Datum, Empfänger, Angelegenheiten, usw.) aus allen Nachrichten in einer Mailbox wünschen. IMAP-Server rufen wahrscheinlich mehr Informationen als erforderlich ab, um typische Benutzerabfragen für Daten zu erfüllen. Um einfach die Anzahl der zu einem speziellen Benutzer hinsichtlich einer speziellen Angelegenheit gesandten Nachrichten zu erhalten, kann folglich ein IMAP- Server den gesamten Inhalt aller Nachrichten abrufen, um die Anzahl der Nachrichten zu gewinnen. Derzeitigen IMAP- Servern mangelt es auch an starker Integrität und Fähigkeiten zur Konsistenzprüfung, die im IMAP möglich ist.
Andere Implementierungen von Mail-Servern erfordern, daß eine gesamte Nachricht übermittelt oder kopiert wird, ungeachtet dessen, welche Art Information hinsichtlich der Nachricht abgefragt wird. Dieses Problem ist ähnlich zu VARMAIL, einer älteren Mail-Umgebung auf Dateibasis im UNIX-Betriebssystem, bei der die Ausgabe einer Nachricht alle Schreiboperationen in einen Mail-Ordner sperrte. Diese Standardprozedur verursachte, daß das Mail- Übermittlungssystem beträchtlich langsam war. Außerdem erforderte die VARMAIL-Umgebung auch, daß mehrere Kopien derselben E-Mail-Nachricht im Speicher des Kundencomputers gespeichert werden.
Es ist daher Aufgabe der Erfindung, einen auf einem Server basierenden Nachrichtenspeicher vorzusehen, der derart eingeteilt ist, daß Indizes, Nachrichtendaten und Benutzerdaten logisch angeordnet sind, um die Nachrichtenspeicher- und -abrufzeiten zu verbessern und eine starke Datenintegrität aufrechtzuerhalten. Der Nachrichtenspeicher sollte die Konkurrenz verringern und ermöglichen, daß Benutzer und der Server Lese- und Schreiboperationen an Nachrichten und Mail-Ordnern gleichzeitig durchführen. Es wäre auch erwünscht, den Grad der Spezifität, der bei der Bearbeitung von Benutzerabfragen für Daten vom Server erkennbar ist, zu erhöhen, so daß der Server nur Daten, die abgefragt wurden, mit reduzierten externen Daten abruft, wodurch die Abrufgeschwindigkeit erhöht wird und Speicherplatz gespart wird.
Um die vorstehende Aufgabe zu lösen, werden ein Verfahren, eine Vorrichtung und ein maschinenlesbares Medium zum Erzeugen eines effizienten Nachrichtenspeichers und Übermittlungssystems bereitgestellt. Gemäß einem Aspekt der vorliegenden Erfindung wird ein Nachrichtenspeicher mit einem Indexverzeichnis, einer Indexdatei und einem Datenspeicherplatzbereich, die alle auf Seiten basieren, beschrieben. Jede Seite entspricht einem Zeitraum, wie z. B. bei einer Ausführungsform einem Tag. Jeder Datenspeicherplatz enthält Nachrichtendaten und den eigentlichen Inhalt der Nachricht. Die Indexdatei enthält Indexdateizellen, die Indexinformationen speichern, welche eine zugehörige Nachricht kennzeichnen. Das Indexverzeichnis enthält Indexverzeichniszellen, die Informationen über die Stelle einer zugeordneten Indexdateizelle speichern, und wird dadurch einer Nachricht zugeordnet.
Bei einer Ausführungsform umfaßt der Nachrichtenspeicher auch Benutzerordner auf Seitenbasis, die jeweils einem Benutzer zugeordnete Benutzerzellen aufweisen, die auf eine Nachricht verweisen, im Benutzerspeicher. In einer weiteren Ausführungsform enthält jede Benutzerzelle einen Verweis auf eine Indexverzeichniszelle im Indexverzeichnis. Bei noch einer weiteren Ausführungsform ist jeder Benutzerordner gemäß vorbestimmten Kriterien auf Benutzerbasis eingestuft.
Bei einer weiteren Ausführungsform der vorliegenden Erfindung enthält eine Indexverzeichniszelle die Anzahl der Benutzer, die derzeit auf eine zugehörige Nachricht Bezug haben, und einen Verweiszeiger zu einer zugehörigen Indexdateizelle. Bei noch einer weiteren Ausführungsform enthält die Indexdateizelle einen Verweiszeiger zu einer zugehörigen Nachricht in einem Datenspeicherplatz und die Größe der zugehörigen Nachricht.
Bei noch einer weiteren Ausführungsform der vorliegenden Erfindung enthält eine Nachricht einen Verweiszeiger zu einer zugehörigen Indexdateizelle und einen Verweiszeiger zu einer zugehörigen Indexverzeichniszelle. Bei noch einer weiteren Ausführungsform der vorliegenden Erfindung ermöglichen der Indexverzeichniszeiger in der Benutzerzelle, der Indexdateizeiger in der Indexverzeichniszelle, der Nachrichtenzeiger in der Indexdateizelle und die zwei Zeiger in der Nachricht, daß sich der Nachrichtenspeicher bei Bedarf selbst rekonstruiert.
Bei einem weiteren Aspekt der Erfindung wird ein Verfahren zur effizienten Übermittlung von neuen Nachrichten an den Nachrichtenspeicher bereitgestellt. Bei einer Ausführungsform werden eingehende Daten und zugehörige Indexdaten an spezielle Teile eines Nachrichtenspeichers zur im wesentlichen gleichen Zeit angehängt. Während die eingehenden Daten und die Indexdaten in den Nachrichtenspeicher geschrieben werden, kann ein Kunde im wesentlichen ungehindert auf vorhandene Daten im Nachrichtenspeicher zugreifen. Bei noch einer weiteren Ausführungsform wird der Zugriff auf einen ungenutzten Teil des Nachrichtenspeichers, wo die eingehenden Daten angehängt werden, beschränkt.
Die Erfindung kann zusammen mit deren weiteren Vorteilen am besten durch Bezugnahme auf die folgende Beschreibung in Verbindung mit den zugehörigen Zeichnungen verstanden werden, wobei gilt:
Fig. 1a ist ein Blockdiagramm, das einen Nachrichtenspeicher gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
Fig. 1b ist ein Blockdiagramm, das einen Datenspeicherbereich eines Nachrichtenspeichers gemäß einer Ausführungsform der vorliegenden Erfindurig zeigt.
Fig. 1c ist ein Blockdiagramm, das einen Benutzerspeicherbereich eines Nachrichtenspeichers gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
Fig. 2a ist eine Darstellung einer Datenstruktur, die Felder in einer wie in Fig. 1b dargestellten Indexverzeichniszelle zeigt.
Fig. 2b ist eine Darstellung einer Datenstruktur, die Felder in einem wie in Fig. 1b dargestellten Indexverzeichnis-Anfangsblock zeigt.
Fig. 3 ist eine Darstellung einer Datenstruktur, die Felder innerhalb einer Indexdateizelle ausführlicher zeigt.
Fig. 4 ist eine Darstellung einer Datenstruktur, die eine Abschnitts-Relativzeigerliste der vorliegenden Erfindung ausführlicher zeigt.
Fig. 5 ist eine Darstellung einer Datenstruktur, die einen Anfangsblock und eine Nachricht in einem wie in Fig. 1b dargestellten Datenspeicherplatz- Verzeichnis ausführlicher zeigt.
Fig. 6 ist eine Darstellung einer Datenstruktur, die eine Nachrichtenzelle innerhalb eines Benutzerordners von Fig. 1c ausführlicher zeigt.
Fig. 7 ist eine Darstellung einer Datenstruktur, die einen Benutzerordner von Fig. 1c ausführlicher zeigt.
Fig. 8 ist eine Darstellung einer Datenstruktur, die Komponenten zeigt, die beim Empfang einer E-Mail- Nachricht beteiligt sind, um die Nachricht an einen Nachrichtenspeicher der vorliegenden Erfindung zu übermitteln.
Fig. 9 ist ein Ablaufplan, der den Prozeß der Übermittlung einer Nachricht an den Nachrichtenspeicher der vorliegenden Erfindung zeigt.
Fig. 10 ist ein Blockdiagramm eines typischen Computersystems, das sich zur Implementierung der beschriebenen Ausführungsform der vorliegenden Erfindung eignet.
Es wird nun auf eine bevorzugte Ausführungsform der Erfindung im einzelnen Bezug genommen. Ein Beispiel der bevorzugten Ausführungsform ist in den zugehörigen Zeichnungen dargestellt. Obwohl die Erfindung in Verbindung mit einer bevorzugten Ausführungsform beschrieben wird, ist es selbstverständlich, daß es nicht vorgesehen ist, die Erfindung auf eine bevorzugte Ausführungsform zu begrenzen. Im Gegenteil ist vorgesehen, Alternativen, Modifikationen und Äquivalente einzuschließen, die innerhalb des Gedankens und Schutzbereichs der Erfindung, wie durch die angefügten Ansprüche definiert, enthalten sein können.
Ein verbesserter Nachrichtenspeicher zum Speichern von Daten, wie z. B. E-Mail-Nachrichten, zugehörigen Informationen und Benutzerinformationen, ist in den verschiedenen Zeichnungen dargestellt. Bei der beschriebenen Ausführungsform ist der verbesserte Nachrichtenspeicher dazu ausgelegt, Mail-Nachrichten, beispielsweise Internet-E-Mail-Nachrichten, zu speichern, kann aber zum Speichern von anderen Arten von Informationen verwendet werden. Hinsichtlich der beschriebenen Ausführungsform ist es erwünscht, Mail-Nachrichten auf einem Server zu speichern und zu indexieren, wobei der Server auf Abfragen von einem Kunden (d. h. Benutzer) für Daten hinsichtlich der Nachrichten dieses Kunden reagiert. Gemäß der beschriebenen Ausführungsform kann der Nachrichtenspeicher dazu ausgelegt sein, auf Befehle und Nachrichten der weitverbreitetsten Mail-Protokolle zu reagieren. Es ist zu erkennen, daß zwei solche Protokolle das Internet-Nachrichtenzugangsprotokoll (IMAP) und das Postamtprotokoll (POP) sind. Für den Zweck der Erläuterung und Beschreibung der vorliegenden Erfindung gemäß der beschriebenen Ausführungsform ist der den Nachrichtenspeicher enthaltende Server dazu ausgelegt, hauptsächlich auf IMAP- und POP-Befehle und -Nachrichten zu reagieren (im allgemeinen als IMAP-Server bezeichnet) Hinsichtlich der beschriebenen Ausführungsform sollte beachtet werden, daß, obwohl IMAP-Server derzeit einen gewissen Grad an Indexierung aufweisen, die Gesamtkonfiguration des IMAP-Nachrichtenspeichers und des Grades der Indexierung außerstande ist, immer kompliziertere und anspruchsvollere Benutzerabfragen für Daten effizient zu verarbeiten.
Somit ermöglicht die zugrundeliegende Konfiguration auf Seitenbasis und der hohe Grad der Indexierung des Nachrichtenspeichers der vorliegenden Erfindung, daß der Server der beschriebenen Ausführungsform in einer sehr effizienten Art und Weise eingehende Nachrichten verarbeitet und Benutzerabfragen bearbeitet (um vorhandene Daten zu verarbeiten). Die zugrundeliegende Konfiguration des Nachrichtenspeichers auf Seitenbasis ermöglicht, daß Daten auf der Basis von vordefinierten Kriterien, wie z. B. einem Zeitraum, z. B. einem Tag oder einer Woche, eingeteilt werden, wodurch der Bedarf, einen ganzen Körper von Daten, von denen die meisten überflüssig wären, zu durchsuchen oder zu verarbeiten, beseitigt wird. Die hohe Granularität der Indexierung des Nachrichtenspeichers und die verschiedenen Speicherkomponenten, wie z. B. das Indexverzeichnis und die Indexdatei, die nachstehend ausführlich erörtert werden, ermöglichen ebenfalls, daß das System die Datenintegrität durch Verwendung von Bezugnahmen (auf andere Speicherkomponenten) und Zählern, die die Konsistenzprüfungen erleichtern und die Datenredundanz verringern, gewährleistet. Außerdem werden Benutzerabfragen und eingehende Nachrichten auf Datensatzbasis bearbeitet, wobei ein Datensatz im wesentlichen eine Kombination von Feldern in den verschiedenen Speicherkomponenten im Nachrichtenspeicher ist, was nachstehend ausführlich erörtert wird. Da typischerweise nur bestimmte Felder bei der Antwort auf eine Benutzerabfrage oder zur Verarbeitung einer eingehenden Nachricht erforderlich sind, kann der Server eine Abschnittssperrung durchführen, anstatt ganze Ordner oder Verzeichnisse zu sperren. Dies verringert stark die Konkurrenz zwischen dem Schreiben in den Server (z. B. Verarbeiten einer eingehenden Nachricht) und der Bearbeitung einer Benutzerabfrage, die einen Zugriff auf dieselbe Mailbox erfordert.
Ein Nachrichtenspeicher gemäß einer Ausführungsform der vorliegenden Erfindung eignet sich zum Speichern von Daten in Servern, die in einer weiträumig verteilten Computerumgebung (d. h. Zehntausende von Benutzern) oder in viel kleineren Computernetzwerken mit beispielsweise weniger als zehn Benutzern verwendet werden. Die Vorteile des verbesserten Nachrichtenspeichers werden in beiden Zusammenhängen und in den Zusammenhängen dazwischen realisiert. Beispielsweise ist der Server bei der beschriebenen Ausführungsform ein IMAP-Server, der eine Internet-E-Mail für Benutzer in einer weiträumig verteilten Computerumgebung speichert. Folglich ist es nützlich, die Struktur einer in diesem Beispiel verwendeten Internet-E- Mail-Nachricht kurz zu erläutern. Wie einem üblichen Fachmann gut bekannt ist, wird eine Internet-E-Mail- Nachricht gemäß dem MIME-Standard formatiert. Eine MIME- Nachricht besteht aus einem MIME-Anfangsblock und einem oder mehreren Hauptteilen oder -abschnitten, wobei jeder Hauptteil einen Anfangsblock aufweist. Das MIME-Format ermöglicht, daß eine E-Mail-Nachricht verschiedene Arten von Medien, wie z. B. Audio, Videobilder, nicht-englischen Text, HTML und so weiter, enthält. Ein Nachrichtenspeicher der beschriebenen Ausführungsform bringt MIME-Abschnitte durch verschiedene Indizes unter, die nachstehend erörtert werden. Bei anderen bevorzugten Ausführungsformen kann die beschriebene Indexstruktur verwendet werden, um andere Datenformate unterzubringen. Ein Nachrichtenspeicher gemäß der beschriebenen Ausführungsform ermöglicht den Abruf von speziellen MIME-Abschnitten einer speziellen Nachricht, ohne die gesamte Nachricht abzurufen, zusätzlich zur effizienten Bearbeitung von anderen stark spezifischen Abfragen.
Fig. 1a ist ein Blockdiagramm, das einen Nachrichtenspeicher gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Der Nachrichtenspeicher 100 umfaßt ein Datenspeicherplatz-Verzeichnis 102, ein Indexverzeichnis 104, eine Indexdatei 106 und ein Benutzerordner-Verzeichnis 110. Das Datenspeicherplatz- Verzeichnis 102 enthält eine Reihe von Datenspeicherplätzen 112. Das Indexverzeichnis 104 enthält einen Anfangsblock 114 und eine Reihe von Indexverzeichniszellen 116. Die Indexdatei 106 enthält einen Anfangsblock 118 und eine Reihe von Indexdateizellen 120. Das Benutzerordner- Verzeichnis 110 enthält eine Reihe von Benutzerordnern 122.
Der Nachrichtenspeicher 100 kann in zwei Speicherkategorien eingeteilt werden: einen Datenspeicher und einen Benutzerspeicher. Fig. 1b ist ein Blockdiagramm, das die Speicherkomponenten eines Datenspeicherbereichs gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Ein Datenspeicherbereich 124, der in Fig. 1b gezeigt ist, enthält ein Indexverzeichnis 104, eine Indexdatei 106 und ein Datenspeicherplatz-Verzeichnis 102. Jede dieser Speicherkomponenten ist gemäß einer Konfiguration auf Seitenbasis strukturiert. Jede Seite kann einem vordefinierten Kriterium entsprechen, wie z. B. einem speziellen Zeitraum. Bei der beschriebenen Ausführungsform basiert beispielsweise jede Seite der Speicherkomponenten auf einem Tag, wobei jede Speicherkomponente auf der oberen Ebene auf der Basis des Tages, an dem eine spezielle Nachricht empfangen wurde, organisiert ist. Bei anderen bevorzugten Ausführungsformen kann jede Seite in Abhängigkeit vom Volumen des Datenverkehrs auf dem System einer Woche oder einem achtstündigen Zeitraum entsprechen. Das Datenspeicherplatz-Verzeichnis 102 besteht aus Datenspeicherplätzen 108. Ein typischer Datenspeicherplatz 108 ist mit einem Anfangsblock 126 und einem repräsentativen Nachrichtenbereich 128 gezeigt. Das Datenspeicherplatz-Verzeichnis 102 oder der Datenspeicherplatz-Halter ist im wesentlichen ein Behälter zum Aufbewahren einer Reihe von Datenspeicherplätzen für einen vorher definierten Zeitraum, wie z. B. einem Tag. Somit werden bei der beschriebenen Ausführungsform im allgemeinen alle an einem gegebenen Tag empfangenen Nachrichten in einem Datenspeicherplatz gespeichert, der diesem speziellen Tag entspricht.
Bei der beschriebenen Ausführungsform enthält oder hält das Datenspeicherplatz-Verzeichnis 102 anfänglich drei Datenspeicherplätze. Die Speicherplätze sind in der Struktur im wesentlichen identisch zum Datenspeicherplatz 108. Ein oder mehrere zusätzliche Datenspeicherplätze 130 werden zum Datenspeicherplatz-Verzeichnis 102 hinzugefügt, wenn irgendeiner der anfänglichen drei Datenspeicherplätze eine konfigurierbare Plattendateigröße überschreitet. Bei anderen bevorzugten Ausführungsformen kann sich die Art und Weise, in der zusätzliche Datenspeicherplätze hinzugefügt werden, ändern. Der Nachrichtenspeicher kann beispielsweise anfänglich nur einen Datenspeicherplatz besitzen und einen zusätzlichen Datenspeicherplatz hinzufügen, wenn irgendeiner der anfänglichen Speicherplätze gefüllt ist. Wenn man zur beschriebenen Ausführungsform zurückkehrt, werden eingehende Nachrichten für einen speziellen Tag willkürlich unter den ersten drei Datenspeicherplätzen verteilt mit der Absicht, eine im wesentlichen gleichmäßige Verteilung unter den drei Datenspeicherplätzen zu haben. Diese Verteilung der Nachrichten wird fortgesetzt oder beibehalten, wenn zusätzliche Datenspeicherplätze zum Datenspeicherplatz-Verzeichnis 102 hinzugefügt werden. Bei der beschriebenen Ausführungsform werden, wenn die anfänglichen drei Datenspeicherplätze voll sind, zusätzliche drei Datenspeicherplätze hinzugefügt und die Nachrichten werden unter den neuen Datenspeicherplätzen willkürlich verteilt. Wie vorstehend erwähnt, kann ein Nachrichtenspeicher der vorliegenden Erfindung in großen Computerumgebungen mit großem Volumen oder viel kleineren Computernetzwerken verwendet werden. In einer großen verteilten Computerumgebung beispielsweise, wie bei der beschriebenen Ausführungsform, kann ein typischer Datenspeicherplatz-Halter eine maximale Plattendateigröße von 500 Megabytes besitzen.
Der Datenspeicherplatz 108 beginnt typischerweise mit einer Anfangsblockzelle 126. Dem Anfangsblock 126 folgen Daten, die sequentiell gespeichert sind, wie z. B. E-Mail- Nachrichten 128 im Speicherplatz 108. Bei anderen bevorzugten Ausführungsformen können die Daten Video- oder Audiosegmente, Datenbankdatensätze oder andere Formen von Daten sein. Bei der beschriebenen Ausführungsform werden die Nachrichten zu einem speziellen Datenspeicherplatz hinzugefügt und sind nicht in einer Zelle oder einem festen Speicherbereich enthalten. Obwohl die Größe einer Nachricht stark variieren kann, liegt eine typische E-Mail-Nachricht im Bereich von zwei bis zehn Kilobytes. Wie vorstehend erwähnt, werden bei der beschriebenen Ausführungsform die eingehenden Nachrichten willkürlich und vorzugsweise unter den ersten drei Datenspeicherplätzen für einen speziellen Tag gespeichert. Wenn sich die Datenspeicherplätze füllen, werden neue Datenspeicherplätze 130 erzeugt, um die Nachrichten zu speichern. Somit wird eine eingehende Nachricht, die an eine Vielzahl von Empfängern adressiert ist, einmal in einem Datenspeicherplatz gespeichert. Die Merkmale des Nachrichtenspeichers der vorliegenden Erfindung ermöglichen, daß die Empfänger (oder Eigentümer, Erzeuger usw.) einer Nachricht alle zu einer einzigen Kopie der Nachricht Bezug haben. Dieses Merkmal wird nachstehend ausführlicher erörtert. Bei der beschriebenen Ausführungsform kann ein typischer Datenspeicherplatz etwa 200 000 Nachrichten von zweieinhalb Kilobytes halten. Folglich können drei Datenspeicherplätze (d. h. die anfängliche Anzahl der Datenspeicherplätze, die einem speziellen Tag zugeordnet sind) bis zu oder ungefähr 600 000 E-Mail-Nachrichten halten. Natürlich können viele dieser Nachrichten in Abhängigkeit von der Art der Nachricht und der Anhänge ohne weiteres über zweieinhalb Kilobytes haben.
Wenn eine Nachricht empfangen wird, wird sie zusätzlich zur Speicherung in einem Datenspeicherplatz auch durch einen Indexierungsthread analysiert, so daß Index- und zugehörige Informationen im Indexverzeichnis 104 und in der Indexdatei 106 gespeichert werden können. Diese Informationen werden in einer speziellen Seite des Verzeichnisses 104 und der Datei 106 gespeichert. Bei der beschriebenen Ausführungsform basieren das Indexverzeichnis und die Indexdateien auf einem Tag, indem jedem Tag ein neues Verzeichnis und eine neue Datei zugeordnet wird. Zusätzliche Indexverzeichnisseiten 107 sind "hinter" der Indexverzeichnisseite 104 gezeigt. Das Indexverzeichnis 104 beginnt mit einem Anfangsblock 114, gefolgt von Indexverzeichniszellen. Eine Musterzelle ist im Bereich 116 gezeigt. Wenn eine eingehende Nachricht empfangen wird, wird sie analysiert und die Indexinformationen werden gewonnen und in einer Indexverzeichniszelle 116 gespeichert. Bei der beschriebenen Ausführungsform besitzt die Indexverzeichniszelle 116 beispielsweise eine feste Datensatzgröße von 24 Bytes. Bei anderen bevorzugten Ausführungsformen kann die Indexverzeichniszelle 116 in Abhängigkeit von der Art der gespeicherten Daten und dem erforderlichen Grad der Indexierung größer oder kleiner sein.
Wenn eine eingehende Nachricht analysiert wird, wird eine Indexierungsinformation hinsichtlich dieser Nachricht in der Indexdatei 106 gespeichert. Wie beim Indexverzeichnis und beim Datenspeicherplatz-Verzeichnis entspricht bei der beschriebenen Ausführungsform eine Seite der Indexdatei einem speziellen Tag. Ebenso sind die Indexdateiseiten 115 für Tag zwei und Tag drei "hinter" der Indexdatei 106 gezeigt. Diese Seiten 115 können anderen vorher definierten Zeiträumen oder anderen Kriterien entsprechen. Die Indexdatei 106 beginnt mit einem Indexdatei-Anfangsblock 118, gefolgt von Indexdateizellen wie z. B. der Zelle 120. Wie nachstehend genauer erörtert wird, enthält die Indexdatei selbst detaillierte Indexierungsinformationen hinsichtlich jeder eingehenden Nachricht und enthält mehrere andere Felder. Bei der beschriebenen Ausführungsform besitzt der Indexdatei-Anfangsblock 118 eine feste Datensatzgröße.
Fig. 1c ist ein Blockdiagramm, das einen Benutzerspeicherbereich eines Nachrichtenspeichers gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie vorstehend erwähnt, kann ein Nachrichtenspeicher konzeptionell in einen Datenspeicherbereich und einen Benutzerspeicherbereich unterteilt sein. Diese Unterscheidung ist für die Leistungsfähigkeit des Nachrichtenspeichers nicht erforderlich, wie in Fig. 1a gezeigt. Die Unterscheidung wird bei der beschriebenen Ausführungsform verwendet, um den Nachrichtendatenaspekt und den Benutzerdatenaspekt des Nachrichtenspeichers zu erläutern.
In Abhängigkeit von der Größe des Netzwerks, das durch den Nachrichtenspeicher bedient wird, und insbesondere der Anzahl an Benutzern kann ein typischer Benutzerspeicherbereich 132 mehrere Tausend Benutzerordner- Verzeichnisse ähnlich dem Verzeichnis 134 enthalten. In anderen Szenarien kann der Benutzerspeicherbereich 132 nur ein paar Benutzerordner-Verzeichnisse oder ein Verzeichnis, wenn nur ein paar Benutzer auf den Nachrichtenspeicher zugreifen, enthalten. Das Benutzerordner-Verzeichnis 134 ist im wesentlichen eine Sammlung von Benutzerordnern 136 für eine Gruppe von Benutzern. Im allgemeinen hat ein Benutzer immer mindestens einen Benutzer-Mail-Ordner zum Empfangen einer neuen Mail, welcher Eingangsbox genannt wird. Im E-Mail-Zusammenhang können Benutzer kundenspezifische Ordner zum Aufbewahren von Nachrichten bezüglich einer speziellen Angelegenheit oder eines vom Benutzer gewählten Kriteriums neu anlegen. Ein Benutzerordner 136 beginnt mit einem Anfangsblock 138, gefolgt von Benutzerordnerzellen 140. Bei der beschriebenen Ausführungsform enthält eine typische Benutzerordnerzelle 140 Indexierungs- und andere Informationen hinsichtlich einer Nachricht, enthält jedoch nicht die eigentlichen Daten oder den Inhalt der Nachricht. Der eigentliche Inhalt einer speziellen Nachricht wird im Datenspeicherplatz- Verzeichnis 102 von Fig. 1b gespeichert. Dies ermöglicht, daß der Nachrichtenspeicher eine an verschiedene Benutzer auf dem Netzwerk adressierte Nachricht im Nachrichtenspeicher nur einmal speichern oder in diesen schreiben muß, da Bezüge auf die speziellen Benutzerordner vorhanden sind. Bei anderen bevorzugten Ausführungsformen können die Daten andere Arten von Daten sein, auf die von verschiedenen Benutzern auf dem Netzwerk Bezug genommen werden muß. Andere Ordner, die im Benutzerordner- Verzeichnis 134 enthalten sind, sind Verwaltungsordner und Ordner zum Aufbewahren von beispielsweise IMAP- Informationen. Bei der beschriebenen Ausführungsform ist jedem Benutzerordner-Verzeichnis 134 ein Identifikator, typischerweise eine ganze Zahl, gegeben. Der letzte Name eines Benutzers kann beispielsweise zu dieser speziellen ganzen Zahl Hash-codiert werden. Dies ermöglicht eine im wesentlichen gleichmäßige Verteilung von Benutzernamen in jedem Benutzerordner-Verzeichnis 134.
Das Datenspeicherplatz-Verzeichnis 102, das Indexverzeichnis 104, die Indexdatei 106 und das Benutzerordner (Datenraum)-Verzeichnis 134 sind logisch miteinander verknüpft, um zu gewährleisten, daß der Nachrichtenspeicher konsistent ist und im Falle eines Fehlers leicht repariert werden kann. Eine Reihe von Verweisen bilden Pfade unter den Speicherkomponenten, die nachstehend mit Bezug auf spezielle Felder und Werte in diesen Feldern in der Indexverzeichniszelle 116, der Indexdateizelle 120, einer Benutzerordnerzelle 138 und einem Datenspeicherplatz 108 genauer beschrieben werden. Wenn eine Nachricht empfangen wird, untersucht ein Indexierungsteilprozeß bzw. -thread die Struktur und den Inhalt der Nachricht. Eine Übersicht des Anfangsblocks der empfangenen Nachricht wird analysiert und in die Indexdateizelle 120 eingeschlossen. Ebenso wird die Hauptteilstruktur der Nachricht analysiert und die Hauptteilinformationen werden in der Indexdateizelle 120, die dieser Nachricht entspricht, gespeichert. Wenn eine spezielle Nachricht länger ist als eine vorbestimmte Länge, wird die Nachricht bei der beschriebenen Ausführungsform in einem Anschlußintervall weiter analysiert, so daß sie auf dem Server während der Ausgabe keinen Engpaß erzeugt, wodurch die Gesamtleistung verlangsamt wird. Durch die Voranalyse der Struktur der Nachricht kann ein Kunde, der einen Nachrichtenspeicher gemäß einer Ausführungsform der vorliegenden Erfindung verwendet, beispielsweise in einem Auslesen alle Anfangsblockdaten für eine spezielle Nachricht aus dem Datenspeicherplatz, wo die Nachricht gespeichert ist, erhalten. Wie nachstehend genauer beschrieben wird, besitzt die Indexdateizelle 116 genügend Metadaten, wie z. B. Rahmen- bzw. Envelopeinformationen, und Hauptteilstruktur-Informationen, so daß Benutzer die aus einer speziellen Nachricht angeforderten Eigenschaften mit einer Leseoperation erhalten können, ohne auf die ganze Nachricht zugreifen zu müssen.
Fig. 2a ist ein Datenstrukturdiagramm, das Felder in einer Indexverzeichniszelle 116 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Informationen in der Indexverzeichniszelle 116 sind im wesentlichen Metadaten über Informationen, die in der Indexdateizelle 120 gespeichert sind. Damit das System auf in der Indexdateizelle 120 enthaltene Daten zugreifen kann, greift es folglich zuerst auf die Indexverzeichniszelle 116 für einen Verweis auf die entsprechende Stelle in der Indexdatei 106 zu. Die Indexverzeichniszelle 116 enthält Werte für einen Indexdatei-Relativzeiger 203, eine Indexdateizellengröße 205, einen Bezugszählstand 207, einen universellen Speicheridentifikator 209 und ein Belegungskennzeichen 211. Ein Indexdatei-Relativzeiger-Feld 202 in der Indexverzeichniszelle 120 sieht einen Indexdatei-Relativzeigerwert 203 vor, der die Stelle innerhalb der Indexdatei 106 ist, an welchem Punkt die entsprechende Indexdateizelle 120 beginnt. Das Indexdateizellengrößen-Feld 204 sieht die Zellengröße 205 der Indexdateizelle vor, die am Relativzeiger 203 beginnt, der im Indexdatei-Relativzeiger-Feld 202 angegeben ist. Mit dieser Information kann das System auf die entsprechende Indexdateizelle 120 in der Indexdatei 106 zugreifen. Ein Bezugszählstand-Feld 206 enthält einen Bezugszählstand 207 der Anzahl von Benutzerordnern 136, die auf eine Nachricht oder andere Daten (die der speziellen Indexverzeichniszelle zugeordnet sind) Bezug haben. Der Bezugszählstand 207 ist die Anzahl der Benutzer, die auf eine spezielle Nachricht Zugriff haben. Das Feld 208 für den universellen Speicheridentifikator speichert eine universelle Speicheridentifikation 209, die eine eindeutige Identifikation jeder Nachricht oder jedes Datenelements gewährleistet. Somit ist bei der beschriebenen Ausführungsform genau ein universeller Speicheridentifikator 209 für eine spezielle Nachricht vorhanden und dieser Identifikator kann nicht verwendet werden, um irgendeine andere Nachricht in dem System zu identifizieren. Ein Belegungskennzeichen-Feld 210 enthält ein Belegungskennzeichen 211, das anzeigt, ob sich noch Daten im Nachrichtenspeicher befinden. Der Nachrichtenspeicher kann eine spezielle Nachricht enthalten, selbst wenn keine Verweise auf sie vorliegen, d. h. der Bezugszählstand 207 für diese Nachricht Null ist. Die Nachricht bleibt im Speicher, bis sie gelöscht wird oder eine Speicherbereinigung durchgeführt wird. Dies ist nützlich beim Abrufen der Nachricht im Fall, daß ein anderer Benutzer auf diese spezielle Nachricht zugreifen will. Das System erhöht einfach den Bezugszählstand 207 auf eins und die Nachricht kann von einem speziellen Benutzer angesehen werden.
Fig. 2b ist ein Datenstrukturdiagramm, das Felder in einem wie in Fig. 1b gezeigten Indexverzeichnis-Anfangsblock 114 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Ein Datenspeicherplatz-Zählstand-Feld 212 enthält einen Datenspeicherplatz-Zählstand von Datenspeicherplätzen 108, die an einem speziellen Tag verwendet werden, und wird hauptsächlich für Konsistenzprüfungen verwendet. Ein Komplexitätskennzeichen-Feld 214 enthält ein Kennzeichen, das anzeigt, ob das System die Nachrichtendaten indexiert. Ein Indexverzeichniszellen-Zählstand-Feld 216 enthält die Anzahl der Indexverzeichniszellen 116, die derzeit im Indexverzeichnis 104 vorliegen. Ein Feld 218 für die nächste verfügbare Zelle enthält die Stelle einer nächsten verfügbaren Indexverzeichniszelle. Obwohl bei der beschriebenen Ausführungsform die vorstehend beschriebenen Felder in einer bestimmten Reihenfolge aufgelistet sind, können die Felder bei anderen bevorzugten Ausführungsformen in Abhängigkeit von einer speziellen Implementierung des Nachrichtenspeichers anders geordnet sein. Außerdem können bei anderen bevorzugten Ausführungsformen bestimmte Felder nicht erforderlich sein oder können keine Werte enthalten. Welche Felder verwendet werden, hängt wieder teilweise von einer speziellen Implementierung des Nachrichtenspeichers ab.
Fig. 3 ist ein Datenstrukturdiagramm, das Felder in einer Indexdateizelle 120 gemäß einer Ausführungsform ausführlicher zeigt. Eine Indexdateizellengröße 302 enthält eine Indexdateidatensatzgröße 303, die die Größe der Indexdateizelle bereitstellt und für interne Konsistenzprüfungen verwendet wird. Unter Verwendung dieses Werts kann das System von einem Datensatz zum anderen springen und durch Prüfen, um festzustellen, ob eine neue Indexdateizelle an erwarteten Stellen auf der Plattendatei beginnt und endet, die Integrität gewährleisten. Ein Identifikationslängen-Feld 304 und ein Datenspeicherplatz- Identifikations-Feld 306 stehen in Zusammenhang, indem das Feld 304 die Anzahl der Bytes oder die Länge des Feldes 306 enthält. Das Datenspeicherplatz-Identifikations-Feld 306 enthält einen Datenspeicherplatz-Identifikator 305 und besteht bei der beschriebenen Ausführungsform aus vier Ziffern für das Jahr, zwei Ziffern für den Monat, zwei Ziffern für den Tag und einer dreistelligen ganzen Zahl. Diese Ziffern bilden einen eindeutigen Identifikator für den Datenspeicherplatz 108, der die Nachricht enthält, die einer speziellen Indexdateizelle entspricht. Das Identifikationslängen-Feld 304 wird einfach verwendet, um die Konsistenz des Datenspeicherplatz-Identifikators durch Sicherstellen, daß er die korrekte Länge aufweist, zu gewährleisten. Das Datenspeicherplatz-Relativzeiger-Feld 308 enthält den Relativzeiger 309 im Datenspeicherplatz, der die Nachricht enthält, die einer speziellen Indexdateizelle zugeordnet ist. Er liefert im wesentlichen die Stelle im Datenspeicherplatz, wo sich die Nachricht befindet. Das Datensatzgrößen-Feld 310 enthält die Größe der Daten 311 im Datenspeicherplatz und besteht aus der Größe der Nachricht plus der Größe von irgendwelchen Präambeldaten. Somit kann das System mit den Feldern 308 und 310 direkt zu der Stelle in einem speziellen Datenspeicherplatz gehen und den gesamten Datensatz (d. h. die Nachricht), der der Indexdateizelle zugeordnet ist, in einer einzigen Auslesung abrufen.
Ein Hash-Code-Feld 312 enthält einen Hash-Code, der einer Hash-Tabelle zugeordnet ist, die verwendet wird, um das System zu informieren, ob sich eine spezielle Nachricht bereits im Nachrichtenspeicher befindet. Somit wird eine spezielle Nachricht Hash-codiert, und wenn festgestellt wird, daß der Hash-Wert in der Hash-Tabelle ist, weiß das System, daß sich die Nachricht bereits im Nachrichtenspeicher befindet, wodurch die Redundanz verringert wird. Ein I18n-Kennzeichen-Feld 314 enthält I18n-Kennzeichen. Diese Kennzeichen zeigen an, ob die Nachricht eine 16-Bit-Sprachcodierung oder eine andere spezielle Codierung hat. Wenn ja, sind spezielle Anforderungen zum Suchen erforderlich. Ein RFC822- Anfangsblocklängen-Feld 316 und ein RFC822-Hauptteillängen Feld 318 stehen in Zusammenhang, indem sie beide Werte enthalten, die sich auf einen Internet-Mail-Anfangsblock beziehen, der als RFC822-Anfangsblock bezeichnet wird. RFC822 ist ein Internet-Mail-Anfangsblockformat, das für jede Internet-Mail erforderlich ist. Es enthält Felder wie z. B. Empfänger, Sender, Angelegenheit und Datum. Das Anfangsblocklängen-Feld 316 enthält die RFC822- Anfangsblocklänge und das Hauptteillängen-Feld 318 enthält die RFC822-Hauptteillänge. Die Summe der RFC822- Anfangsblocklänge 317 und der RFC822-Hauptteillänge ist die Länge der gesamten Nachricht, einschließlich Anhängen, Anfangsblöcken und des/der ganzen MIME-Hauptteil(s/e). Bei der beschriebenen Ausführungsform liegen die Felder 302 bis 318 in jeder Nachricht vor und definieren somit gemeinsam eine Standardpräambel der Indexdateizelle. Bei anderen bevorzugten Ausführungsformen können in Abhängigkeit von der Art der gespeicherten Daten nicht alle diese erforderlich sein. Beispielsweise wären die RFC822- Anfangsblock- und Hauptteillängen-Felder nicht erforderlich, wenn keine Internet-Mail-Nachricht gespeichert wäre. Die Indexdateizelle 120 besitzt bei der beschriebenen Ausführungsform eine variable Länge, da das IMAP das Hinzufügen von anderen Feldern und Indizes gestattet.
Die Felder 320 bis 328 sind ein Teil des Datenteils der Indexdatei 106 der Indexdateizelle. Bei der beschriebenen Ausführungsform ist die Speicher-Parsing-Ebene für IMAP Zwei und für POP Null. Ein Rahmen- bzw. Envelopekennzeichen-Feld 320 enthält einen Rahmenkennzeichenwert 319 und zeigt an, ob das System die Nachrichtendaten analysiert hat. Wenn bei der beschriebenen Ausführungsform die Nachricht im IMAP ist, ist das Rahmenkennzeichen Eins, und wenn sie im POP ist, ist das Rahmenkennzeichen Null. Somit verschwendet das System durch die Verwendung des Rahmenkennzeichens 319 keine Zeit, um zu versuchen, die POP-Nachricht zu analysieren. Ein Rahmen- bzw. Envelopedaten-Feld 322 enthält alle Rahmeninformationen 323, wie z. B. die Größe und andere Daten, wenn die Nachricht analysiert wird (wie bei IMAP- Nachrichten). Ein Hauptteilkennzeichen-Feld 324 enthält ein Hauptteilkennzeichen und hat denselben Zweck wie der Wert 319. Ebenso enthält ein Hauptteildaten-Feld 326 die Hauptteilgröße und andere Hauptteilstruktur-Informationen, wenn die Parsing-Ebene IMAP ist. Das Relativzeigerlisten- Feld 328 enthält eine Abschnitts-Relativzeigerliste, die eine schnelle Möglichkeit für das System vorsieht, MIME- Hauptteile (oder -Abschnitte) in einer speziellen Nachricht in dem Datenspeicherplatz zu finden. Die Abschnitts- Relativzeigerliste 329 stellt Relativzeiger und die Längen jedes MIME-Hauptteils in einer MIME-Nachricht bereit, so daß ein spezieller Hauptteil durch einen Plattendatenzugriff aufgefunden werden kann. Bei anderen bevorzugten Ausführungsformen können diesen Feldern andere Namen gegeben sein, die die spezielle Anwendung, für die der Nachrichtenspeicher verwendet wird, besser beschreiben. Außerdem kann die Indexdateizelle 120 in Abhängigkeit von der Art der gespeicherten Daten mehr oder weniger Felder aufweisen.
Fig. 4 ist ein Datenstrukturdiagramm, das das Abschnitts- Relativzeigerlisten-Feld 328 von Fig. 3 ausführlicher zeigt. Bei anderen bevorzugten Ausführungsformen kann die Abschnitts-Relativzeigerliste 328 in Abhängigkeit von der Art der gespeicherten Daten speziellere Informationen über andere Arten von Daten enthalten oder kann überhaupt nicht verwendet werden. Das Hauptteil-Feld 400 enthält den Relativzeiger des MIME-Hauptteils vom Beginn der Nachricht, wie im Datenspeicherplatz gespeichert. Dies ermöglicht, daß das System einen MIME-Abschnitt innerhalb einer Nachricht erhält, indem es nur auf die Indexdateizelle 120 zugreifen muß. Ein Anfangsblockgrößen-Feld 402 enthält eine MIME- Anfangsblockgröße. Jeder MIME-Hauptteil besitzt einen MIME- Anfangsblock, der Informationen, wie z. B. den Inhalt, die Art, die Hauptteilcodierung, und andere Informationen wie z. B. öffentliche Schlüsselinformationen enthält. Ein Abschnittstyp-Feld 404 enthält den MIME-Abschnittstyp, wie z. B. Text, Bild oder Audio. Diese Information ist beim Suchen des MIME-Hauptteils nützlich. Ein Abschnittsnummer- Feld 406 enthält eine MIME-Abschnittsnummer, die ermöglicht, daß das System die Hauptteilnummer direkt aus der Indexdateizelle erhält. Bei der beschriebenen Ausführungsform ist dies signifikant unter der Voraussetzung, daß MIME-Nachrichten mehrere Hauptteile besitzen können, von denen einer andere MIME-Hauptteile sein kann. Wenn eine spezielle MIME-Abschnittsnummer nicht gefunden werden kann, informiert das System den Benutzer, ohne daß es auf die Nachricht im Datenspeicherplatz zugreifen muß, daß eine solche Abschnittsnummer nicht existiert. Alle Werte 329 im vorstehend beschriebenen Abschnitts-Relativzeigerlisten-Feld 328 können verwendet werden, um eine größere Menge an Informationen in bedeutend weniger Zeit bereitzustellen, als vorher erreichbar war. Das Abschnitts-Relativzeigerlisten-Feld 328 kann bei anderen bevorzugten Ausführungsformen verwendet werden, um ähnliche Vorteile zu erreichen.
Fig. 5 ist ein Datenstrukturdiagramm, das die Anfangsblockzelle 126 und die Nachricht 128 im Datenspeicherplatz 108 gemäß einer Ausführungsform der vorliegenden Erfindung genauer zeigt. Ein Anfangsblock-Feld 500 enthält einen Nachrichtenanfangsblock für einen speziellen Datenspeicherplatz 108, welcher der Nachricht 128 vorangeht. Sie enthält einen Dateiende-Zeiger, der die Anzahl der Datensätze im Datenspeicherplatz 108 anzeigt. Der Zeiger, der bei der beschriebenen Ausführungsform als magische Zahl bezeichnet wird, gewährleistet die Integrität des Datenspeicherplatzes 108. Das Datensatzgrößen-Feld 502 enthält die Datensatzgröße 503, welche die Größe der Präambelinformation plus der eigentlichen Nachricht ist. Folglich ist die Größe der eigentlichen Nachrichtendaten typischerweise geringer als die Größe des gesamten Datensatzes, wie in der Datensatzgröße 502 enthalten. Dieser Wert ermöglicht, daß das System schnell von einem Datensatz zum nächsten überspringt und auf Datensatzintegrität überprüft. Ein Nachrichten- Relativzeiger-Feld 504 enthält eine Relativzeigerlänge 505 zu der Stelle, an der die Nachrichtendaten oder die eigentlichen Daten innerhalb einer speziellen Nachricht im Datenspeicherplatz beginnen. Bei der beschriebenen Ausführungsform ist es ein Zeiger zum Beginn der Nachrichtendaten, die im nachstehend erörterten Nachrichtendaten-Feld 522 enthalten sind. Ein Indexdateizeiger-Feld 506 enthält einen Indexdateizeiger 507, der ein zum Wert 305 im Datenspeicherplatz- Identifikator-Feld 306 von Fig. 3 identisches Format aufweist. Das Format ist ähnlich dem Format des Werts 305: ein Jahr aus vier Ziffern, gefolgt von jeweils zwei Ziffern für den Monat und den Tag, gefolgt von einer dreistelligen ganzen Zahl. Ein Indexdateizeiger-Feld 506 enthält einen Indexdateizeiger 507, der zur Konsistenzprüfung und in dem Fall, daß das System den Speicher aus den Daten allein rekonstruieren muß, verwendet wird. Das System kann den Nachrichtenspeicher durch im wesentlichen Zurückverfolgen der Informationen im Indexverzeichnis, in der Indexdatei und in den Benutzerdateien rekonstruieren.
Ein Indexverzeichniszeiger-Feld 508 enthält einen Zeiger 509 zum Indexverzeichnis 104 und insbesondere zu einer Indexverzeichniszelle 116. Bei der beschriebenen Ausführungsform hat der Zeiger die Form einer ganzen Zahl, die zum Auffinden einer speziellen Zelle im Indexverzeichnis verwendet wird. Da die Größe der Indexverzeichniszelle einen festen Wert 509 besitzt, wird er mit der Größe der Zelle multipliziert, um die Anfangsstelle der speziellen Verzeichniszelle, die einer Nachricht oder Daten entspricht, zu ermitteln. Dieser Wert wird auch verwendet, um zu gewährleisten, daß die aus den Zeigern in den Speicherkomponenten im Nachrichtenspeicher gebildete geschlossene Schleife nicht unterbrochen wird. Ein Schreibzeitpunkt-Feld 510 enthält den Zeitpunkt, zu dem die Nachricht in den Nachrichtenspeicher geschrieben wurde, und wird verwendet, um eine konsistente Zeit aufrechtzuerhalten, beispielsweise im Fall, daß die Nachricht zu einem anderen System exportiert wird. Bei der beschriebenen Ausführungsform wird die Zeit am 1. Januar 1970 beginnend gemessen. Ein Längenfeld 512 und ein Sendernamen-Feld 514 betreffen einen Sender der Nachricht, wobei das Feld 512 die Länge des Sendernamens enthält und das Feld 514 den vollen Sendernamen enthält. Ein Empfängerzählstand-Feld 516 speichert die Anzahl der Nachrichtenempfänger 517 oder enthält bei anderen bevorzugten Ausführungsformen die Anzahl der Eigentümer oder Erzeuger eines speziellen Datenelements. Ein Empfängerlisten-Feld 518 enthält eine Liste von Namen von Empfängern (oder Eigentümern, Erzeugern usw.). Ein Nachrichtengrößen-Feld 520 enthält die Größe 521 der eigentlichen Nachricht (im Gegensatz zur Datensatzgröße 503 im Feld 502). Die Nachrichtengröße 521 ist die Größe der eigentlichen Daten, die Anhänge enthalten können, und wird vom Anfangsblock zum letzten Byte der Daten in der Nachricht gemessen.
Bei der beschriebenen Ausführungsform bilden die Felder 500 bis 520 eine Präambel für eine spezielle Nachricht und können verwendet werden, um zu gewährleisten, daß der Nachrichtenspeicher konsistent ist und nicht in irgendeiner Hinsicht "unterbrochen" ist. Ein Nachrichtendaten-Feld 522 enthält die eigentlichen Nachrichtendaten, die von einer Senderdatenstruktur, wie im Sendernamen-Feld 514 enthalten, übermittelt wurden.
Fig. 6 ist ein Datenstrukturdiagramm, das eine Benutzerordnerzelle 138 in einem Benutzerordner 136 von Fig. 1c gemäß einer Ausführungsform der vorliegenden Erfindung genauer zeigt. Eine Reihe von Benutzerordnern, in denen jeder Benutzer einen oder mehrere Ordner besitzen kann, ist innerhalb des Benutzerordner-Verzeichnisses 134 enthalten. Ein Kennzeichenfeld 600 enthält bei der beschriebenen Ausführungsform IMAP-Kennzeichen, die verschiedene Zustände einer Nachricht anzeigen. Bei der beschriebenen Ausführungsform umfassen diese Löschen, Lesen, Antworten, Kennzeichnen und Entwurf. Bei anderen bevorzugten Ausführungsformen kann dieses Feld Kennzeichen enthalten, die Zustände von anderen Arten von Daten, die im Nachrichtenspeicher gespeichert sind, anzeigen. Ein Indexverzeichniszeiger-Feld 602 enthält einen Zeiger 603 zum Indexverzeichnis 104. Bei der beschriebenen Ausführungsform umfaßt er vier Ziffern für das Jahr, gefolgt von jeweils zwei Ziffern für den Monat und den Tag. Der Wert 603 wird als Zeiger zur entsprechenden Zelle 116 im Indexverzeichnis 104 verwendet. Ein Ordneridentifikator- Feld 604 enthält eine universelle Ordneridentifikation, die nur einmal im Leben des Ordners verwendet wird. Diese Ordneridentifikation hilft dabei, die Nachrichten synchronisiert zu halten. Wenn der Ordner auf Null geschrumpft ist, wird der Identifikation für die nächste Nachricht ein Anfangswert wie z. B. Eins oder Null zugeordnet und wird dann bei jeder eingehenden Nachricht inkrementiert. Ein Indexfeld 606 enthält einen Index 607 zur entsprechenden Stelle im Indexverzeichnis 104 und ist ähnlich dem Wert 509 von Fig. 5. Bei der beschriebenen Ausführungsform ist er eine ganze Zahl, die einen Bezugspunkt im Indexverzeichnis 104 anzeigt. Diese ganze Zahl wird in Verbindung mit einer festen Indexverzeichniszellengröße verwendet, um die entsprechende Stelle der Zelle 116 im Indexverzeichnis 104 zu ermitteln.
Ein Feld 608 für einen universellen Identifikator enthält eine universelle Kennzahl für die spezielle Nachricht und wird zum Sichern und Wiederherstellen der Daten bei Bedarf verwendet. Ein Empfangszeitpunkt-Feld 610 enthält den Zeitpunkt, zu dem die Nachricht empfangen wird, und kann zum chronologischen Ordnen der Daten im Nachrichtenspeicher verwendet werden. Ein RFC822-Größenfeld 612 ist die RFC822- Nachrichtengröße und wird hauptsächlich vom IMAP und POP bei der beschriebenen Ausführungsform verwendet. POP verwendet es, da es die reale Größe der Nachricht in Bytes ist, wie sie auf dem Netzwerk erscheinen würde. Es ist derselbe wie der Wert im Feld 318 von Fig. 3. Bei anderen bevorzugten Ausführungsformen, bei denen der Nachrichtenspeicher keine Internet-E-Mail-Nachrichten enthält, können dieses Feld und andere beschriebene einen anderen Namen besitzen und einen für eine andere Implementierung des Nachrichtenspeichers spezifischen Wert enthalten, oder es kann überhaupt nicht erforderlich sein. Ein Rahmenkennzeichen-Feld 614 enthält ein Rahmenkennzeichen, das anzeigt, ob ein Rahmen bzw. Envelope für eine Nachricht im Nachrichtenspeicher vorliegt. Wenn der Rahmen im Indexverzeichnis 104 indexiert wurde, dann muß das System keinen lokalen Index für diesen speziellen Nachrichtenrahmen erzeugen. Wenn der Rahmen nicht indexiert wurde und sich nicht im Indexverzeichnis befindet, führt das System eine Analyse des lokalen Index durch. Ebenso zeigt ein Hauptteilkennzeichen-Feld 616 an, ob ein Körper vorliegt, und ob er indexiert wurde und sich im Indexverzeichnis befindet. In diesem Fall muß das System keine Analyse des lokalen Index durchführen. Ein Kennwort- Datensatz-Feld 618 enthält einen Kennwort-Datensatz, der Kennworte auflistet, die ein Benutzer einer speziellen Nachricht zuordnet. Bei der beschriebenen Ausführungsform ist ein Kennwort ein durch einen Benutzer zugeordnetes Kennzeichen, das einer Nachricht zugeordnet ist. Ein Relativzeiger-Feld 620 und ein Größenfeld 622 enthalten einen Relativzeiger 621 bzw. eine Größe 623. Sie werden bei der beschriebenen Ausführungsform verwendet, wenn die Nachricht zur ersten Zugriffszeit indexiert wurde (d. h. das Rahmenkennzeichen und die Hauptteilkennzeichen Null sind, was anzeigt, daß der Rahmen und der Hauptteil nicht vorliegen) oder wenn der Anfangsblock größer ist als 64 Kilobytes. Wenn eine Nachricht aufgrund ihrer Größe lokal indexiert wird, wird in einem VAR-Ordner in der Eingangsbox des Benutzers ein Datensatz erzeugt. Der VAR-Ordner enthält einen speziellen Indexdatensatz, der erzeugt wird, wenn eine Nachricht lokal indexiert wird. Um diesen Indexdatensatz im VAR-Ordner aufzufinden, verwendet das System den Relativzeiger 621 für den Indexdatensatz (d. h. den Abstand zum Beginn des Datensatzes vom Beginn des Ordners) und die Größe 623 des Indexdatensatzes, die im Feld 622 vorgesehen ist. Dieses Merkmal der wahlweisen Indexierung beseitigt Verzögerungen auf dem Server infolge der Indexierung von ungewöhnlich großen Nachrichten. Die Indexdaten werden dennoch auf dem Server in den entsprechenden Daten- und Benutzerspeicherzellen gespeichert.
Fig. 7 ist ein Datenstrukturdiagramm, das den Benutzerordner 136 gemäß einer Ausführungsform der vorliegenden Erfindung genauer zeigt. Ein typisches Beispiel für einen Benutzerordner ist die Eingangsbox zum Halten neuer Nachrichten. Benutzer können andere kundenspezifische Ordner neu anlegen, um Post über verschiedene Angelegenheiten oder Themen aufzubewahren. Ein Benutzeranfangsblock-Feld 700 enthält den Benutzeranfangsblock für den speziellen Ordner. Ein Gültigkeitsfeld 702 enthält einen Gültigkeitsindikator für keine universelle Identifikation (UID), der vom IMAP verwendet wird. Wenn eine UID geändert wird, wird sie ungültig. Dies geschieht beispielsweise, wenn UIDs umnumeriert werden, und ist eine Bedingung, für die es nützlich ist, daß das IMAP sie kennt. Wie bei diesem Feld und anderen Feldern kann dieses Feld bei anderen bevorzugten Ausführungsformen verwendet werden, um andere Kennzeichen oder Indikatoren zu speichern, die bei anderen Implementierungen nützlich sind. Ein Feld 704 für einen nächsten Indikator enthält die nächste UID, die der nächsten eingehenden Nachricht oder einem neu angelegten Ordner zuzuordnen ist. Ein Nachrichtenzählstand-Feld 706 enthält die Anzahl der Nachrichten 707 oder der Datenelemente in diesem speziellen Ordner. Ein Feld 708 für die neueste Nachricht enthält die letzte von einem Benutzer angesehene Nachricht. Dieser Wert ändert sich, wenn neue Post eintrifft und der Benutzer ihren Inhalt ansieht. Ein Schreibdatum-Feld 710 enthält das letzte Schreibdatum, das bei der beschriebenen Ausführungsform als magische Zahl bezeichnet wird. Es ist das letzte Datum und der letzte Zeitpunkt, zu dem der Benutzer eine Schreiboperation an dem speziellen Ordner durchgeführt hat. Eine Verwendung der magischen Zahl ist zur Cache-Speicher-Neusynchronisation. Wenn sich die magische Zahl nicht geändert hat, seitdem sie zuletzt überprüft wurde, muß das System keine Cache- Speicher-Neusynchronisation für diesen speziellen Ordner durchführen, da es keine Aktivität in dieser Mailbox gab. Ein Größenfeld 712 enthält die Gesamtzahl an realen Bytes, die im Nachrichtenspeicher von diesem speziellen Ordner gespeichert sind. Es enthält eine Gesamtzahl an realen Datenbytes, die für den Benutzern auferlegte Quoten hinsichtlich des Speichers nützlich ist. Dem Feld 712 folgt ein Benutzerzellenbereich 714, der die Benutzerzellen, wie in Fig. 6 beschrieben, enthält.
Fig. 8 ist ein Blockdiagramm, das die Komponenten zum Empfangen einer E-Mail-Nachricht und zum Übermitteln der Nachricht an einen Nachrichtenspeicher gemäß der beschriebenen Ausführungsform zeigt. Nachrichten 802 werden von einem Mail-Transport-Systemteil (MTA) 804 empfangen, welcher durch einen SMTP (Einfaches Mail- Übermittlungsprotokoll)-Port multithreading-fähig sein kann. Bei der beschriebenen Ausführungsform werden die Nachrichten 802 in Abhängigkeit vom Kunden, der die Mail empfängt, entweder zu einem lokalen Kanal 806 oder zu einem Nachrichtenspeicherkanal 808 gesandt. Der Nachrichtenspeicherkanal ist eine Liste von Dateien, wobei jede Datei einer Nachricht entspricht. Wenn eine Nachricht in den Nachrichtenspeicherkanal eintritt, wird sie sequentiell abgelegt. Der lokale Kanal ist ähnlich strukturiert und ist einem üblichen Fachmann bekannt. Ein Nachrichtenspeicher-Hauptrechner 810 liest Nachrichten 802 aus dem Nachrichtenspeicherkanal 808. Wenn der Nachrichtenspeicher-Hauptrechner 810 nicht arbeitet, beginnt er zu arbeiten, sobald er die erste Nachricht im Kanal 808 liest. In einem großen multithreading-fähigen System kann der Nachrichtenspeicher-Hauptrechner 810 bis zu 10 Nachrichten auf einmal lesen. Er liest die Nachrichten 802 über eine API (Applikationsprogrammierschnittstelle) 812, die ermöglicht, daß er Nachrichten 802 aus dem Nachrichtenspeicherkanal 808 liest. Der Nachrichtenspeicher-Hauptrechner 810 übermittelt die Nachrichten 802 an den Nachrichtenspeicher 100. Wie vorstehend erwähnt, erläutert die beschriebene Ausführungsform die Verwendung des Nachrichtenspeichers der vorliegenden Erfindung zum Speichern von E-Mail- Nachrichten. Der Nachrichtenspeicher kann zum Speichern anderer Arten von Daten verwendet werden, die andere Übermittlungssysteme besitzen können als das eine, das in Fig. 8 und Fig. 9, die nachstehend beschrieben wird, beschrieben wird. Bei anderen bevorzugten Ausführungsformen können die Daten in den Nachrichtenspeicher direkt durch einen Benutzer oder von einer anderen Anwendung, wie z. B. einem Browser oder einem Textsystem, gebracht werden.
Fig. 9 ist ein Ablaufplan, der den Prozeß eines Nachrichtenspeicher-Hauptrechners zeigt, der Nachrichten zu einem Nachrichtenspeicher gemäß einer Ausführungsform der vorliegenden Erfindung übermittelt. Wie bezüglich Fig. 8 beschrieben, übermittelt ein Nachrichtenspeicher- Hauptrechner neue E-Mail-Nachrichten zum Nachrichtenspeicher für Benutzer. Es wird für die Zwecke von Fig. 9 angenommen, daß der Nachrichtenspeicher- Hauptrechner arbeitet, d. h. daß er bereits die erste Nachricht im Nachrichtenspeicherkanal gelesen hat. In Schritt 900 liest eine Nachrichtenübermittlungseinheit die Dateinamen von bis zu n neuen Nachrichten. Bei der beschriebenen Ausführungsform kann die Einheit bis zu 10 neue Nachrichten lesen. Bei anderen bevorzugten Ausführungsformen kann die Einheit mehr oder weniger Nachrichten lesen. In Schritt 902 wird jede Datei oder Nachricht einem Abrufthread zugeordnet. Ein Abrufthread wird einer Datei durch einen Aufruf an die API zugeordnet. In Schritt 904 greift jeder Abrufthread auf seine zugeordnete Datei im Nachrichtenspeicherkanal 808 von Fig. 8 zu. In Schritt 906 wartet der Prozeß darauf, daß auf alle n Nachrichten parallel zugegriffen wird. Wenn einmal alle in Schritt 900 gelesenen Dateinamen zugeordnet wurden und auf sie zugegriffen wurde, geht ein Abrufthread zu Schritt 908, wo er auf zusätzliche Nachrichten prüft. Er kann dies machen, sobald er feststellt, daß er n leere Puffer erhalten kann. Wenn keine Nachrichten vorliegen, prüft der Thread in Schritt 908 weiter auf neue Nachrichten. Wenn neue eingehende Nachrichten vorliegen, kehrt der Abrufthread zu Schritt 900 zurück, wo die Nachrichtenübermittlungseinheit die Dateinamen der neuen Nachrichten liest.
Während der Abrufthread auf neue Nachrichten prüft, verwalten ein Indexthread und ein Schreibthread die n Nachrichten, die vorher durch die Abrufthreads zugeordnet wurden und auf die zugegriffen wurde. Der erste Schritt beim Schreiben der n Nachrichten in den Nachrichtenspeicher ist in Schritt 910 dargestellt. In Schritt 910 wählt der Schreibthread durch Erzeugen einer willkürlichen Speicherplatznummer einen Datenspeicherplatz aus. Bei der beschriebenen Ausführungsform sind typischerweise drei offene Datenspeicherplätze vorhanden, in denen die Nachrichten liegen können. In Schritt 912 bestimmt der Prozeß, ob der ausgewählte Datenspeicherplatz 108 noch restlichen Speicherplatz aufweist. Wenn nicht, kehrt er zu Schritt 910 zurück, um eine weitere willkürliche Datenspeicherplatznummer zu erzeugen, und fährt mit diesem Prozeß fort, wobei er bei Bedarf zusätzliche Datenspeicherplätze erzeugt, bis die Nachrichten in den Nachrichtenspeicher geschrieben werden können. Wenn der Datenspeicherplatz nicht voll ist, hängt der Schreibthread in Schritt 914 die n Nachrichten an das Ende des ausgewählten Datenspeicherplatzes an. In Schritt 916 informiert der Schreibthread den Indexthread über die Datenspeicherplatznummer, den Speicherplatz-Relativzeiger 309 und die Nachrichtengröße 521 von jeder der in Schritt 914 angehängten Nachrichten. In Schritt 918 prüft der Schreibthread, ob noch mehr Nachrichten vorhanden sind, die durch Abrufthreads zugeordnet wurden und auf die zugegriffen wurde, welche in den Nachrichtenspeicher geschrieben werden müssen. Wenn ja, kehrt der Schreibthread zu Schritt 910 zurück. Wenn keine neuen Nachrichten vorhanden sind, fährt er mit der Prüfung in Schritt 918 fort.
Der Indexthread beginnt mit der Speicherung der Indexinformationen in den Indexverzeichnissen und -dateien, sobald der Schreibthread das Schreiben in den Nachrichtenspeicher ausgeführt hat. In Schritt 920 wartet der Indexthread darauf, daß der Schreibthread das Schreiben der n Nachrichten in den Nachrichtenspeicher beendet und die Indexierungsinformationen zurücksendet, wie in Schritt 916 beschrieben. Es ist möglich, daß der Indexthread seine vorherigen Indexierungsaufgaben beendet haben kann und darauf warten muß, daß der Schreibthread das Schreiben in den Nachrichtenspeicher beendet. In Schritt 922 schreibt der Indexthread die Indexinformationen in das Indexverzeichnis und die Indexdatei. In Schritt 924 werden Bezugsinformationen, die zum Abrufen von Daten im Indexverzeichnis und in der Indexdatei erforderlich sind, in die Benutzerordnerzellen geschrieben. In Schritt 924 werden Informationen, die ausreichen, um auf die entsprechenden Indexräume zu verweisen, in die Eingangsbox- Ordnerzelle oder -zellen in Abhängigkeit von der Anzahl der Empfänger geschrieben. In Schritt 926 werden die Informationen im Benutzerordner-Anfangsblock aktualisiert, um die Zugabe der neuen Nachrichten anzuzeigen. Nachdem Schritt 926 beendet ist, prüft der Indexthread in Schritt 928, ob Indexinformationen auf ihre Indexierung warten. Wenn ja, kehrt der Indexthread zu Schritt 920 zurück, um die Indexierung der Informationen über Nachrichten, die bereits in den Nachrichtenspeicher geschrieben wurden, zu beginnen.
Die vorliegende Erfindung verwendet verschiedene computerimplementierte Operationen, die in Computersystemen gespeicherte Daten einbeziehen. Diese Operationen umfassen, sind aber nicht begrenzt auf, jene, die eine physikalische Verarbeitung von physikalischen Größen erfordern. Gewöhnlich, wenn auch nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen und anderweitig verarbeitet zu werden. Die hierin beschriebenen Operationen, die einen Teil der Erfindung bilden, sind nützliche Computeroperationen. Die durchgeführten Verarbeitungen werden häufig mit Begriffen wie z. B. Erzeugen, Identifizieren, Betreiben, Bestimmen, Vergleichen, Ausführen, Fernladen oder Erfassen bezeichnet. Es ist manchmal bequem, hauptsächlich aus Gründen der gemeinsamen Verwendung, diese elektrischen oder magnetischen Signale als Bits, Werte, Elemente, Variablen, Zeichen, Daten oder dergleichen zu bezeichnen. Man sollte jedoch daran denken, daß alle diese und ähnliche Begriffe den entsprechenden physikalischen Größen zugeordnet werden sollen und nur bequeme Bezeichnungen sind, die auf diese Größen angewendet werden.
Die vorliegende Erfindung betrifft auch eine Vorrichtung, ein System oder einen Apparat zum Ausführen der vorstehend erwähnten Operationen. Das System kann speziell für die erforderliche Zwecke konstruiert sein, oder es kann ein Universalcomputer sein, der durch ein Computerprogramm, das im Computer gespeichert ist, selektiv aktiviert oder konfiguriert wird. Die vorstehend dargestellten Prozesse stehen nicht von Natur aus mit irgendeinem speziellen Computer oder einer anderen Rechenvorrichtung in Zusammenhang. Insbesondere können verschiedene Universalcomputer mit Programmen verwendet werden, die gemäß den Lehren hierin geschrieben sind, oder alternativ kann es bequemer sein, ein spezialisierteres Computersystem zu konstruieren, um die erforderlichen Operationen durchzuführen.
Fig. 10 ist ein Blockdiagramm eines Universalcomputersystems 1000, das sich zum Ausführen der Verarbeitung gemäß einer Ausführungsform der vorliegenden Erfindung eignet. Fig. 10 stellt eine Ausführungsform eines Universalcomputersystems dar. Andere Computersystemarchitekturen und -konfigurationen können zum Ausführen der Verarbeitung der vorliegenden Erfindung verwendet werden. Das Computersystem 1000, das aus verschiedenen Untersystemen besteht, die nachstehend beschrieben werden, umfaßt mindestens ein Mikroprozessor- Untersystem (das auch als zentrale Verarbeitungseinheit oder CPU bezeichnet wird) 1002. Das heißt, die CPU 1002 kann durch einen Ein-Chip-Prozessor oder durch mehrere Prozessoren implementiert werden. Die CPU 1002 ist ein digitaler Universalprozessor, der den Betrieb des Computersystems 1000 steuert. Unter Verwendung von aus dem Speicher abgerufenen Anweisungen steuert die CPU 1002 den Empfang und die Verwaltung von Eingangsdaten und die Ausgabe und Anzeige von Daten auf Ausgabevorrichtungen.
Die CPU 1002 ist bidirektional mit einem ersten Primärspeicher 1004, typischerweise ein Direktzugriffsspeicher (RAM), und unidirektional mit einem zweiten Primärspeicherbereich 1006, typischerweise ein Festwertspeicher (ROM), über einen Speicherbus 1008 gekoppelt. Wie auf dem Fachgebiet gut bekannt ist, kann der Primärspeicher 1004 als allgemeiner Speicherbereich und als Notizblockspeicher verwendet werden und kann auch zum Speichern von Eingangsdaten und verarbeiteten Daten verwendet werden. Er kann auch Programmieranweisungen und Daten in Form eines Nachrichtenspeichers zusätzlich zu anderen Daten und Anweisungen für auf der CPU 1002 ablaufende Prozesse speichern, und wird typischerweise für eine schnelle Übertragung von Daten und Befehlen in bidirektionaler Weise über den Speicherbus 1008 verwendet. Wie auf dem Fachgebiet ebenfalls gut bekannt ist, umfaßt der Primärspeicher 1006 typischerweise grundlegende Betriebsvorschriften, Programmcode, Daten und Objekte, die von der CPU 1002 verwendet werden, um ihre Funktionen auszuführen. Die Primärspeichervorrichtungen 1004 und 1006 können beliebige geeignete maschinenlesbare Speichermedien, die nachstehend beschrieben werden, in Abhängigkeit davon, ob beispielsweise der Datenzugriff bidirektional oder unidirektional sein muß, umfassen. Die CPU 1002 kann auch direkt und sehr schnell häufig benötigte Daten aus/in einem Cache-Speicher 1010 abrufen und speichern.
Eine entnehmbare Massenspeichervorrichtung 1012 stellt eine zusätzliche Datenspeicherkapazität für das Computersystem 1000 bereit und ist entweder bidirektional oder unidirektional mit der CPU 1002 über einen peripheren Bus 1014 gekoppelt. Eine spezielle entnehmbare Massenspeichervorrichtung beispielsweise, die gemeinhin als CD-ROM bekannt ist, leitet typischerweise Daten unidirektional zur CPU 1002, wohingegen eine Diskette Daten bidirektional zur CPU 1002 leiten kann. Der Speicher 1012 kann auch maschinenlesbare Medien wie z. B. ein Magnetband, einen Flash-Speicher, Signale, die auf einer Trägerwelle verkörpert sind, PC-KARTEN, tragbare Massenspeichervorrichtungen, holographische Speichervorrichtungen und andere Speichervorrichtungen umfassen. Ein fester Massenspeicher 1016 stellt auch zusätzliche Datenspeicherkapazität bereit und ist bidirektional mit der CPU 1002 über einen peripheren Bus 1014 gekoppelt. Das üblichste Beispiel für einen Massenspeicher 1016 ist ein Festplattenlaufwerk. Im allgemeinen ist der Zugriff auf diese Medien langsamer als der Zugriff auf die Primärspeicher 1004 und 1006. Die Massenspeicher 1012 und 1016 speichern im allgemeinen zusätzliche Programmieranweisungen, Daten und dergleichen, die typischerweise von der CPU 1002 nicht in aktivem Gebrauch sind. Es ist zu erkennen, daß die im Massenspeicher 1012 und 1016 enthaltenen Informationen bei Bedarf in Standardweise als Teil des Primärspeichers 1004 (z. B. RAM) als virtueller Speicher integriert werden können.
Zusätzlich dazu, daß der CPU 1002 auf die Speicheruntersysteme Zugriff verschafft wird, wird der periphere Bus 1014 verwendet, um anderen Untersystemen und Vorrichtungen ebenso Zugriff zu verschaffen. Bei der beschriebenen Ausführungsform umfassen diese einen Anzeigemonitor 1018 und einen Adapter 1020, eine Druckvorrichtung 1022, eine Netzwerkschnittstelle 1024, eine Hilfs-Eingabe/Ausgabe-Vorrichtungsschnittstelle 1026, eine Soundkarte 1028 und Lautsprecher 1030 und je nach Bedarf andere Untersysteme.
Die Netzwerkschnittstelle 1024 ermöglicht, daß die CPU 1002 mit einem anderen Computer, Computernetzwerk oder Fernmeldenetz unter Verwendung einer Netzwerkverbindung, wie gezeigt, gekoppelt wird. Es wird beabsichtigt, daß die CPU 1002 über die Netzwerkschnittstelle 1024 Informationen, z. B. Datenobjekte oder Programmanweisungen, von einem anderen Netzwerk empfangen könnte oder Informationen zu einem anderen Netzwerk ausgeben könnte im Verlauf der Ausführung der vorstehend beschriebenen Verfahrensschritte. Informationen, die häufig als Folge von auf einer CPU auszuführenden Befehlen dargestellt werden, können von einem anderen Netzwerk empfangen werden und an dieses ausgegeben werden, beispielsweise in Form eines Computer- Datensignals, das in einer Trägerwelle verkörpert ist. Eine Schnittstellenkarte oder ähnliche Vorrichtung und geeignete Software, die durch die CPU 1002 implementiert wird, kann verwendet werden, um das Computersystem 1000 mit einem externen Netzwerk zu verbinden und Daten gemäß Standardprotokollen zu übertragen. Das heißt, die Verfahrensausführungsformen der vorliegenden Erfindung können nur auf der CPU 1002 ausgeführt werden oder können über ein Netzwerk wie das Internet, Intranet-Netzwerke oder lokale Netze in Verbindung mit einer entfernten CPU, die sich einen Teil der Verarbeitung teilt, ausgeführt werden. Zusätzliche Massenspeichervorrichtungen (nicht dargestellt) können ebenfalls mit der CPU 1002 über eine Netzwerkschnittstelle 1024 verbunden werden.
Eine Hilfs-E/A-Vorrichtungsschnittstelle 1026 stellt allgemeine und kundenspezifische Schnittstellen dar, die ermöglichen, daß die CPU 1002 Daten an andere Vorrichtungen wie Mikrophone, berührungsempfindliche Anzeigen, Wandler- Kartenleser, Bandleser, Sprach- oder Handschriften- Erkennungsgeräte, biometrische Leser, Kameras, tragbare Massenspeichervorrichtungen und andere Computer sendet und typischer von diesen empfängt.
Mit der CPU 1002 ist auch eine Tastatursteuereinheit 1032 über einen lokalen Bus 1034 zum Empfangen einer Eingabe von einer Tastatur 1036 oder einer Zeigervorrichtung 1038 und zum Senden von decodierten Zeichen von der Tastatur 1036 oder der Zeigervorrichtung 1038 zur CPU 1002 gekoppelt. Die Zeigervorrichtung kann eine Maus, ein Stift, eine Rollkugel oder ein Tablett sein und ist zum Zusammenwirken mit einer graphischen Benutzerschnittstelle nützlich.
Außerdem betreffen die Ausführungsformen der vorliegenden Erfindung ferner Computerspeicherprodukte mit einem maschinenlesbaren Medium, die einen Programmcode zur Ausführung von verschiedenen computerimplementierten Operationen enthalten. Das maschinenlesbare Medium ist eine beliebige Datenspeichervorrichtung, die Daten speichern kann, welche anschließend von einem Computersystem gelesen werden können. Die Medien und der Programmcode können jene sein, die speziell für die Zwecke der vorliegenden Erfindung ausgelegt und konstruiert sind, oder sie können von der Art sein, die üblichen Fachleuten auf dem Gebiet der Computersoftware gut bekannt sind. Beispiele für maschinenlesbare Medien umfassen, sind jedoch nicht begrenzt auf, alle vorstehend erwähnten Medien: magnetische Medien, wie z. B. Festplatten, Disketten und ein Magnetband; optische Medien, wie z. B. CD-ROM-Platten; magneto-optische Medien, wie z. B. optische Disketten; und speziell ausgelegte Hardwarevorrichtungen wie anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikbausteine (PLDs) und ROM- und RAM-Bausteine. Das maschinenlesbare Medium kann auch als Datensignal, das in einer Trägerwelle verkörpert ist, über ein Netzwerk von miteinander gekoppelten Computersystemen verteilt werden, so daß der maschinenlesbare Code in verteilter Weise gespeichert und ausgeführt wird. Beispiele für einen Programmcode umfassen sowohl einen Maschinencode, wie beispielsweise von einem Compiler erzeugt, als auch Dateien, die einen höherwertigen Code enthalten, der unter Verwendung eines Interpretierers ausgeführt werden kann.
Es ist für Fachleute zu erkennen, daß die vorstehend beschriebenen Hardware- und Softwareelemente eine Standardauslegung und -konstruktion aufweisen. Andere Computersysteme, die sich zur Verwendung bei der Erfindung eignen, können zusätzliche oder weniger Untersysteme enthalten. Außerdem veranschaulichen der Speicherbus 1008, der periphere Bus 1014 und der lokale Bus 1034 jegliches Verbindungsschema, das zur Verknüpfung der Untersysteme dient. Ein lokaler Bus könnte beispielsweise verwendet werden, um die CPU mit dem festen Massenspeicher 1016 und dem Anzeigeadapter 1020 zu verbinden. Das in Fig. 10 dargestellte Computersystem ist nur ein Beispiel für ein Computersystem, das sich zur Verwendung bei der Erfindung eignet. Andere Computerarchitekturen mit unterschiedlichen Konfigurationen von Untersystemen können ebenfalls verwendet werden.
Obwohl die vorangehende Erfindung zum Zweck eines klaren Verständnisses in gewissen Einzelheiten beschrieben wurde, wird es ersichtlich sein, daß bestimmte Änderungen und Modifikationen innerhalb des Schutzbereichs der angefügten Ansprüche ausgeführt werden können. Ferner sollte beachtet werden, daß es alternative Möglichkeiten gibt, sowohl den Prozeß als auch die Vorrichtung der vorliegenden Erfindung zu implementieren. Obwohl der Nachrichtenspeicher beispielsweise unter Verwendung der IMAP-Indexierung beschrieben wurde, kann der Nachrichtenspeicher ebenso für andere Mail-Protokolle ausgelegt werden, um Multimediadaten oder andere Arten von Daten zu speichern. Obwohl die Felder der verschiedenen Zellen in einer speziellen Reihenfolge beschrieben sind, ist bei einem weiteren Beispiel die Reihenfolge der Felder kein erforderliches Merkmal des Nachrichtenspeichers. Die Felder können anders geordnet sein oder sie können weggelassen oder hinzugefügt werden, ohne die Leistung und die Vorteile der vorliegenden Erfindung zu beeinträchtigen. Folglich sollten die vorliegenden Ausführungsformen als Erläuterung und nicht als Einschränkung betrachtet werden, und die Erfindung sollte nicht auf die hierin angegebenen Einzelheiten begrenzt werden, sondern sie kann innerhalb des Schutzbereichs und der Äquivalente der angefügten Ansprüche modifiziert werden.

Claims (44)

1. Nachrichtenspeicher, umfassend:
eine Vielzahl von Datenspeicherplätzen auf Seitenbasis, wobei sich jeder Datenspeicherplatz zum Aufnehmen einer Vielzahl von Nachrichten eignet;
eine Indexdatei auf Seitenbasis mit einer oder mehreren Indexdateiseiten, wobei sich jede Indexdateiseite der Indexdatei zum Aufnehmen einer Vielzahl von Indexdateizellen eignet, wobei jede Indexdateizelle angeordnet ist, um Indexinformationen zu speichern, die eine zugehörige der Nachrichten kennzeichnen; und
ein Indexverzeichnis auf Seitenbasis mit einer oder mehreren Indexverzeichnisseiten, wobei sich jede Indexverzeichnisseite des Indexverzeichnisses zum Aufnehmen einer Vielzahl von Indexverzeichniszellen eignet, wobei jede Indexverzeichniszelle angeordnet ist, um Verzeichnisinformationen zu speichern, die zum Auffinden einer zugehörigen Indexdateizelle geeignet sind und dadurch der speziellen Nachricht zugeordnet werden, die der Indexdateizelle zugeordnet ist.
2. Nachrichtenspeicher nach Anspruch 1, welcher ferner eine Vielzahl von Benutzerordnern auf Seitenbasis umfaßt, wobei jeder Benutzerordner einem Benutzer zugeordnet ist und sich zum Enthalten einer Vielzahl von Benutzerzellen eignet, wobei jede Benutzerzelle angeordnet ist, um auf eine dem Benutzer zugeordnete Nachricht zu verweisen.
3. Nachrichtenspeicher nach Anspruch 2, wobei jede Benutzerzelle einen ersten Indexverzeichnis-Verweiszeiger zu einer Indexverzeichniszelle enthält, die eine solche Benutzerzelle mit ihrer gekennzeichneten Nachricht in Zusammenhang bringt.
4. Nachrichtenspeicher nach Anspruch 2 oder 3, wobei jede Benutzerzelle ferner einen Benutzerordner-Identifikator enthält, der anzeigt, welcher Benutzerordner die Benutzerzelle enthält.
5. Nachrichtenspeicher nach Anspruch 2 oder 3, wobei jede Benutzerzelle ferner einen Empfangszeitpunkt enthält, der den Zeitpunkt angibt, zu dem eine gekennzeichnete Nachricht im Nachrichtenspeicher eintrifft.
6. Nachrichtenspeicher nach Anspruch 2, wobei jeder Benutzerordner einen Gesamtgrößenwert enthält, der die Größe der Nachricht angibt.
7. Nachrichtenspeicher nach Anspruch 2 oder 6, wobei jeder Benutzerordner ferner einen nächsten eindeutigen Identifikator zum Identifizieren einer neuen Benutzerzelle enthält.
8. Nachrichtenspeicher nach Anspruch 2, 6 oder 7, wobei jeder Benutzerordner ferner ein letztes Schreibdatum enthält, das das Datum angibt, an dem die vom Benutzerordner gekennzeichnete neueste Nachricht in den Nachrichtenspeicher geschrieben wurde.
9. Nachrichtenspeicher nach Anspruch 2 oder 6, wobei jeder Benutzerordner ferner einen Nachrichtenzählstand enthält, der die Anzahl der im Benutzerordner gekennzeichneten Nachrichten anzeigt.
10. Nachrichtenspeicher nach Anspruch 1, wobei jeder Datenspeicherplatzseite, jeder Indexdateiseite und jeder Indexverzeichnisseite eine vorbestimmte Zeitdauer zugeordnet ist.
11. Nachrichtenspeicher nach Anspruch 1, wobei jede Indexverzeichniszelle einen Bezugszähler enthält, der die Anzahl der Benutzer anzeigt, die gegenwärtig auf die zugehörige Nachricht Bezug haben.
12. Nachrichtenspeicher nach Anspruch 1, wobei jede Indexverzeichniszelle einen ersten Indexdatei-Verweiszeiger zu einer zugehörigen Indexdateizelle enthält.
13. Nachrichtenspeicher nach Anspruch 12, wobei der erste Indexdatei-Verweiszeiger einen Indexdatei-Relativzeiger, der eine Stelle der Indexdateizelle in der Indexdatei anzeigt, und eine zugehörige Indexdateizellengröße, die die Größe der Indexdateizelle anzeigt, umfaßt.
14. Nachrichtenspeicher nach Anspruch 1, welcher ferner einen Indexverzeichnis-Anfangsblock mit einem Zellenanzahlzähler, der die Anzahl der Indexverzeichniszellen in einer speziellen Indexverzeichnisseite anzeigt, umfaßt.
15. Nachrichtenspeicher nach Anspruch 14, wobei der Indexverzeichnis-Anfangsblock ferner eine nächste Stelle umfaßt, die eine Stelle im Indexverzeichnis für eine neue Indexverzeichniszelle anzeigt.
16. Nachrichtenspeicher nach Anspruch 15, wobei der Indexverzeichnis-Anfangsblock ferner einen Datenspeicherplatzzähler umfaßt, der die Anzahl der von einer Indexverzeichnisseite genutzten Datenspeicherplätze anzeigt.
17. Nachrichtenspeicher nach Anspruch 1, wobei jede Indexdateizelle eine Indexdateizellengröße enthält, die die Größe der Indexdateizelle anzeigt, wodurch die interne Konsistenzprüfung erleichtert wird.
18. Nachrichtenspeicher nach Anspruch 1 oder 17, wobei jede Indexdateizelle einen Nachrichtenzeiger zur zugehörigen Nachricht im zugehörigen Datenspeicherplatz enthält.
19. Nachrichtenspeicher nach Anspruch 18, wobei der Nachrichtenzeiger einen Datenspeicherplatz-Identifikator, der einen Datenspeicherplatz identifiziert, welcher die zugehörige Nachricht enthält, und einen Datenspeicherplatz- Relativzeiger, der eine Stelle der zugehörigen Nachricht im identifizierten Datenspeicherplatz anzeigt, umfaßt.
20. Nachrichtenspeicher nach Anspruch 1, wobei jede Indexdateizelle eine zugehörige Nachrichtengröße umfaßt.
21. Nachrichtenspeicher nach Anspruch 1, 17, 18 oder 20, wobei jede Indexdateizelle eine zugehörige Nachrichtenabschnitt-Relativzeigerliste umfaßt, die die Stellen der Nachrichtenabschnitte in einem zugehörigen Datenspeicherplatz anzeigt.
22. Nachrichtenspeicher nach Anspruch 1, wobei eine Nachricht aus Präambeldaten und Nachrichtendaten besteht, wobei die Nachrichtendaten von einem Benutzer übertragene eigentliche Daten umfassen.
23. Nachrichtenspeicher nach Anspruch 22, wobei:
die Präambeldaten eine Nachrichtengröße umfassen, die die Größe der Nachricht angibt; und
die Präambeldaten einen zweiten Indexdatei- Verweiszeiger zu einer zugehörigen Indexdateizelle umfassen.
24. Nachrichtenspeicher nach Anspruch 22 oder 23, wobei die Präambeldaten einen zweiten Indexverzeichnis- Verweiszeiger zu einer zugehörigen Indexverzeichniszelle umfassen.
25. Nachrichtenspeicher nach Anspruch 24, welcher ferner umfaßt:
einen ersten Indexverzeichnis-Verweiszeiger in einer Benutzerzelle;
einen ersten Indexdatei-Verweiszeiger in einer Indexverzeichniszelle;
einen zweiten Indexdatei-Verweiszeiger in der Nachricht; und
einen Nachrichtenzeiger in der Indexdateizelle;
wobei solche Zeiger in Kombination mit dem zweiten Indexverzeichnis-Verweiszeiger in den Präambeldaten ermöglichen, daß der Nachrichtenspeicher eine interne Konsistenzprüfung durchführt und bei Bedarf Seiten des Nachrichtenspeichers rekonstruiert.
26. Nachrichtenspeicher nach Anspruch 24, welcher ferner umfaßt:
einen ersten Indexdatei-Verweiszeiger in einer Indexverzeichniszelle;
einen Nachrichtenzeiger in der Indexdateizelle; und
einen zweiten Indexdatei-Verweiszeiger in der Nachricht;
wobei solche Zeiger in Kombination mit dem zweiten Indexverzeichnis-Verweiszeiger in den Präambeldaten einen geschlossenen Bezugsmechanismus innerhalb der Datenspeicherplätze, der Indexdatei und des Indexverzeichnisses bilden.
27. Nachrichtenspeicher nach Anspruch 22, 23 oder 24, wobei die Präambeldaten einen Nachrichtensendernamen und einen Empfängerzählstand umfassen, wobei der Empfängerzählstand die Anzahl der Benutzer angibt, die auf die Nachricht Bezug haben.
28. Verfahren zum Speichern einer eingehenden Nachricht in einem Nachrichtenspeicher, wobei das Verfahren umfaßt:
Anhängen der eingehenden Nachricht an einen Datenspeicherplatzteil des Nachrichtenspeichers;
Indexieren der eingehenden Nachricht, wodurch Indexdaten erzeugt werden, wobei zumindest etwas der Indexierung ausgeführt wird, während die eingehende Nachricht an den Datenspeicherplatz angehängt wird; und
Anhängen der Indexdaten an einen Indexteil des Nachrichtenspeichers.
29. Verfahren nach Anspruch 28, wobei die eingehende Nachricht an den Datenspeicherplatzteil des Nachrichtenspeichers ohne wesentliche Behinderung des Zugriffs auf existierende Indexnachrichten in dem Nachrichtenspeicher angehängt wird.
30. Verfahren nach Anspruch 28 oder 29, wobei die Indexierung der eingehenden Nachricht ferner das Erhalten von Daten im Datenspeicherplatzteil des Nachrichtenspeichers zum Einschluß in die Indexdaten umfaßt.
31. Verfahren nach Anspruch 28, 29 oder 30, welches ferner die Beschränkung des Zugriffs auf einen ungenutzten Abschnitt des Datenspeicherplatzteils des Nachrichtenspeichers, während die eingehende Nachricht an den Datenspeicherplatzteil des Nachrichtenspeichers angehängt wird, umfaßt.
32. Verfahren zum Speichern einer eingehenden Nachricht in einem Nachrichtenspeicher, wobei das Verfahren umfaßt:
Anhängen der eingehenden Nachricht an einen Datenspeicherplatzteil des Nachrichtenspeichers ohne wesentliche Behinderung des Zugriffs auf existierende Nachrichten in dem Nachrichtenspeicher;
Indexieren der eingehenden Nachricht, wodurch Indexdaten erzeugt werden; und
Anhängen der Indexdaten an einen Indexteil des Nachrichtenspeichers.
33. Verfahren nach Anspruch 32, wobei zumindest etwas der Indexierung ausgeführt wird, während die eingehende Nachricht an den Datenspeicherplatzteil des Nachrichtenspeichers angehängt wird.
34. Verfahren nach Anspruch 32 oder 33, welches ferner die Beschränkung des Zugriffs auf einen ungenutzten Abschnitt des Datenspeicherplatzteils, während die eingehende Nachricht an den Datenspeicherplatzteil des Nachrichtenspeichers angehängt wird, umfaßt.
35. Verfahren nach Anspruch 32, 33 oder 34, wobei die Indexierung der eingehenden Nachricht ferner das Erhalten von Daten im Datenspeicherplatzteil des Nachrichtenspeichers zum Einschluß in die Indexdaten umfaßt.
36. Maschinenlesbares Medium, auf dem ein Nachrichtenspeicher verkörpert ist, wobei der Nachrichtenspeicher aus folgendem besteht:
einer Vielzahl von Datenspeicherplätzen auf Seitenbasis, wobei sich jeder Datenspeicherplatz zum Aufnehmen einer Vielzahl von Nachrichten eignet;
einer Indexdatei auf Seitenbasis, wobei sich jede Seite der Indexdatei zum Aufnehmen einer Vielzahl von Indexdateizellen eignet, wobei jede Indexdateizelle angeordnet ist, um Indexinformationen zu speichern, die eine zugehörige der Nachrichten kennzeichnen; und
einem Indexverzeichnis auf Seitenbasis, wobei sich jede Seite des Indexverzeichnisses zum Enthalten einer Vielzahl von Indexverzeichniszellen eignet, wobei jede Indexverzeichniszelle angeordnet ist, um Verzeichnisinformationen zu speichern, die zum Auffinden einer zugehörigen Indexdateizelle geeignet sind und dadurch einer speziellen Nachricht zugeordnet werden, die der Indexdateizelle zugeordnet ist.
37. Maschinenlesbares Medium nach Anspruch 36, welches ferner umfaßt:
eine Vielzahl von Benutzerordnern auf Seitenbasis, wobei jeder Benutzerordner einem Benutzer zugeordnet ist und sich zum Enthalten einer Vielzahl von Benutzerzellen eignet, wobei jede Benutzerzelle angeordnet ist, um auf eine dem Benutzer zugeordnete Nachricht im Nachrichtenspeicher zu verweisen.
38. Maschinenlesbares Medium nach Anspruch 37, wobei jede Benutzerzelle einen ersten Indexverzeichnis-Verweiszeiger zu einer Indexverzeichniszelle enthält, wodurch eine solche Benutzerzelle mit ihrer gekennzeichneten Nachricht in Zusammenhang gebracht wird.
39. Maschinenlesbares Medium nach Anspruch 37 oder 38, wobei jede Benutzerzelle ferner einen Benutzerordner- Identifikator enthält, der anzeigt, welcher Benutzerordner die Benutzerzelle enthält.
40. Maschinenlesbares Medium, das Programmieranweisungen zum Speichern einer eingehenden Nachricht in einem Nachrichtenspeicher enthält, wobei das maschinenlesbare Medium Computerprogrammcode-Einrichtungen umfaßt, die dazu ausgelegt sind, einen Computer zu veranlassen, die folgenden Schritte auszuführen:
Anhängen der eingehenden Nachricht an einen Datenspeicherplatzteil des Nachrichtenspeichers;
Indexieren der eingehenden Nachricht, wodurch Indexdaten erzeugt werden, wobei zumindest etwas der Indexierung ausgeführt wird, während die eingehende Nachricht an den Datenspeicherplatz angehängt wird; und
Anhängen der Indexdaten an einen Indexteil des Nachrichtenspeichers.
41. Maschinenlesbares Medium nach Anspruch 40, welches ferner Computerprogrammcode-Einrichtungen umfaßt, die dazu ausgelegt sind, einen Computer zu veranlassen, den Schritt der Beschränkung des Zugriffs auf einen ungenutzten Abschnitt des Datenspeicherplatzteils des Nachrichtenspeichers auszuführen, während die eingehende Nachricht an den Datenspeicherplatzteil des Nachrichtenspeichers angehängt wird.
42. Maschinenlesbares Medium, das Programmieranweisungen zum Speichern einer eingehenden Nachricht in einem Nachrichtenspeicher enthält, wobei das maschinenlesbare Medium Computerprogrammcode-Einrichtungen umfaßt, die dazu ausgelegt sind, einen Computer zu veranlassen, die folgenden Schritte auszuführen:
Anhängen der eingehenden Nachricht an einen Datenspeicherplatzteil des Nachrichtenspeichers ohne wesentliche Behinderung des Zugriffs auf existierende Nachrichten in dem Nachrichtenspeicher;
Indexieren der eingehenden Nachricht, wodurch Indexdaten erzeugt werden; und
Anhängen der Indexdaten an einen Indexteil des Nachrichtenspeichers.
43. Computer-Datensignal, das in einer Trägerwelle verkörpert ist und Sequenzen von Anweisungen darstellt, die bei Ausführung durch einen Prozessor den Prozessor veranlassen, eine eingehende Nachricht in einem Nachrichtenspeicher zu speichern durch Ausführen der Schritte:
Anhängen der eingehenden Nachricht an einen Datenspeicherplatzteil des Nachrichtenspeichers;
Indexieren der eingehenden Nachricht, wodurch Indexdaten erzeugt werden, wobei zumindest etwas der Indexierung ausgeführt wird, während die eingehende Nachricht an den Datenspeicherplatz angehängt wird; und
Anhängen der Indexdaten an einen Indexteil des Nachrichtenspeichers.
44. Computer-Datensignal, das in einer Trägerwelle verkörpert ist und Sequenzen von Anweisungen darstellt, die bei Ausführung durch einen Prozessor den Prozessor veranlassen, eine eingehende Nachricht in einem Nachrichtenspeicher zu speichern durch Ausführen der Schritte:
Anhängen der eingehenden Nachricht an einen Datenspeicherplatzteil des Nachrichtenspeichers ohne wesentliche Behinderung des Zugriffs auf existierende Nachrichten in dem Nachrichtenspeicher;
Indexieren der eingehenden Nachricht, wodurch Indexdaten erzeugt werden; und
Anhängen der Indexdaten an einen Indexteil des Nachrichtenspeichers.
DE19919146A 1998-04-27 1999-04-27 Hochleistungs-Nachrichtenspeicher Withdrawn DE19919146A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/067,537 US6167402A (en) 1998-04-27 1998-04-27 High performance message store

Publications (1)

Publication Number Publication Date
DE19919146A1 true DE19919146A1 (de) 1999-10-28

Family

ID=22076668

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19919146A Withdrawn DE19919146A1 (de) 1998-04-27 1999-04-27 Hochleistungs-Nachrichtenspeicher

Country Status (4)

Country Link
US (1) US6167402A (de)
JP (1) JP2000003321A (de)
DE (1) DE19919146A1 (de)
GB (1) GB2340269B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103829B2 (en) * 2003-06-25 2012-01-24 Commvault Systems, Inc. Hierarchical systems and methods for performing storage operations in a computer network

Families Citing this family (359)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US7581077B2 (en) 1997-10-30 2009-08-25 Commvault Systems, Inc. Method and system for transferring data in a storage operation
US7209972B1 (en) 1997-10-30 2007-04-24 Commvault Systems, Inc. High speed data transfer mechanism
US7739381B2 (en) 1998-03-11 2010-06-15 Commvault Systems, Inc. System and method for providing encryption in storage operations in a storage network, such as for use by application service providers that provide data storage services
US7277941B2 (en) 1998-03-11 2007-10-02 Commvault Systems, Inc. System and method for providing encryption in a storage network by storing a secured encryption key with encrypted archive data in an archive storage device
US6735770B1 (en) * 1998-04-27 2004-05-11 Sun Microsystems, Inc. Method and apparatus for high performance access to data in a message store
US6330589B1 (en) * 1998-05-26 2001-12-11 Microsoft Corporation System and method for using a client database to manage conversation threads generated from email or news messages
US8234477B2 (en) 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US6594701B1 (en) 1998-08-04 2003-07-15 Microsoft Corporation Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data
US6360220B1 (en) * 1998-08-04 2002-03-19 Microsoft Corporation Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries
US6321276B1 (en) 1998-08-04 2001-11-20 Microsoft Corporation Recoverable methods and systems for processing input/output requests including virtual memory addresses
US6442600B1 (en) * 1999-01-15 2002-08-27 Micron Technology, Inc. Method and system for centralized storage and management of electronic messages
US7035880B1 (en) 1999-07-14 2006-04-25 Commvault Systems, Inc. Modular backup and retrieval system used in conjunction with a storage area network
US7395282B1 (en) 1999-07-15 2008-07-01 Commvault Systems, Inc. Hierarchical backup and retrieval system
US7389311B1 (en) 1999-07-15 2008-06-17 Commvault Systems, Inc. Modular backup and retrieval system
US6526413B2 (en) * 1999-09-28 2003-02-25 Microsoft Corporation Architecture for a hierarchical folder structure in hand-held computers
US6606649B1 (en) 1999-09-28 2003-08-12 Microsoft Corporation Application programming interface functions for supporting an improved message store for hand-held computers
DE19959528B4 (de) 1999-12-09 2011-08-18 IPCom GmbH & Co. KG, 82049 Verfahren zur Übertragung von elektronischen Postnachrichten
JP5072160B2 (ja) * 2000-01-12 2012-11-14 ネットレイティングス・インコーポレーティッド ワールドワイドウェブのディジタルコンテントの普及を見積もるシステム及び方法
US7434219B2 (en) 2000-01-31 2008-10-07 Commvault Systems, Inc. Storage of application specific profiles correlating to document versions
US7155481B2 (en) * 2000-01-31 2006-12-26 Commvault Systems, Inc. Email attachment management in a computer system
US7003641B2 (en) 2000-01-31 2006-02-21 Commvault Systems, Inc. Logical view with granular access to exchange data managed by a modular data and storage management system
US6658436B2 (en) 2000-01-31 2003-12-02 Commvault Systems, Inc. Logical view and access to data managed by a modular data and storage management system
GB2359155A (en) 2000-02-11 2001-08-15 Nokia Mobile Phones Ltd Memory management of acoustic samples eg voice memos
US6857008B1 (en) * 2000-04-19 2005-02-15 Cisco Technology, Inc. Arrangement for accessing an IP-based messaging server by telephone for management of stored messages
US7577834B1 (en) * 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
JP3723422B2 (ja) 2000-07-11 2005-12-07 三洋電機株式会社 携帯端末機
US7603415B1 (en) 2000-08-15 2009-10-13 ART Technology Group Classification of electronic messages using a hierarchy of rule sets
US20030208567A1 (en) * 2000-08-29 2003-11-06 Gross Mark T. Configuration of network appliances via e-mail
US7024462B1 (en) * 2000-10-20 2006-04-04 Amacis Limited Electronic message routing
US6725228B1 (en) * 2000-10-31 2004-04-20 David Morley Clark System for managing and organizing stored electronic messages
US7627830B1 (en) 2000-10-31 2009-12-01 Aol Llc, A Delaware Limited Liability Company Click-to-add, jot-it-down, and add banner
US6898592B2 (en) * 2000-12-27 2005-05-24 Microsoft Corporation Scoping queries in a search engine
CN1316397C (zh) * 2001-02-12 2007-05-16 Emc公司 索引惟一电子邮件消息及其使用的系统和方法
US6965904B2 (en) 2001-03-02 2005-11-15 Zantaz, Inc. Query Service for electronic documents archived in a multi-dimensional storage space
US6985958B2 (en) * 2001-03-14 2006-01-10 Microsoft Corporation Messaging infrastructure for identity-centric data access
US7024662B2 (en) 2001-03-14 2006-04-04 Microsoft Corporation Executing dynamically assigned functions while providing services
US7539747B2 (en) 2001-03-14 2009-05-26 Microsoft Corporation Schema-based context service
US7302634B2 (en) 2001-03-14 2007-11-27 Microsoft Corporation Schema-based services for identity-based data access
US7284271B2 (en) 2001-03-14 2007-10-16 Microsoft Corporation Authorizing a requesting entity to operate upon data structures
US6826576B2 (en) * 2001-05-07 2004-11-30 Microsoft Corporation Very-large-scale automatic categorizer for web content
US20030028587A1 (en) * 2001-05-11 2003-02-06 Driscoll Michael C. System and method for accessing and storing data in a common network architecture
EP1280298A1 (de) * 2001-07-26 2003-01-29 BRITISH TELECOMMUNICATIONS public limited company Verfahren und Vorrichtung zum Detektieren von Netzwerkaktivitäten
WO2003027891A1 (en) 2001-09-28 2003-04-03 Commvault Systems, Inc. System and method for archiving objects in an information store
JP2005505045A (ja) 2001-09-28 2005-02-17 コムヴォールト・システムズ・インコーポレーテッド クイックリカバリボリュームを作成及び管理する方法及び装置
US20030069892A1 (en) * 2001-10-10 2003-04-10 International Business Machines Corporation Relational view of electronic objects
US7343407B2 (en) * 2001-10-15 2008-03-11 Ricoh Company, Ltd. Method and system of remote monitoring and support of devices, including handling Email messages having message types specified within the Email message
US7584227B2 (en) * 2005-12-19 2009-09-01 Commvault Systems, Inc. System and method for containerized data storage and tracking
US20030101155A1 (en) * 2001-11-23 2003-05-29 Parag Gokhale Method and system for scheduling media exports
US8346733B2 (en) 2006-12-22 2013-01-01 Commvault Systems, Inc. Systems and methods of media management, such as management of media to and from a media storage library
ES2359399T3 (es) * 2001-11-23 2011-05-23 Commvault Systems, Inc. Sistema y procedimiento de duplicación selectiva de datos.
US7603518B2 (en) 2005-12-19 2009-10-13 Commvault Systems, Inc. System and method for improved media identification in a storage device
US9886309B2 (en) 2002-06-28 2018-02-06 Microsoft Technology Licensing, Llc Identity-based distributed computing for device resources
US8150922B2 (en) * 2002-07-17 2012-04-03 Research In Motion Limited Voice and text group chat display management techniques for wireless mobile terminals
US7640293B2 (en) * 2002-07-17 2009-12-29 Research In Motion Limited Method, system and apparatus for messaging between wireless mobile terminals and networked computers
US7305430B2 (en) * 2002-08-01 2007-12-04 International Business Machines Corporation Reducing data storage requirements on mail servers
JP4170702B2 (ja) * 2002-08-05 2008-10-22 株式会社Pfu ファイル管理システム並びにプログラム
WO2004015954A1 (en) * 2002-08-07 2004-02-19 British Telecommunications Public Limited Company Server for sending electronics messages
GB2410106B (en) 2002-09-09 2006-09-13 Commvault Systems Inc Dynamic storage device pooling in a computer system
US8370542B2 (en) 2002-09-16 2013-02-05 Commvault Systems, Inc. Combined stream auxiliary copy system and method
WO2004025423A2 (en) * 2002-09-16 2004-03-25 Commvault Systems, Inc. System and method for blind media support
CA2508089A1 (en) 2002-10-07 2004-04-22 Commvault Systems, Inc. System and method for managing stored data
JP2004145569A (ja) * 2002-10-23 2004-05-20 Internatl Business Mach Corp <Ibm> 文書表示システム、文書表示方法、およびプログラム
US7613773B2 (en) * 2002-12-31 2009-11-03 Rensselaer Polytechnic Institute Asynchronous network audio/visual collaboration system
US7366760B2 (en) * 2003-01-03 2008-04-29 Microsoft Corporation System and method for improved client server communications of email messages
US7620688B2 (en) * 2003-01-03 2009-11-17 Microsoft Corporation Progress mode for electronic mail component
US7386590B2 (en) 2003-01-03 2008-06-10 Microsoft Corporation System and method for improved synchronization between a server and a client
US20050039069A1 (en) * 2003-04-03 2005-02-17 Anand Prahlad Remote disaster data recovery system and method
WO2004090872A2 (en) * 2003-04-03 2004-10-21 Commvault Systems, Inc. Method and system for controlling a robotic arm in a storage device
WO2004090740A1 (en) 2003-04-03 2004-10-21 Commvault Systems, Inc. System and method for dynamically sharing media in a computer network
WO2004090789A2 (en) 2003-04-03 2004-10-21 Commvault Systems, Inc. System and method for extended media retention
US7631351B2 (en) * 2003-04-03 2009-12-08 Commvault Systems, Inc. System and method for performing storage operations through a firewall
US20040215724A1 (en) * 2003-04-28 2004-10-28 Microsoft Corporation Email service error recovery
US7673000B2 (en) * 2003-04-28 2010-03-02 Microsoft Corporation Email service
US6973654B1 (en) 2003-05-27 2005-12-06 Microsoft Corporation Systems and methods for the repartitioning of data
US20050039048A1 (en) * 2003-08-07 2005-02-17 Sierra Wireless, Inc. A Canadian Corp. Efficient new e-mail discovery
US7584264B2 (en) * 2003-08-19 2009-09-01 Google Inc. Data storage and retrieval systems and related methods of storing and retrieving data
US7546324B2 (en) 2003-11-13 2009-06-09 Commvault Systems, Inc. Systems and methods for performing storage operations using network attached storage
WO2005050385A2 (en) 2003-11-13 2005-06-02 Commvault Systems, Inc. System and method for performing integrated storage operations
WO2005065084A2 (en) * 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
WO2005050382A2 (en) * 2003-11-13 2005-06-02 Commvault Systems, Inc. System and method for data storage and tracking
US7440982B2 (en) 2003-11-13 2008-10-21 Commvault Systems, Inc. System and method for stored data archive verification
US7613748B2 (en) 2003-11-13 2009-11-03 Commvault Systems, Inc. Stored data reverification management system and method
CA2548542C (en) 2003-11-13 2011-08-09 Commvault Systems, Inc. System and method for performing a snapshot and for restoring data
US20050198166A1 (en) * 2003-11-14 2005-09-08 Matsushita Electric Industrial Co., Ltd. Mail program, e-mail device, and method for managing e-mail messages
US7350192B2 (en) * 2003-12-08 2008-03-25 Ebay Inc. Method and system to automatically generate software code
US8086671B2 (en) * 2004-02-11 2011-12-27 Microsoft Corporation Systems and methods that facilitate in-order serial processing of related messages
US8266406B2 (en) 2004-04-30 2012-09-11 Commvault Systems, Inc. System and method for allocation of organizational resources
CA2564967C (en) 2004-04-30 2014-09-30 Commvault Systems, Inc. Hierarchical systems and methods for providing a unified view of storage information
US7606793B2 (en) 2004-09-27 2009-10-20 Microsoft Corporation System and method for scoping searches using index keys
US8103723B1 (en) 2004-10-07 2012-01-24 Google Inc. Message server that retains messages deleted by one client application for access by another client application
WO2006053084A2 (en) 2004-11-05 2006-05-18 Commvault Systems, Inc. Method and system of pooling storage devices
US7490207B2 (en) 2004-11-08 2009-02-10 Commvault Systems, Inc. System and method for performing auxillary storage operations
US8959299B2 (en) 2004-11-15 2015-02-17 Commvault Systems, Inc. Using a snapshot as a data source
US8775823B2 (en) 2006-12-29 2014-07-08 Commvault Systems, Inc. System and method for encrypting secondary copies of data
US8055715B2 (en) * 2005-02-01 2011-11-08 i365 MetaLINCS Thread identification and classification
US8112605B2 (en) 2005-05-02 2012-02-07 Commvault Systems, Inc. System and method for allocation of organizational resources
US7882181B2 (en) * 2005-06-03 2011-02-01 Microsoft Corporation Minimizing data transfer from POP3 servers
US8380682B2 (en) 2005-08-10 2013-02-19 International Business Machines Corporation Indexing and searching of electronic message transmission thread sets
US7565347B2 (en) * 2005-08-10 2009-07-21 International Business Machines Corporation Indexing and searching of electronic message transmission thread sets
US7602906B2 (en) * 2005-08-25 2009-10-13 Microsoft Corporation Cipher for disk encryption
US7562087B2 (en) * 2005-09-30 2009-07-14 Computer Associates Think, Inc. Method and system for processing directory operations
US7822749B2 (en) 2005-11-28 2010-10-26 Commvault Systems, Inc. Systems and methods for classifying and transferring information in a storage network
US7747579B2 (en) 2005-11-28 2010-06-29 Commvault Systems, Inc. Metabase for facilitating data classification
WO2007062457A1 (en) * 2005-11-29 2007-06-07 Coolrock Software Pty Ltd A method and apparatus for storing and distributing electronic mail
US7617253B2 (en) * 2005-12-19 2009-11-10 Commvault Systems, Inc. Destination systems and methods for performing data replication
US20110010518A1 (en) 2005-12-19 2011-01-13 Srinivas Kavuri Systems and Methods for Migrating Components in a Hierarchical Storage Network
US20070166674A1 (en) * 2005-12-19 2007-07-19 Kochunni Jaidev O Systems and methods for generating configuration metrics in a storage network
US7543125B2 (en) 2005-12-19 2009-06-02 Commvault Systems, Inc. System and method for performing time-flexible calendric storage operations
US8655850B2 (en) 2005-12-19 2014-02-18 Commvault Systems, Inc. Systems and methods for resynchronizing information
US7818262B2 (en) * 2005-12-19 2010-10-19 Commvault Systems, Inc. System and method for providing a flexible licensing system for digital content
US7606844B2 (en) 2005-12-19 2009-10-20 Commvault Systems, Inc. System and method for performing replication copy storage operations
US8572330B2 (en) 2005-12-19 2013-10-29 Commvault Systems, Inc. Systems and methods for granular resource management in a storage network
US7457790B2 (en) * 2005-12-19 2008-11-25 Commvault Systems, Inc. Extensible configuration engine system and method
US7962709B2 (en) 2005-12-19 2011-06-14 Commvault Systems, Inc. Network redirector systems and methods for performing data replication
US7620710B2 (en) 2005-12-19 2009-11-17 Commvault Systems, Inc. System and method for performing multi-path storage operations
US7651593B2 (en) 2005-12-19 2010-01-26 Commvault Systems, Inc. Systems and methods for performing data replication
US7636743B2 (en) * 2005-12-19 2009-12-22 Commvault Systems, Inc. Pathname translation in a data replication system
US20200257596A1 (en) 2005-12-19 2020-08-13 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
ES2582364T3 (es) 2005-12-19 2016-09-12 Commvault Systems, Inc. Sistemas y métodos para realizar replicación de datos
US7617262B2 (en) 2005-12-19 2009-11-10 Commvault Systems, Inc. Systems and methods for monitoring application data in a data replication system
US8930496B2 (en) 2005-12-19 2015-01-06 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US8098295B2 (en) * 2006-03-06 2012-01-17 Given Imaging Ltd. In-vivo imaging system device and method with image stream construction using a raw images
US8028025B2 (en) * 2006-05-18 2011-09-27 International Business Machines Corporation Apparatus, system, and method for setting/retrieving header information dynamically into/from service data objects for protocol based technology adapters
KR100711523B1 (ko) * 2006-06-13 2007-04-27 삼성전자주식회사 휴대용 단말기에서 메시지 관리 장치 및 방법
US8726242B2 (en) 2006-07-27 2014-05-13 Commvault Systems, Inc. Systems and methods for continuous data replication
WO2008036757A2 (en) * 2006-09-19 2008-03-27 Howard Lutnick Products and processes for providing information services
US7539783B2 (en) * 2006-09-22 2009-05-26 Commvault Systems, Inc. Systems and methods of media management, such as management of media to and from a media storage library, including removable media
CN101529419B (zh) 2006-10-17 2013-05-01 慷孚系统公司 用于对内容进行离线索引和对存储的数据进行分类的方法和系统
US8655914B2 (en) * 2006-10-17 2014-02-18 Commvault Systems, Inc. System and method for storage operation access security
US7882077B2 (en) 2006-10-17 2011-02-01 Commvault Systems, Inc. Method and system for offline indexing of content and classifying stored data
US8370442B2 (en) 2008-08-29 2013-02-05 Commvault Systems, Inc. Method and system for leveraging identified changes to a mail server
CA2705379C (en) 2006-12-04 2016-08-30 Commvault Systems, Inc. Systems and methods for creating copies of data, such as archive copies
US8677091B2 (en) 2006-12-18 2014-03-18 Commvault Systems, Inc. Writing data and storage system specific metadata to network attached storage device
US8312323B2 (en) 2006-12-22 2012-11-13 Commvault Systems, Inc. Systems and methods for remote monitoring in a computer network and reporting a failed migration operation without accessing the data being moved
US20080228771A1 (en) 2006-12-22 2008-09-18 Commvault Systems, Inc. Method and system for searching stored data
US7734669B2 (en) 2006-12-22 2010-06-08 Commvault Systems, Inc. Managing copies of data
US8719809B2 (en) 2006-12-22 2014-05-06 Commvault Systems, Inc. Point in time rollback and un-installation of software
US20080155205A1 (en) * 2006-12-22 2008-06-26 Parag Gokhale Systems and methods of data storage management, such as dynamic data stream allocation
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US7831566B2 (en) * 2006-12-22 2010-11-09 Commvault Systems, Inc. Systems and methods of hierarchical storage management, such as global management of storage operations
US7831766B2 (en) * 2006-12-22 2010-11-09 Comm Vault Systems, Inc. Systems and methods of data storage management, such as pre-allocation of storage space
US7756536B2 (en) * 2007-01-31 2010-07-13 Sony Ericsson Mobile Communications Ab Device and method for providing and displaying animated SMS messages
US8290808B2 (en) 2007-03-09 2012-10-16 Commvault Systems, Inc. System and method for automating customer-validated statement of work for a data storage environment
EP2195724B1 (de) 2007-08-28 2019-10-09 Commvault Systems, Inc. Power management von datenverarbeitungsbetriebsmitteln, wie zum beispiel adaptives power management von datenspeicherungsoperationen
US8706976B2 (en) 2007-08-30 2014-04-22 Commvault Systems, Inc. Parallel access virtual tape library and drives
US8396838B2 (en) 2007-10-17 2013-03-12 Commvault Systems, Inc. Legal compliance, electronic discovery and electronic document handling of online and offline copies of data
US9348912B2 (en) 2007-10-18 2016-05-24 Microsoft Technology Licensing, Llc Document length as a static relevance feature for ranking search results
US20090182827A1 (en) * 2007-10-18 2009-07-16 Nokia Corporation Method and apparatus for the aggregation and indexing of message parts in multipart mime objects
KR100983651B1 (ko) 2008-01-08 2010-09-24 주식회사 케이티 메시지 저장을 위한 장치 및 방법
US8296301B2 (en) 2008-01-30 2012-10-23 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US7836174B2 (en) 2008-01-30 2010-11-16 Commvault Systems, Inc. Systems and methods for grid-based data scanning
US8812493B2 (en) 2008-04-11 2014-08-19 Microsoft Corporation Search results ranking using editing distance and document information
US8769048B2 (en) 2008-06-18 2014-07-01 Commvault Systems, Inc. Data protection scheduling, such as providing a flexible backup window in a data protection system
US9128883B2 (en) 2008-06-19 2015-09-08 Commvault Systems, Inc Data storage resource allocation by performing abbreviated resource checks based on relative chances of failure of the data storage resources to determine whether data storage requests would fail
US8352954B2 (en) 2008-06-19 2013-01-08 Commvault Systems, Inc. Data storage resource allocation by employing dynamic methods and blacklisting resource request pools
US8661082B2 (en) * 2008-06-20 2014-02-25 Microsoft Corporation Extracting previous messages from a later message
US8484162B2 (en) 2008-06-24 2013-07-09 Commvault Systems, Inc. De-duplication systems and methods for application-specific data
US8219524B2 (en) * 2008-06-24 2012-07-10 Commvault Systems, Inc. Application-aware and remote single instance data management
US9098495B2 (en) 2008-06-24 2015-08-04 Commvault Systems, Inc. Application-aware and remote single instance data management
US8335776B2 (en) 2008-07-02 2012-12-18 Commvault Systems, Inc. Distributed indexing system for data storage
US8166263B2 (en) 2008-07-03 2012-04-24 Commvault Systems, Inc. Continuous data protection over intermittent connections, such as continuous data backup for laptops or wireless devices
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8725688B2 (en) 2008-09-05 2014-05-13 Commvault Systems, Inc. Image level copy or restore, such as image level restore without knowledge of data object metadata
US20100070474A1 (en) 2008-09-12 2010-03-18 Lad Kamleshkumar K Transferring or migrating portions of data objects, such as block-level data migration or chunk-based data migration
US20100070466A1 (en) 2008-09-15 2010-03-18 Anand Prahlad Data transfer techniques within data storage devices, such as network attached storage performing data migration
US9015181B2 (en) 2008-09-26 2015-04-21 Commvault Systems, Inc. Systems and methods for managing single instancing data
WO2010036754A1 (en) 2008-09-26 2010-04-01 Commvault Systems, Inc. Systems and methods for managing single instancing data
US9178842B2 (en) 2008-11-05 2015-11-03 Commvault Systems, Inc. Systems and methods for monitoring messaging applications for compliance with a policy
US8412677B2 (en) 2008-11-26 2013-04-02 Commvault Systems, Inc. Systems and methods for byte-level or quasi byte-level single instancing
US9495382B2 (en) 2008-12-10 2016-11-15 Commvault Systems, Inc. Systems and methods for performing discrete data replication
US8204859B2 (en) 2008-12-10 2012-06-19 Commvault Systems, Inc. Systems and methods for managing replicated database data
US8412784B2 (en) 2009-03-03 2013-04-02 Microsoft Corporation Storage model for maintaining structured document fidelity
US8434131B2 (en) 2009-03-20 2013-04-30 Commvault Systems, Inc. Managing connections in a data storage system
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US20100333116A1 (en) 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US8930306B1 (en) 2009-07-08 2015-01-06 Commvault Systems, Inc. Synchronized data deduplication
US9092500B2 (en) 2009-09-03 2015-07-28 Commvault Systems, Inc. Utilizing snapshots for access to databases and other applications
US8706867B2 (en) 2011-03-31 2014-04-22 Commvault Systems, Inc. Realtime streaming of multimedia content from secondary storage devices
US8719767B2 (en) 2011-03-31 2014-05-06 Commvault Systems, Inc. Utilizing snapshots to provide builds to developer computing devices
US8433682B2 (en) 2009-12-31 2013-04-30 Commvault Systems, Inc. Systems and methods for analyzing snapshots
US8595191B2 (en) 2009-12-31 2013-11-26 Commvault Systems, Inc. Systems and methods for performing data management operations using snapshots
US8442983B2 (en) 2009-12-31 2013-05-14 Commvault Systems, Inc. Asynchronous methods of data classification using change journals and other data structures
US8504517B2 (en) 2010-03-29 2013-08-06 Commvault Systems, Inc. Systems and methods for selective data replication
US8504515B2 (en) 2010-03-30 2013-08-06 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment
US8352422B2 (en) 2010-03-30 2013-01-08 Commvault Systems, Inc. Data restore systems and methods in a replication environment
US8725698B2 (en) 2010-03-30 2014-05-13 Commvault Systems, Inc. Stub file prioritization in a data replication system
US8572038B2 (en) 2010-05-28 2013-10-29 Commvault Systems, Inc. Systems and methods for performing data replication
US8738635B2 (en) 2010-06-01 2014-05-27 Microsoft Corporation Detection of junk in search result ranking
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
CN101883181A (zh) * 2010-06-18 2010-11-10 中兴通讯股份有限公司 处理短消息的方法及终端
US8762384B2 (en) * 2010-08-19 2014-06-24 Sap Aktiengesellschaft Method and system for search structured data from a natural language search request
CN102387178A (zh) * 2010-08-31 2012-03-21 腾讯科技(深圳)有限公司 消息更新的方法和装置
WO2012045023A2 (en) 2010-09-30 2012-04-05 Commvault Systems, Inc. Archiving data objects using secondary copies
US9244779B2 (en) 2010-09-30 2016-01-26 Commvault Systems, Inc. Data recovery operations, such as recovery from modified network data management protocol data
US8620870B2 (en) 2010-09-30 2013-12-31 Commvault Systems, Inc. Efficient data management improvements, such as docking limited-feature data management modules to a full-featured data management system
US8572340B2 (en) 2010-09-30 2013-10-29 Commvault Systems, Inc. Systems and methods for retaining and using data block signatures in data protection operations
US8364652B2 (en) 2010-09-30 2013-01-29 Commvault Systems, Inc. Content aligned block-based deduplication
US9020900B2 (en) 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
US8954446B2 (en) 2010-12-14 2015-02-10 Comm Vault Systems, Inc. Client-side repository in a networked deduplicated storage system
US9021198B1 (en) 2011-01-20 2015-04-28 Commvault Systems, Inc. System and method for sharing SAN storage
US8849762B2 (en) 2011-03-31 2014-09-30 Commvault Systems, Inc. Restoring computing environments, such as autorecovery of file systems at certain points in time
US8719264B2 (en) 2011-03-31 2014-05-06 Commvault Systems, Inc. Creating secondary copies of data based on searches for content
JP5431408B2 (ja) * 2011-04-28 2014-03-05 株式会社日立製作所 メールシステム
US9461881B2 (en) 2011-09-30 2016-10-04 Commvault Systems, Inc. Migration of existing computing systems to cloud computing sites or virtual machines
US9116633B2 (en) 2011-09-30 2015-08-25 Commvault Systems, Inc. Information management of virtual machines having mapped storage devices
US9372827B2 (en) 2011-09-30 2016-06-21 Commvault Systems, Inc. Migration of an existing computing system to new hardware
US9495462B2 (en) 2012-01-27 2016-11-15 Microsoft Technology Licensing, Llc Re-ranking search results
US9471578B2 (en) 2012-03-07 2016-10-18 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9298715B2 (en) 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US10157184B2 (en) 2012-03-30 2018-12-18 Commvault Systems, Inc. Data previewing before recalling large data files
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
US9063938B2 (en) 2012-03-30 2015-06-23 Commvault Systems, Inc. Search filtered file system using secondary storage, including multi-dimensional indexing and searching of archived files
AU2013202553B2 (en) 2012-03-30 2015-10-01 Commvault Systems, Inc. Information management of mobile device data
US9262496B2 (en) 2012-03-30 2016-02-16 Commvault Systems, Inc. Unified access to personal data
US8950009B2 (en) 2012-03-30 2015-02-03 Commvault Systems, Inc. Information management of data associated with multiple cloud services
US9639297B2 (en) 2012-03-30 2017-05-02 Commvault Systems, Inc Shared network-available storage that permits concurrent data access
US9342537B2 (en) 2012-04-23 2016-05-17 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US8892523B2 (en) 2012-06-08 2014-11-18 Commvault Systems, Inc. Auto summarization of content
US20130339310A1 (en) 2012-06-13 2013-12-19 Commvault Systems, Inc. Restore using a client side signature repository in a networked storage system
US9870374B2 (en) 2012-08-31 2018-01-16 Microsoft Technology Licensing, Llc Replicating data across data centers
US9223597B2 (en) 2012-12-21 2015-12-29 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US10379988B2 (en) 2012-12-21 2019-08-13 Commvault Systems, Inc. Systems and methods for performance monitoring
US20140181038A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to categorize unprotected virtual machines
US20140181085A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Data storage system for analysis of data across heterogeneous information management systems
US9021452B2 (en) 2012-12-27 2015-04-28 Commvault Systems, Inc. Automatic identification of storage requirements, such as for use in selling data storage management solutions
US9069799B2 (en) 2012-12-27 2015-06-30 Commvault Systems, Inc. Restoration of centralized data storage manager, such as data storage manager in a hierarchical data storage system
US9633216B2 (en) 2012-12-27 2017-04-25 Commvault Systems, Inc. Application of information management policies based on operation with a geographic entity
US10346259B2 (en) 2012-12-28 2019-07-09 Commvault Systems, Inc. Data recovery using a cloud-based remote data recovery center
US9378035B2 (en) 2012-12-28 2016-06-28 Commvault Systems, Inc. Systems and methods for repurposing virtual machines
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US20140196039A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine categorization system and method
US20140201151A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Systems and methods to select files for restoration from block-level backup for virtual machines
US9633033B2 (en) 2013-01-11 2017-04-25 Commvault Systems, Inc. High availability distributed deduplicated storage system
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9336226B2 (en) 2013-01-11 2016-05-10 Commvault Systems, Inc. Criteria-based data synchronization management
US9286110B2 (en) 2013-01-14 2016-03-15 Commvault Systems, Inc. Seamless virtual machine recall in a data storage system
US9459968B2 (en) 2013-03-11 2016-10-04 Commvault Systems, Inc. Single index to query multiple backup formats
US9483655B2 (en) 2013-03-12 2016-11-01 Commvault Systems, Inc. File backup with selective encryption
US9514217B2 (en) * 2013-05-31 2016-12-06 Linkedin Corporation Message index subdivided based on time intervals
US20150074536A1 (en) 2013-09-12 2015-03-12 Commvault Systems, Inc. File manager integration with virtualization in an information management system, including user control and storage management of virtual machines
US10949382B2 (en) 2014-01-15 2021-03-16 Commvault Systems, Inc. User-centric interfaces for information management systems
CN103699699B (zh) * 2014-01-16 2016-09-28 常州工学院 一种浏览解码话单文件方法
US9639426B2 (en) 2014-01-24 2017-05-02 Commvault Systems, Inc. Single snapshot for multiple applications
US9632874B2 (en) 2014-01-24 2017-04-25 Commvault Systems, Inc. Database application backup in single snapshot for multiple applications
US9753812B2 (en) 2014-01-24 2017-09-05 Commvault Systems, Inc. Generating mapping information for single snapshot for multiple applications
US9495251B2 (en) 2014-01-24 2016-11-15 Commvault Systems, Inc. Snapshot readiness checking and reporting
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
US9648100B2 (en) 2014-03-05 2017-05-09 Commvault Systems, Inc. Cross-system storage management for transferring data across autonomous information management systems
US10380072B2 (en) 2014-03-17 2019-08-13 Commvault Systems, Inc. Managing deletions from a deduplication database
US9633056B2 (en) 2014-03-17 2017-04-25 Commvault Systems, Inc. Maintaining a deduplication database
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US9823978B2 (en) 2014-04-16 2017-11-21 Commvault Systems, Inc. User-level quota management of data objects stored in information management systems
US9740574B2 (en) 2014-05-09 2017-08-22 Commvault Systems, Inc. Load balancing across multiple data paths
US9848045B2 (en) 2014-05-27 2017-12-19 Commvault Systems, Inc. Offline messaging between a repository storage operation cell and remote storage operation cells via an intermediary media agent
US9760446B2 (en) 2014-06-11 2017-09-12 Micron Technology, Inc. Conveying value of implementing an integrated data management and protection system
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9852026B2 (en) 2014-08-06 2017-12-26 Commvault Systems, Inc. Efficient application recovery in an information management system based on a pseudo-storage-device driver
US11249858B2 (en) 2014-08-06 2022-02-15 Commvault Systems, Inc. Point-in-time backups of a production application made accessible over fibre channel and/or ISCSI as data sources to a remote application by representing the backups as pseudo-disks operating apart from the production application and its host
US10042716B2 (en) 2014-09-03 2018-08-07 Commvault Systems, Inc. Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent
US9774672B2 (en) 2014-09-03 2017-09-26 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US9405928B2 (en) 2014-09-17 2016-08-02 Commvault Systems, Inc. Deriving encryption rules based on file content
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
US9710465B2 (en) 2014-09-22 2017-07-18 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9417968B2 (en) 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9444811B2 (en) 2014-10-21 2016-09-13 Commvault Systems, Inc. Using an enhanced data agent to restore backed up data across autonomous storage management systems
US9575673B2 (en) 2014-10-29 2017-02-21 Commvault Systems, Inc. Accessing a file system using tiered deduplication
US10776209B2 (en) 2014-11-10 2020-09-15 Commvault Systems, Inc. Cross-platform virtual machine backup and replication
US9648105B2 (en) 2014-11-14 2017-05-09 Commvault Systems, Inc. Unified snapshot storage management, using an enhanced storage manager and enhanced media agents
US9448731B2 (en) 2014-11-14 2016-09-20 Commvault Systems, Inc. Unified snapshot storage management
US20160142485A1 (en) 2014-11-19 2016-05-19 Commvault Systems, Inc. Migration to cloud storage from backup
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
US9904481B2 (en) 2015-01-23 2018-02-27 Commvault Systems, Inc. Scalable auxiliary copy processing in a storage management system using media agent resources
US9898213B2 (en) 2015-01-23 2018-02-20 Commvault Systems, Inc. Scalable auxiliary copy processing using media agent resources
US10313243B2 (en) 2015-02-24 2019-06-04 Commvault Systems, Inc. Intelligent local management of data stream throttling in secondary-copy operations
US10956299B2 (en) 2015-02-27 2021-03-23 Commvault Systems, Inc. Diagnosing errors in data storage and archiving in a cloud or networking environment
US9928144B2 (en) 2015-03-30 2018-03-27 Commvault Systems, Inc. Storage management of data using an open-archive architecture, including streamlined access to primary data originally stored on network-attached storage and archived to secondary storage
US10339106B2 (en) 2015-04-09 2019-07-02 Commvault Systems, Inc. Highly reusable deduplication database after disaster recovery
US10311150B2 (en) 2015-04-10 2019-06-04 Commvault Systems, Inc. Using a Unix-based file system to manage and serve clones to windows-based computing clients
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files
US20160350391A1 (en) 2015-05-26 2016-12-01 Commvault Systems, Inc. Replication using deduplicated secondary copy data
US9563514B2 (en) 2015-06-19 2017-02-07 Commvault Systems, Inc. Assignment of proxies for virtual-machine secondary copy operations including streaming backup jobs
US10084873B2 (en) 2015-06-19 2018-09-25 Commvault Systems, Inc. Assignment of data agent proxies for executing virtual-machine secondary copy operations including streaming backup jobs
US10275320B2 (en) 2015-06-26 2019-04-30 Commvault Systems, Inc. Incrementally accumulating in-process performance data and hierarchical reporting thereof for a data stream in a secondary copy operation
US9766825B2 (en) 2015-07-22 2017-09-19 Commvault Systems, Inc. Browse and restore for block-level backups
US10101913B2 (en) 2015-09-02 2018-10-16 Commvault Systems, Inc. Migrating data to disk without interrupting running backup operations
US10248494B2 (en) 2015-10-29 2019-04-02 Commvault Systems, Inc. Monitoring, diagnosing, and repairing a management database in a data storage management system
US10592357B2 (en) 2015-12-30 2020-03-17 Commvault Systems, Inc. Distributed file system in a distributed deduplication data storage system
US10296368B2 (en) 2016-03-09 2019-05-21 Commvault Systems, Inc. Hypervisor-independent block-level live browse for access to backed up virtual machine (VM) data and hypervisor-free file-level recovery (block-level pseudo-mount)
US10565067B2 (en) 2016-03-09 2020-02-18 Commvault Systems, Inc. Virtual server cloud file system for virtual machine backup from cloud operations
US10503753B2 (en) 2016-03-10 2019-12-10 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
US10747630B2 (en) 2016-09-30 2020-08-18 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node
US10540516B2 (en) 2016-10-13 2020-01-21 Commvault Systems, Inc. Data protection within an unsecured storage environment
US10152251B2 (en) 2016-10-25 2018-12-11 Commvault Systems, Inc. Targeted backup of virtual machine
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US10922189B2 (en) 2016-11-02 2021-02-16 Commvault Systems, Inc. Historical network data-based scanning thread generation
US10389810B2 (en) 2016-11-02 2019-08-20 Commvault Systems, Inc. Multi-threaded scanning of distributed file systems
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US10838821B2 (en) 2017-02-08 2020-11-17 Commvault Systems, Inc. Migrating content and metadata from a backup system
US10740193B2 (en) 2017-02-27 2020-08-11 Commvault Systems, Inc. Hypervisor-independent reference copies of virtual machine payload data based on block-level pseudo-mount
US10459666B2 (en) 2017-03-03 2019-10-29 Commvault Systems, Inc. Using storage managers in respective data storage management systems for license distribution, compliance, and updates
US11032350B2 (en) 2017-03-15 2021-06-08 Commvault Systems, Inc. Remote commands framework to control clients
US10949308B2 (en) 2017-03-15 2021-03-16 Commvault Systems, Inc. Application aware backup of virtual machines
US20180276085A1 (en) 2017-03-24 2018-09-27 Commvault Systems, Inc. Virtual machine recovery point generation
US10891069B2 (en) 2017-03-27 2021-01-12 Commvault Systems, Inc. Creating local copies of data stored in online data repositories
US11108858B2 (en) 2017-03-28 2021-08-31 Commvault Systems, Inc. Archiving mail servers via a simple mail transfer protocol (SMTP) server
US10776329B2 (en) 2017-03-28 2020-09-15 Commvault Systems, Inc. Migration of a database management system to cloud storage
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US11074140B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Live browsing of granular mailbox data
US11074138B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Multi-streaming backup operations for mailboxes
US10552294B2 (en) 2017-03-31 2020-02-04 Commvault Systems, Inc. Management of internet of things devices
US11294786B2 (en) 2017-03-31 2022-04-05 Commvault Systems, Inc. Management of internet of things devices
US11221939B2 (en) 2017-03-31 2022-01-11 Commvault Systems, Inc. Managing data from internet of things devices in a vehicle
US11010261B2 (en) 2017-03-31 2021-05-18 Commvault Systems, Inc. Dynamically allocating streams during restoration of data
US10853195B2 (en) 2017-03-31 2020-12-01 Commvault Systems, Inc. Granular restoration of virtual machine application data
US10984041B2 (en) 2017-05-11 2021-04-20 Commvault Systems, Inc. Natural language processing integrated with database and data storage management
US10664352B2 (en) 2017-06-14 2020-05-26 Commvault Systems, Inc. Live browsing of backed up data residing on cloned disks
US10742735B2 (en) 2017-12-12 2020-08-11 Commvault Systems, Inc. Enhanced network attached storage (NAS) services interfacing to cloud storage
US10831591B2 (en) 2018-01-11 2020-11-10 Commvault Systems, Inc. Remedial action based on maintaining process awareness in data storage management
US10795927B2 (en) 2018-02-05 2020-10-06 Commvault Systems, Inc. On-demand metadata extraction of clinical image data
US10732885B2 (en) 2018-02-14 2020-08-04 Commvault Systems, Inc. Block-level live browsing and private writable snapshots using an ISCSI server
US10642886B2 (en) 2018-02-14 2020-05-05 Commvault Systems, Inc. Targeted search of backup data using facial recognition
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US10789387B2 (en) 2018-03-13 2020-09-29 Commvault Systems, Inc. Graphical representation of an information management system
US10891198B2 (en) 2018-07-30 2021-01-12 Commvault Systems, Inc. Storing data to cloud libraries in cloud native formats
US11159469B2 (en) 2018-09-12 2021-10-26 Commvault Systems, Inc. Using machine learning to modify presentation of mailbox objects
US11010258B2 (en) 2018-11-27 2021-05-18 Commvault Systems, Inc. Generating backup copies through interoperability between components of a data storage management system and appliances for data storage and deduplication
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10860443B2 (en) 2018-12-10 2020-12-08 Commvault Systems, Inc. Evaluation and reporting of recovery readiness in a data storage management system
US11698727B2 (en) 2018-12-14 2023-07-11 Commvault Systems, Inc. Performing secondary copy operations based on deduplication performance
US20200192572A1 (en) 2018-12-14 2020-06-18 Commvault Systems, Inc. Disk usage growth prediction system
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
CN110083597A (zh) * 2019-03-16 2019-08-02 平安普惠企业管理有限公司 命令查询方法、装置、计算机设备和存储介质
US20200327017A1 (en) 2019-04-10 2020-10-15 Commvault Systems, Inc. Restore using deduplicated secondary copy data
US11366723B2 (en) 2019-04-30 2022-06-21 Commvault Systems, Inc. Data storage management system for holistic protection and migration of serverless applications across multi-cloud computing environments
US11463264B2 (en) 2019-05-08 2022-10-04 Commvault Systems, Inc. Use of data block signatures for monitoring in an information management system
US11269734B2 (en) 2019-06-17 2022-03-08 Commvault Systems, Inc. Data storage management system for multi-cloud protection, recovery, and migration of databases-as-a-service and/or serverless database management systems
US11308034B2 (en) 2019-06-27 2022-04-19 Commvault Systems, Inc. Continuously run log backup with minimal configuration and resource usage from the source machine
US11561866B2 (en) 2019-07-10 2023-01-24 Commvault Systems, Inc. Preparing containerized applications for backup using a backup services container and a backup services container-orchestration pod
US11042318B2 (en) 2019-07-29 2021-06-22 Commvault Systems, Inc. Block-level data replication
US20210173811A1 (en) 2019-12-04 2021-06-10 Commvault Systems, Inc. Optimizing the restoration of deduplicated data stored in multi-node replicated file systems
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11321188B2 (en) 2020-03-02 2022-05-03 Commvault Systems, Inc. Platform-agnostic containerized application data protection
US11422900B2 (en) 2020-03-02 2022-08-23 Commvault Systems, Inc. Platform-agnostic containerized application data protection
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11748143B2 (en) 2020-05-15 2023-09-05 Commvault Systems, Inc. Live mount of virtual machines in a public cloud computing environment
US11687424B2 (en) 2020-05-28 2023-06-27 Commvault Systems, Inc. Automated media agent state management
US11494417B2 (en) 2020-08-07 2022-11-08 Commvault Systems, Inc. Automated email classification in an information management system
US11314687B2 (en) 2020-09-24 2022-04-26 Commvault Systems, Inc. Container data mover for migrating data between distributed data storage systems integrated with application orchestrators
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
US11604706B2 (en) 2021-02-02 2023-03-14 Commvault Systems, Inc. Back up and restore related data on different cloud storage tiers
US11593223B1 (en) 2021-09-02 2023-02-28 Commvault Systems, Inc. Using resource pool administrative entities in a data storage management system to provide shared infrastructure to tenants
US11809285B2 (en) 2022-02-09 2023-11-07 Commvault Systems, Inc. Protecting a management database of a data storage management system to meet a recovery point objective (RPO)
CN117349107A (zh) * 2022-06-28 2024-01-05 中兴通讯股份有限公司 信息存储、读取方法、设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2187580A (en) * 1986-03-07 1987-09-09 Multi Net Pty Ltd A database system
JPS6410353A (en) * 1987-07-03 1989-01-13 Hitachi Ltd Computer file system
DE69033120T2 (de) * 1989-09-01 1999-10-21 Amdahl Corp Betriebssystem und Datenbank mit einer aus mehreren Tabellen geformten Zugriffsstruktur
JP3168756B2 (ja) * 1993-02-24 2001-05-21 ミノルタ株式会社 電子メールシステムのメール管理方法
JPH0779298A (ja) * 1993-09-08 1995-03-20 Hitachi Ltd ファクシミリサーバシステム
US5870549A (en) * 1995-04-28 1999-02-09 Bobo, Ii; Charles R. Systems and methods for storing, delivering, and managing messages
WO1998003928A1 (en) * 1996-07-23 1998-01-29 Lextron Systems, Inc. Integrated services on intranet and internet
US6029164A (en) * 1997-06-16 2000-02-22 Digital Equipment Corporation Method and apparatus for organizing and accessing electronic mail messages using labels and full text and label indexing
US6073137A (en) * 1997-10-31 2000-06-06 Microsoft Method for updating and displaying the hierarchy of a data store
US5999932A (en) * 1998-01-13 1999-12-07 Bright Light Technologies, Inc. System and method for filtering unsolicited electronic mail messages using data matching and heuristic processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103829B2 (en) * 2003-06-25 2012-01-24 Commvault Systems, Inc. Hierarchical systems and methods for performing storage operations in a computer network

Also Published As

Publication number Publication date
US6167402A (en) 2000-12-26
GB9909139D0 (en) 1999-06-16
GB2340269B (en) 2001-07-25
JP2000003321A (ja) 2000-01-07
GB2340269A (en) 2000-02-16

Similar Documents

Publication Publication Date Title
DE19919146A1 (de) Hochleistungs-Nachrichtenspeicher
DE69907631T2 (de) Netzzugang zu inhaltsadressierbaren daten
DE60211489T2 (de) System und Verfahren zur Bearbeitung von in mehreren Nachrichtenspeichern gespeicherten Nachrichten
DE60004537T2 (de) In einer relationalen datenbank integriertes contextbasiertes system zur veröffentlichung und abonnierung
EP1605649A1 (de) Verfahren und Vorrichtung zum Verwalten von elektronischen Nachrichten
DE69818549T2 (de) Volltextindizierte Nachrichtenspeicher
DE10064627B4 (de) Verfahren und System für die Verarbeitung von E-Mail-Nachrichten in einem Datenübertragungssystem
US6973616B1 (en) Associating annotations with a content source
DE10031716B4 (de) Abonnement und Benachrichtigung bei Datenbanktechnik
US20040255301A1 (en) Context association schema for computer system architecture
DE60306209T2 (de) Verfahren, mobile vorrichtungen und rechnerlesbare media zur datenverwaltung
US6370553B1 (en) Atomic and molecular documents
US20050028168A1 (en) Sharing computer objects with associations
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
CH704497B1 (de) Verfahren zum Benachrichtigen, Speichermedium mit Prozessoranweisungen für ein solches Verfahren.
AT4261U2 (de) Sich selbst zerstörendes dokument oder e-mailnachrichtensystem
DE202011110895U1 (de) Echtzeitsynchronisierte Bearbeitung von Dokumenten durch mehrere Benutzer für das Bloggen
DE10255128A1 (de) Computer-implementierte PDF-Dokumentenverwaltung
DE60004211T2 (de) Entfernung von duplizierten objekten aus einem objektspeicher
US7421476B2 (en) Method for converting internet messages for publishing
US20110219083A1 (en) Email auto-filing and management
DE112019005881T5 (de) Kryptografische überprüfung von datenbanktransaktionen
DE112021000945T5 (de) Auf einem Dateisystem-Verzeichnisbaum oder Objekt-Speicherbucket beruhende Übernahme von benutzerspezifischen Metadatentags
EP3563261B1 (de) Bitsequenzbasiertes datenklassifikationssystem
DE10151648A1 (de) Verfahren und System zum Erfassen und Speichern von während einer computerbasierten Sitzung gemachten Notizen

Legal Events

Date Code Title Description
8130 Withdrawal