Le stockage des messages dans une base de données
Ce genre de schéma de base de données que vous utilisez pour stocker les messages électroniques, avec autant d'informations d'en-tête en tant que pratique ou possible, dans une base de données?
Supposer qu'ils ont été introduits dans un script à partir de la MTA et analysé dans les en-têtes/du corps/pièces jointes.
Voulez-vous stocker le corps du message entier dans la table de base de données, ou de diviser un MIME-pièces à part? Qu'en pièces jointes?
Je suis particulièrement penser à un système basé sur le web qui reçoit les messages et permet aux gens de processus -, pas simplement un système de webmail, mais le support de flux de travail pour les e-mails entrants
OriginalL'auteur Alister Bulman | 2008-09-15
Vous devez vous connecter pour publier un commentaire.
Vous voudrez peut-être vérifier la l'architecture et la DB schéma de "Archiveopteryx".
Savez-vous si Archiveopteryx a été open-source de tous les temps?
Oui, Archiveopteryx a été ouvert à la source de tous les temps.
OriginalL'auteur Milen A. Radev
Dépend de ce que vous allez faire avec elle. Si vous allez avoir besoin de faire de recherche fréquente à l'encontre de certains bits de cela, vous aurez envie de diviser d'une manière qui fait sens pour votre utilisation. Si c'est juste pour quelque chose comme le stockage de l'e-mail pour la loi Sarbanes-Oxley, vous seriez probablement d'accord le stockage de l'ensemble de la chose - en-têtes, des pièces, etc. - comme un grand champ de texte.
OriginalL'auteur ceejayoz
Suggestion: créer une table pour le stockage des e-mail avec une colonne pour chaque partie du message: expéditeur, en-tête, le sujet, le corps. Il va être beaucoup plus simple, plus tard, si vous voulez interroger, par exemple, par le champ objet. Dans le même tableau, vous pouvez définir un champ pour garder le chemin de l'attachement et de stocker le fichier joint sur le système de fichiers, plutôt que de le stocker dans les champs blob.
OriginalL'auteur Ivan Bosnic
Vous souhaiterez peut-être utiliser un schéma où le corps du message et la pièce jointe à des enregistrements peut être partagé entre plusieurs destinataires du message. Il n'est pas rare de voir des serveurs de messagerie où 50% de la capacité de stockage disque est utilisé par les e-mails en double.
Un simple hash du corps/de l'attachement serait suffisant pour voir si le dossier était déjà dans la base de données. Cependant, vous devez garder à l'écart des en-têtes.
OriginalL'auteur Chase Seibert
Une étape importante dans le schéma de base de données de conception est de comprendre quels sont les types d'entité que vous souhaitez modèle. Pour cette application, les entités pourraient être:
Une fois que vous connaissez les entités, vous pouvez identifier les relations entre les entités, qui peuvent être représentés par des tableaux:
In-Reply-To
etReferences
en-têtes).From
,To
,Cc
etc les en-têtes).En-têtes de Message ne peuvent pas être représentées par des colonnes de la table parce que le jeu des noms d'en-tête n'est pas fixe (pensez à
X-
en-têtes) et il peut y en avoir plusieurs en-têtes avec le même nom (pensez àReceived
). Si les en-têtes doivent être mis à disposition sur le plan relationnel, la relation est quelque chose comme (message, nom d'en-tête, en-tête de l'indice, la valeur d'en-tête).Vous pouvez avoir des colonnes pour la commune de les en-têtes, et d'autres comme vous le suggérez, de manière à obtenir le meilleur des deux mondes. 🙂
OriginalL'auteur Gareth Rees
Tout dépend de ce que vous voulez faire avec les données, mais en général, je voudrais stocker toutes les données et assurez-vous également que la sémantique interprété par le MUA sont conservées dans la base de données, donc par exemple:
- Tous les en-têtes qui sont analysées devraient avoir leur propre colonne
- Une colonne doit contenir l'ensemble des en-têtes
- Les pièces jointes (y compris le corps, en plusieurs parties) doit être dans un beaucoup une table avec l'e-mail de la table.
OriginalL'auteur Sklivvz
Vous voudrez probablement au moins stocker les pièces jointes séparément afin d'optimiser le stockage. Il est étonnant de voir la taille et la quantité de pièces jointes (vidéos, etc.) que la plupart des utilisateurs n'hésite pas à joindre aux e-mails.
Dans le cas des e-mails sortants vous pouvez avoir plusieurs e-mails à envoyer le même attachement. C'est beaucoup plus efficace pour stocker une seule copie de la pièce jointe qui est référencé par tous les e-mails qui le partagent.
Une autre raison pour stocker les pièces jointes séparément, c'est qu'il vous donne des options d'archivage plus tard. Devrait l'espace de stockage devient un problème, vous pouvez toujours revenir en arrière et supprimer des pièces jointes volumineuses, antérieurs à une date donnée afin de compacter la base de données.
OriginalL'auteur Kluge
Si il est déjà scindée, et vous pouvez être sûr que la routine de diviser les données de la sonore, alors je voudrais diviser le tableau en tant que granulaire que possible. Vous pouvez toujours analyser l'arrière de votre niveau intermédiaire. Si l'espace n'est pas un problème, vous pouvez toujours stocker deux fois. L'un, réparties dans les domaines concernés, et un autre champ qui a la chose comme un blob, si de le remettre ensemble, c'est dur.
OriginalL'auteur Charles Graham
Il n'est pas trivial pour analyser un e-mail, donc pensez à stocker le courrier électronique comme une goutte avant de l'analyser dans toutes les pièces dont vous avez besoin par la suite.
/Allan
OriginalL'auteur Allan Wind