存储JWT令牌的最佳MYSQL或Maria DB数据类型是什么?

Kev*_*vin 5 mysql database sqldatatypes jwt laravel-5.2

我正在使用以下技术堆栈

  • Laravel 5.2
  • MySQL的

为了安全起见,我正在使用JWT(JSON Web令牌)

我能够使用JWT保护我的应用程序.

我想将JWT令牌存储在mysql数据库中.

问题以下哪种数据类型最适合在MySQL DB中存储JWT令牌?

  1. VARCHAR
  2. CLOB
  3. 文本
  4. 长文

Mic*_*vis 7

与其他任何事情一样,答案是"它取决于".

首先,您需要确定存储完全编码的JWT是否是正确的解决方案.我倾向于不存储JWT字符串,而是存储用于构建JWT的声明,这将在数据库中节省大量空间.

如果您认为存储JWT是正确的方法,那么我们可以查看您的选项.

TEXT和LONGTEXT只是CLOB的类型,所以我们可以忽略它.

TEXT和VARCHAR都有64kb的限制,所以高于此值的任何东西都需要LONGTEXT(或MEDIUMTEXT,你没有提到但是可以选择).

TEXT和VARCHAR之间的区别在于VARCHAR存储在行中,但TEXT基本上是一个指针.如果您要经常阅读JWT,VARCHAR会更快,但是更大的字符串将导致每个单独的行更大,这将是性能损失.

与JWT一样大,我会说TEXT是将JWT存储在数据库中的不错选择.如果你绝对相信JWT会保持很小,那么VARCHAR可能会产生更好的读取性能,但你最好用真实世界的数据进行测试.

如果你需要一个大于TEXT能够提供的字段,那么我会重申我的建议,以避免存储编码的JWT,但LONGTEXT是一个选项.