[linux-l] Re: Wohin mit den alten Mails? datenbank? dbm?

Oliver Bandel oliver at first.in-berlin.de
Di Mär 20 16:00:41 CET 2007


Hi,

On Tue, Mar 20, 2007 at 02:29:19PM +0000, Rocco Rutte wrote:
> Hi,
> 
> * Oliver Bandel [07-03-20 12:47:23 +0100] wrote:
> >On Tue, Mar 20, 2007 at 09:44:22AM +0000, Rocco Rutte wrote:
> 
> >>Die Erfahrung bei mutt zeigt, dass eine "Datenbank" (also nur eine 
> >>Binärdatei, das hat mit Datenbanken im eigentlichen Sinne nichts zu tun) 
> >>um Größenordnungen schneller ist als eine für alle. Die "Datenbank" hat 
> >>dann nämlich um Größenordnungen weniger Keys und die Suche geht viel 
> >>schneller.
> >[...]
> 
> >Kannst Du das mal etwas näher erläutern?
> 
> Sicher.
> 

fein :)

> >Was ist schneller als was?
> 
> Eine "Datenbank" pro Folder ist schneller als eine Datenbank für alle 
> Folder.
> 

Ach so.

> >Und was für eine Art Binärdatei wird da gebracuth?
> 
> Das hängt davon ab. Eigentlich werden die gängigen DB-Manager (gdbm, 
> qdbm, Berkeley DB) unterstützt und genutzt, um Key-Value-Paare zu 
> speichern. Die Binärdatei ist die "Datenbank".
> 

OK, also doch der gleiche Ansatz mit berkeley-db. :)


> (Alles in Anführungszeichen, weil es mit Datenbanken wie postgresql 
> nichts zu tun hat, es gibt Datenbank-technisch also kein Locking, keine 
> Transaktionen, etc; zumindest nutzt mutt sie nicht).

OK.

> 
> >Was steht da drin? Wie ist der Aufbau?
> 
> Da wird als Key nur "Folder/Message-ID" benutzt, wobei Message-ID nicht 
> die aus dem Header ist sondern je nach Folder was anderes ist. Nummern 
> kriegt man via IMAP, einen Hexstring von POP, der Teil des Dateinamens 
> in Maildir ohne Flags oder die Sequenznummer bei MH. Also irgendwas, was 
> die Nachricht pro Odner eindeutig identifiziert. Ordner davor und es ist 
> eineindeutig.

Das heisst, das ist die Tabelle, die für z.B. Thread-Darstellung genutzt wird.

Man könnte ja auch noch eine für Keywords/Tags nehmen und dann auf die
jeweilige Message-ID verweisen.
Ich hatte mal überlegt, ob eine DB alle Keyowrds bekommen soll, oder
ob amn aus irgend einem grunde pro Keyword eine DB nimmt.
Ist aber damals wegen Ablenkungen der dritten Art nicht mehr weiter
verfolgt worden.

Wie gesagt, vielleicht baue ich das dann auch mal irgendwann.
Aber jedenfalls schon mal interessant, daß mutt da auch Berkeley-DB nimmt.
Naja, warum auch nicht, ist es ja eh installiert. Wozu also was
eigenes erfinden, wenn man da so eine Lib schon auf dem Rechner hat.



> 
> Als Value werden im Prinzip die mutt-Strukturen via memcpy() und einem 
> put() (ganz grob) benutzt. D.h. beim Laden hat man schon alles in den 
> Strukturen und muss nicht noch groß zusammenbauen sondern nur ein paar 
> Pointer zuweisen.

Aha.
Krass. Und in den Strukturen steht dann eine File-Position?
An letztere hätte ich nämlich als erstes gedacht.
Die müssen doch aber auch erst mal eingelesen werden.

jedenfalls danke für die Infos.

Gruß,
   Oliver



Mehr Informationen über die Mailingliste linux-l