mysql 中 protobuf 对象的数据类型

Ada*_*tan 2 mysql serialization blob

我想在 MySQL 数据库中存储一些protobuf对象。这些对象是在 Java 应用程序中创建的。该对象带有文本类型标识符和时间戳。

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | mediumint(9) | NO   | PRI | NULL    | auto_increment |
| type       | varchar(30)  | NO   | MUL | NULL    |                |
| timestamp  | date         | NO   | MUL | NULL    |                |
| pixel_data | ?            | NO   | MUL | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

的数据类型应该是什么pixel_data

我最好的猜测是BLOBTEXT

  • TEXT和 和有BLOB什么区别?哪个更适合 Javaprotobuf对象序列化?由于 Java 使用字节流进行序列化,因此我认为 BLOB 更好,但我没有找到任何参考资料。
  • 假设我只能估计对象大小,我应该选择哪个量词 ( TINY,MEDIUMLONG)?较大尺寸会浪费多少空间?

Mar*_*ell 6

BLOB是正确的,因为这是一个二进制字符串。TEXT是字符串,但protobuf不是字符数据;所以使用某种BLOB

至于TINY/ MEDIUM/ LONG; 你的数据有多大?

  • TINYBLOB : 最大 255 字节
  • BLOB : 最大 65,535 字节
  • MEDIUMBLOB : 最大 16,777,215 字节
  • LONGBLOB : 最大 4,294,967,295 字节

在少数情况下TINYBLOB可能就足够了,特别是如果没有任何字符串(特别是名称/地址会占用空间)。在大多数情况下,MEDIUMBLOB可能是一个公平的猜测。