Quelle est la longueur optimale pour une adresse e-mail dans une firebase database?

Voici une partie extraite de ma requête, reflétant le type de données de la colonne EMAIL_ADDRESS et la propriété:

 EMAIL_ADDRESS CHARACTER VARYING(20) NOT NULL, 

Cependant, John Saunders utilise VARYING(256) .

Cela me suggère que je n’ai pas nécessairement compris le VARYING correctement.

Je comprends que la longueur d’une adresse e-mail est de 20 caractères dans mon cas, alors que 256 pour Jodn.

Contexte dans le code de John

 CREATE TABLE so."User" ( USER_ID SERIAL NOT NULL, USER_NAME CHARACTER VARYING(50) NOT NULL, EMAIL_ADDRESS CHARACTER VARYING(256) NOT NULL, // Here HASHED_PASSWORD so.HashedPassword NOT NULL, OPEN_ID CHARACTER VARYING(512), A_MODERATOR BOOLEAN, LOGGED_IN BOOLEAN, HAS_BEEN_SENT_A_MODERATOR_MESSAGE BOOLEAN, CONSTRAINT User_PK PRIMARY KEY(USER_ID) ); 

Je n’ai jamais vu d’adresses e-mail de plus de 20 caractères, utilisées par des gens ordinaires.

Quelle est la longueur optimale pour une adresse e-mail dans une firebase database?

La longueur maximale d’une adresse électronique est de 254 caractères.

Chaque adresse e-mail est composée de deux parties. La partie locale qui précède le signe ‘@’ et la partie de domaine qui la suit. Dans “user@example.com”, la partie locale est “user” et la partie de domaine est “example.com”.

La partie locale ne doit pas dépasser 64 caractères et la partie domaine ne doit pas dépasser 255 caractères.

La longueur totale des parties du domaine local + @ + d’une adresse électronique ne doit pas dépasser 254 caractères. Comme décrit dans l’ errata ID RFC3696 1690 .

J’ai obtenu la partie originale de cette information à partir d’ici

de Ask Metafilter :

Mes données proviennent d’une firebase database de 323 adresses. La dissortingbution comporte des valeurs aberrantes supérieures (asymésortingques). Il est normalement dissortingbué sans les valeurs aberrantes (je l’ai testé.)

Min: 12 1er quartile: 19 Moyenne (avec valeurs aberrantes): 23,04 Moyenne sans valeurs aberrantes: 22,79 3ème quartile: 26 Max (avec observations aberrantes): 47 Max (sans observations aberrantes): 35

Médiane: 23 Mode: 24 Std. Dev (avec / valeurs aberrantes): 5.20 Std. Dev (sans points aberrants): 4,70

Plages basées sur des données incluant les valeurs aberrantes 68,2% des données 17,8 – 28,2 95,4% des données 12,6 – 33,4 99,7% des données 7,4 – 38,6

Les fourchettes basées sur les données aberrantes excluaient 68,2% des données 18,1 – 27,5 95,4% des données 13,4 – 32,2 99,7% des données 8,7 – 36,9

Si vous vous inscrivez à http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/ alors votre adresse e-mail serait sûrement une aberrante 🙂

Voici quelle est la longueur maximale de sécurité d’une adresse e-mail à autoriser dans un formulaire de site Web? sur Raycon avec une moyenne légèrement différente (N = 50 496, moyenne = 23):

Distribution de longueur d'adresse email

Mon adresse e-mail professionnelle est plus de 20 caractères!

Lisez la spécification RFC appropriée:

“La partie locale d’une adresse électronique peut comporter jusqu’à 64 caractères et le nom de domaine peut comporter au maximum 255 caractères”

Utilisez simplement varchar(50) . Les emails plus longs sont une merde, à chaque fois.

Regardez combien de temps 50 caractères est:

peoplewithanemail @ ddressthislongjustuseashorterone

Si vous autorisez les emails de 255 caractères:

  • Leur affichage peut gâcher votre interface utilisateur (au mieux ils seront coupés, au pire ils poussent vos conteneurs et marges autour) et
  • Les utilisateurs malveillants peuvent faire des choses avec lesquelles vous ne pouvez pas anticiper (comme les cas où les pirates informatiques utilisaient une API en ligne gratuite pour stocker un tas de données)

(Les statistiques montrent que personne n’entre plus d’environ 50 caractères pour une adresse e-mail légitime, voir par exemple: réponse de pageman https://stackoverflow.com/a/1199245/87861 )

Comme d’autres l’ont déjà dit, bien plus que 20. 256 + 64 me semble bien, et est conforme aux normes RFC.

La seule raison de ne pas avoir une si grande valeur pour votre firebase database est si vous vous souciez de la performance ou de l’espace, et si vous faites cela, alors je suis sûr que c’est une optimisation prématurée .

Aller en grand.

Les types de caractères variables dans les bases de données n’occupent pas d’espace inutile. Il n’y a donc aucune raison de limiter autant que possible ces champs. Selon le nom d’une personne, le schéma de nommage utilisé par son organisation et son nom de domaine, une adresse peut facilement dépasser 20 caractères.

Il n’y a pas de limite quant à la longueur de la partie locale et du nom de domaine dans la RFC-2822 . RFC-2181 limite le nom de domaine à 255 octets / caractères.

Encore une fois, comme varchar n’utilise que l’espace réellement utilisé par la chaîne que vous stockez, il n’y a aucune raison d’avoir une petite limite pour la longueur de l’adresse électronique. Allez juste avec 512 et arrêtez de vous inquiéter. Tout le rest est une optimisation prématurée

Initialement, le maximum est de 320 caractères (64 + 1 + 255, comme indiqué dans les autres réponses), mais comme indiqué dans la RFC 3696 Errata 1003 :

Cependant, il existe une ressortingction dans la RFC 2821 sur la longueur d’une adresse dans les commandes MAIL et RCPT de 256 caractères. Comme les adresses qui ne rentrent pas dans ces champs ne sont normalement pas utiles, la limite supérieure des longueurs d’adresse doit normalement être considérée comme 256.

Et de la RFC 5321 section 4.5.3.1.3 :

4.5.3.1.3. Chemin

La longueur totale maximale d’un chemin inverse ou d’un chemin direct est de 256 octets (y compris les séparateurs de ponctuation et d’éléments)

Ceci inclut les parenthèses d’ouverture et de fermeture ainsi il nous a laissé seulement 254 octets d’adresse email.

Mais gardez à l’esprit que le nombre d’octets peut ne pas être égal au nombre de caractères (un caractère peut avoir 2 octets ou plus). La section RFC 4.5.3.1 indique également qu’il peut y avoir des champs de plus que le maximum, ce qui est possible mais non garanti pour que les serveurs les détectent correctement.

Et puis vous pouvez / devez utiliser un VARCHAR(254) pour stocker une adresse email.

Note: Au moins dans MySQL, une colonne déclarée en tant que VARCHAR avec moins de 255 octets sera stockée sous la forme d’ 1 byte + length (le 1 doit stocker la longueur), donc aucun espace n’est gagné en cas d’utilisation d’une limite inférieure.

Un champ CHAR (20) prendra toujours 20 caractères, que vous l’utilisiez ou non. (Souvent rempli d’espaces à la fin.) Un champ VARCHAR (20) prendra jusqu’à 20 caractères, mais peut prendre moins de temps. L’un des avantages de la largeur constante de CHAR () est de sauter rapidement à une ligne dans une table, car vous pouvez simplement calculer l’index sur lequel il doit être activé. L’inconvénient est de gaspiller de l’espace.

L’avantage de CHAR (x) de taille constante est perdu si vous avez des colonnes VARCHAR (x) dans votre table. Il me semble rappeler que MySQL a converti en silence tous les champs CHAR () en VARCHAR () en arrière-plan si certaines colonnes étaient VARCHAR () s.