2017-11-16 6 views
0

Buffer을 Node.js와 함께 MySQL에 저장하는 방법은 무엇입니까?
내가 아는 한 가지 방법은 Buffer16 진수 문자열으로 변환하고 MySQL에 CHAR 형식으로 저장하는 것입니다. 그러나 으로 변환하는 것이 가장 좋은 방법입니까?을 MySQL에 저장하는 것입니까?MySQL에 Node.js 버퍼를 저장하는 모범 사례

Buffer (바이트 배열)을 MySQL에 Node.js와 함께 직접 저장할 수있는 방법이 있습니까 (예 : BLOB)?

실제로 사용하는 방법은 어떤 것이 든 상관 없지만별로 다르지 않습니다.

답변

1

모범 사례를 알지 못합니다. 하지만 나에게 맞는 것을 나눌 수있다.

객체를 사용하는 경우 longtext 열에서 base64 (문자 길이를 기본 16로 줄이거 나)로 저장하고 gzip으로 저장하는 것이 좋습니다.

문자열로 저장하는 것이 더 도움이된다고 생각합니다. 버퍼로 저장하면 데이터베이스에서 복사하는 방법이 없다고 생각하기 때문에 (때로는 문제 해결에 도움이되는 경우도 있음), 그들을 당신의 물건으로 다시 번역하십시오 - 적어도, 나는 그것을 할 길을 찾지 못했습니다.

예를 들어 (그렇지 않으면 new Buffer()를 사용 Buffer.from() 구문 Nodejs 6+ 가정) :

const obj = {}; 
const zip = zlib.gzipSync(JSON.stringify(obj)).toString('base64'); 

그리고, 파멸 : longtext 이후

const originalObj = JSON.parse(zlib.unzipSync(Buffer.from(zip, 'base64'))); 

가 ~ 4GiB 같다, 혹시 때리지한다 당신이 거대한 물건을 가지고 있지 않다면, 한계. 하지만 다른 곳에서는 효율성 문제가 있다고 생각합니다.

참고 : 분명히 한 줄에 여러 팩 (예 : 우편 번호, 구문 분석, 버퍼 등)이 있습니다.

한 줄로 로트가 실패 할 수 있습니다.

그래서 적절하게 처리해야합니다.