Sqlite

具有特定大小的雜湊值的 Sqlite Affinity

  • June 12, 2020

我必須在 sqlite-database 中儲存許多 SHA256 值,現在我想知道哪個 sqlite-affinity 是正確的。SHA256 值的輸出長度為 256bit=32byte。我正在尋找可以處理此問題但也不會“浪費”磁碟空間的 sqlite-affinity,因為在我的情況下,我有很多數據集。我在這個網站上閱讀了很多關於 sqlite 中數據類型的有用資訊,但我仍然不知道哪種類型對於 SHA256 值是正確的。我更喜歡像“bytearray(32)”這樣的東西,所以我認為varchar(32)可能是那個。但後來我記得我可能無法將所有這些字節轉換為可列印字元以將它們儲存為字元數組。所以看來我必須使用Blob.

不幸的是,並沒有真正找到有關限制 sqlite 中的Blob-size 以及 sqlite 如何在內部處理 blob 的任何有用資訊。我想使用我的雜湊值始終具有相同長度的資訊來優化數據庫的磁碟使用:我希望 sqlite 知道對於這個Blob-column 它總是只需要保留 32 個字節,永遠不會更多。所以我想使用類似Blob(32)列類型的東西。這可能嗎?如果是的話:這有意義還是有任何謬誤?

您可以BLOB(32)用作數據類型。

SQLite 不限製文本或 blob 值的大小,並且永遠不會分配比實際需要更多的儲存空間。SQLite 幾乎忽略了這個數字,它的主要目的是為您提供文件。

如果要強制執行長度,請添加約束:CHECK (length(my_column) = 32).

引用自:https://dba.stackexchange.com/questions/268899