[mysql] BLOB 에 데이터 효율적으로 쑤셔넣기

일단 BLOB 사이즈 부터

TINYBLOB = 2^8(255B)

BLOB = 2^16(64K)

MEDIUMBLOB = 2^24(16M)

LONGBLOB = 2^32 (4G)

 

바이너리를 디비에 저장해야할 일이 생겼는데

사용하는 언어의 라이브러리가 별도로 BLOB형식을 지원해주지 않는경우에는

대부분 unpack 을 사용하여 hex 스트링으로 저장하여 저장공간을 두배나 차지하게되고

또한 사용시에도 pack 으로 다시 바이너리로 변환하여야하여 번거로운 방법을 사용하더라…

 

그럴필요없이 난

 

sql = "INSERT INTO apks (siteno, date, filename,filesize, orignname, package_name, package_version, md5, sha2 ,rsa) VALUES ('#{@siteno}', now(),'#{File.basename(filename)}', '#{filesize}' ,'#{File.basename(file)}', '#{packagename}', '#{packageversion}', '#{md5}', '#{sha2}' ,0x%s)" % rsa.unpack('H*')

 

0x%s

이런식으로 저장하고 DB에 이쁘게 들어간것을 확인하였다.

Leave a Reply

Your email address will not be published. Required fields are marked *