Như với bất cứ điều gì khác, câu trả lời là "nó phụ thuộc".
Trước tiên, bạn cần phải xác định xem lưu trữ JWT được mã hóa đầy đủ có phải là giải pháp đúng hay không. Tôi có xu hướng không lưu trữ chuỗi JWT và thay vào đó lưu trữ các xác nhận quyền sở hữu được sử dụng để xây dựng JWT, điều này sẽ tiết kiệm được một tấn phòng trong cơ sở dữ liệu.
Nếu bạn quyết định lưu trữ JWT là phương pháp chính xác, thì chúng tôi có thể xem xét các tùy chọn của bạn.
TEXT và LONGTEXT chỉ là các loại CLOB, vì vậy chúng tôi có thể bỏ qua điều đó.
TEXT và VARCHAR đều có giới hạn 64kb, vì vậy mọi thứ ở trên sẽ yêu cầu LONGTEXT (hoặc MEDIUMTEXT, mà bạn không đề cập đến nhưng là tùy chọn).
Sự khác biệt giữa TEXT và VARCHAR là VARCHAR được lưu trữ trong hàng nhưng TEXT về cơ bản là một con trỏ. VARCHAR sẽ nhanh hơn nếu bạn thường xuyên đọc JWT, nhưng các chuỗi lớn hơn sẽ khiến mỗi hàng riêng lẻ lớn hơn, sẽ là một hit hiệu suất.
Với lớn như JWTs có xu hướng, tôi sẽ nói rằng TEXT là một lựa chọn khá tốt để lưu trữ JWT trong cơ sở dữ liệu. Nếu bạn hoàn toàn tự tin rằng các JWT sẽ ở rất nhỏ, thì VARCHAR có thể tạo ra hiệu năng đọc tốt hơn, nhưng bạn sẽ tốt nhất nên kiểm tra với dữ liệu thực tế để chắc chắn.
Nếu bạn cần một trường lớn hơn TEXT có thể cung cấp, thì tôi sẽ nhắc lại đề xuất của tôi để tránh lưu trữ JWT được mã hóa, nhưng LONGTEXT là một tùy chọn ở đó.
Nguồn
2016-04-15 19:32:30
Không phải là điểm của JWT mà không cần lưu trữ trong cơ sở dữ liệu? – ceejayoz
@ceejayoz Thẻ làm mới cũng có thể là JWTs và tôi tin rằng mã sẽ cần lưu trữ chúng trong kho dữ liệu. – georaldc