2013-08-13 4 views
0

여러분 모두에게 좋은 주/야. 우리 대학 프로젝트에서hibernate 및 postgresql을 사용하는 데이터베이스 공간 할당량, 사용자 당 데이터베이스 사용량 제한

우리는 17 표 (obejct)을 갖는 (PostgreSQL을 사용) 최대 절전 모드에 의해 생성 된 데이터베이스가 있습니다. 우리는 4 객체 즉 student_comments, student_attachments, student_drafts, student_fotos

학생 당 1000 학생에 의해 게시 코멘트
  1. 제한 수를 제한을 게시하고 자신의 40메가바이트를 초과하지 않아야 데이터베이스의 크기를 결합해야합니다. 학생 당 120메가바이트의 최대

  2. 제한 student_attachments 즉 학생들은 첨부 파일의 수를 게시 할 수 있지만, 그들의 결합 크기는 공간이 120MB의를 초과하지 않아야합니다. student_attachments로

  3. 같은 제한은 반대하지만, 그들의 결합 크기는 학생 당 50 MB가 표시되어야합니다 80메가바이트

  4. 동일하지만 한계로 제한해야합니다.

이 제한 사항 중 하나에 해당하는 경우 학생 계정에 한도에 도달했으며 더 이상 첨부 파일이나 사진을 업로드 할 수 없다는 사실을 알려야합니다.

student_comments는

@Lob 
public String comment; 

로 저장하고, 불행하게도

private byte[] data; 

내 교수는 그가 우리 그래서 미래에 한계를 변경할 수 있습니다 말했다으로 첨부 파일, 사진을 보시려면 및 초안이 저장됩니다 나중에 쉽게 변경 될 수있는 방식으로 제한을 코딩해야합니다.

이 질문은 최대 절전과 PostgreSQL을 사용하여 우리의 문제에 대한 최선의 해결책 일 것입니다 무슨 즉, 가장 좋은 방법의 사용 주소는 무엇입니까? 이 작업은 postgresql이 아닌 파일 시스템 레벨에서만 수행 할 수 있다고 생각되지만 포스트그레스를 사용하여 목표를 달성 할 수 있을지에 대해서는 어떤 키워드를 검색해야하는지 알려주십시오.

감사합니다,

K이 파일 시스템을보고 응답 할 수있는 방법은 없습니다

답변

1

는 SQL 쿼리를 작성해야합니다. bytea 필드의 바이트

크기는 octet_length 기능을 얻을 수있다.

하이버 네이트가 이진 내용에 큰 객체 (oid 유형을 통한 참조)를 사용하는 경우 Obtaining the size of lobject in PostgreSQL에 제안 된대로 자체 정의 된 lo_size(oid) 함수를 사용해야합니다.

올바른 기능이 있으면 크기를 집계하여 다양한 콘텐츠 형식에 대한 학생당 사용법을 계산할 수 있습니다.

삽입시 할당량을 적용해야하는 경우 초과 할당량 한도에 도달하면 작업을 취소 할 수 있도록 이벤트 전에 트리거 된 함수에서 계산해야합니다.

+0

안녕 다니엘, 의견을 보내 주셔서 감사합니다. 나는 약간의 해답을 얻은 것이 정말 기쁩니다. 내가 파일 시스템 솔루션을 말했을 때 나는 기본적으로 두 가지 아이디어를 의미했다. 1) 데이터베이스 외부의 모든 첨부 파일을 파일 시스템에 별도로 저장하십시오. 2) 사용자 당 데이터베이스를 생성하고 해당 사용자의 파일 시스템을 통해 할당량을 적용하십시오. 답변의 마지막 부분, 즉 할당량을 참조하십시오. 이 경우 할당량이 필요한 이유는 무엇입니까? 즉, "삽입시 할당량"에 설명 된대로 왜 유용할까요? – Tito

+0

'student_attachments'를 포함하여 17 개의 테이블을 언급 했으므로 데이터베이스 스키마가 이미 설정되었다는 질문에서 모았습니다. 그렇다면 파일 시스템이 아닌 db에 첨부 파일을 저장하기로 결정했습니다. –

+0

@Tito : 할당량이 필요한 이유는 할당량이 크기 제한과 동의어이므로 전체 질문에서의 목표입니다. –