2012-03-20 4 views
4

java.util.BitSet 배열을 가지고 있는데 내 데이터베이스에서 유지하려고하지만 최선의 방법은 무엇인지 모릅니다. 정확하게 말해서 내가 저장하고 싶은 모든 항목에 대해 x*y true or false 값을 얻었습니다. 나는 tought java.util.BitSet 시도하는 좋은 전화,하지만 난 정말 어떻게 데이터베이스에 저장할 수 있을지 모르겠다.데이터베이스에 BitSet 배열을 저장하는 가장 좋은 방법은 무엇입니까?

최대 절전 모드 (주석 첨부)가있는 MySQL 데이터베이스를 사용하고 있습니다.

Bitset[] map = new BitSet[x]; 
for (int i = 0; i < x; i++) { 
    map[i] = new BitSet(y); 
} 

업데이트 :이이 데이터 집합에있는 아무 관계가 없으며, 문제는 내가이 "2 개 차원 배열"의 톤을 가지고있다

내가 내지도를 초기화하는 방법입니다 한 조각은 약 360 * 180 크기입니다.

또한 이미지를 만들려고했는데 단색 pbm 파일을 만들기 쉽습니다. 그러나 여전히 데이터는 데이터베이스에 저장되지 않으며 저장된 "이미지"파일을 처리 할 때마다 잔인하다고 생각하고 다소 느립니다.

+0

어떤 검색어를 사용합니까? 당신은 어떻게 i 비트를 얻는 지 신경 써야합니까? 그럼 내 대답이 작동합니다. 모든 것을 한꺼번에 원한다면, DB에 전체 BLOB를 넣을 필요가 있습니다. – Adrian

+0

모든 것을 함께 모으고 싶은데, 때로는 몇 비트 만 말하면됩니다. [x, y ] 위치로 이동합니다. 그래서 당신의 방법이 저에게 적합한 지 모르겠습니다. 하지만 엄지 손가락을 당긴 채로, 당신의 방법과 mybe에 대해 여전히 생각하고 있습니다. 괜찮을 것입니다. 코멘트 주셔서 감사합니다! – Sorex

+0

당신이 찾고있는 db 속도에 따라, 당신은 서로 다른 방법으로 비트를 저장하고 싶을 것입니다. (모든 것은 블롭으로 분리되어 있고 (개별 비트 쿼리에 최적화되어 있습니다)). 이것은 읽기에 아주 좋습니다. 글을 많이 쓰는 경우 일관성 문제가 발생합니다. 내 답장을 수정하겠습니다. 방금 뭔가 생각했습니다 – Adrian

답변

2

데이터베이스에 int 열 (또는 동등한 것이 무엇이든)을 가질 수 있습니다.

2 열이 있고 각 열이 32 비트라고 가정하면 행 1 열 1 32 비트를 입력 한 다음 1 열 2를 다음 32 행으로 놓고 행 2 열 1로 넘어 가서 다시 시작할 수 있습니다 등등.

이 비트들 사이에 어떤 관계가 있습니까? 아니면 큰 덤프일까요?

참고 : 필자는이 기술을 사용하여 데이터를 압축/압축하므로 정확히 필요한 것은 아닐 수 있습니다.

편집 : 나는 원시 덩어리를 저장하고 당신은 원료 덩어리가 별도의 엔티티 (새 테이블 또는 그 이상의 열) 에 저장하여 수정 비트를 추적 생각하고
다음 매핑 BitIndex:BitNewValue입니다.
더 적절한 프레임 워크는 이제 map reduce입니다. 그러나 많은 비트가 변경되면 어떻게 이런 식으로 관리하는 것이 큰 골치 거리가 될 수 있는지 알 수 있습니다.

+0

내 질문에 몇 가지 추가 정보, 의견을 주셔서 감사합니다! – Sorex

관련 문제