2010-12-30 3 views
5

어딘가에 직렬화 된 객체를 저장하고보고 싶다면이 작업을 수행하는 몇 가지 방법이 있다는 것을 깨달으십시오.postgresql 직렬화 된 객체를 저장하기 위해 bytea BLOB 또는 파일 위치를 사용 하시겠습니까?

파일 시스템의 어딘가에 파일을 저장하고 파일 위치를 테이블의 항목으로 저장하는 방법을 모색 중입니다.

파일이 약 100-500Kb라고 가정 할 때이 방법이 적합합니까? 또는 bytea 또는 blob을 사용하여 더 나은 해결책을 찾으십니까?

답변

10

소형 개체 (500Kb)는 바이트로 잘 작동하므로 자격이 부여됩니다. 크기에 대한 주요 제한은 서버에서 메모리에있는 전체 필드를 먼저 구체화하고 클라이언트에서 구체화해야 할 필요가 있다는 것입니다 (방법은 충분하지만 제한적입니다). 반 메가 바이트의 경우에는 문제가되지 않지만 큰 개체를 저장하기 시작하면 약간의 고려가 필요할 수 있습니다.

파일 시스템에 저장하고 위치를 저장하거나 SERIAL 시퀀스의 대리 주키로 이름을 저장하는 것이 큰 파일을 처리하는 좋은 방법이며 여기에서도 물론 적용 할 수 있습니다. 단점은 트랜잭션 무결성이 느슨하다는 것입니다 (파일 시스템과 데이터베이스가 모두 업데이트되었는지 확신 할 수 없으므로이를 비교하기 위해 정기적으로 실행하는 일종의 검증 도구를 구현해야합니다). 아마도 더 중요한 것은 ' 일관된 백업을 얻으십시오 (파일이 백업되었지만 db 레코드가 아닌 경우 또는 그 반대). 물론이를 처리 할 수있는 방법이 있지만 물론 데이터를 저장하는 것보다 훨씬 더 복잡해집니다 탁자.

관련 문제