어떤 모범 사례에 대한 쿼리하는 데이터는 바이너리에서 데이터베이스?

StackOverflow https://stackoverflow.com/questions/210882

  •  03-07-2019
  •  | 
  •  

문제

입력하라는 메시지가 표시됨을 추가 queryability 데이터베이스(오라클)가득한 대부분 이진 데이터이다.그래서 나를 쿼리할 수 있는 이진 범위 내에서 도시의 모든 몇 킬로바이트.나는 결코 이 일을 행하기 전에,그래서 나는 무엇인지 궁금은 몇 가지 좋은 사례와 함정할 때 고려하는 프로젝트를 시작은 이렇습니다.

감사

도움이 되었습니까?

해결책

추가 열의 MD5 는 MD5 체크섬의 BLOB 데이터입니다.또,새로 만들 수 있습니다 테이블과 같은 기본 키고 MD5 열입니다.

캐시 모듈은 외부 데이터베이스를 사용할 수있는 열가 있지 않을 검색하 BLOB 열 두 번 캐시했다.

또는,당신은 떨어뜨릴 수 있게 되었 BLOB 데이터를 데이터베이스에 저장한 파일 시스템으로 MD5 값으로 filename http server 네트워크로 파일 서버입니다.

다른 팁

알 수없는 당신의 정확한 요구 사항을 만들 수 있습만 몇 가지 일반적인 이야기들.

BLOB oracle 에서는 가장 빠른 유형이 있습니다.는지 확인을 하지 않을 구축하는 많은 성능 병목 현상으로 디자인,그리고 실행에서 성능 테스트 기능을 구축 할 가능한 한 빨리 그것을 지키는 것입니다.

dbms_lob 는 당신의 친구입니다.특히 찾을 수 있습니다 읽기 및 substr 기능(읽기 위해 부품의 blob)밖으로 유용합니다.

멀리에서 외부는 C 스타일의 절차-그들은 될 가능성이 많이 둔화되고 있습니다.PL/SQL 함수하는 경향이있다 훨씬 빠릅니다.I don't know about Java 절차가 있습니다.로 java 엔진은 더 통합 Oracle 그들은 아주 사용하는 것이 좋다.그것은 가치가 있을 수 있습니다 을의 초기 개념의 증명을 비교하 PL/SQL 에 대한 Java.

Java 할 수 있는 데이터를 읽으로 byte[]스트림 및 조작 그것은 당신의 마음이 콘텐츠를 사용하여 세계 f Java.외부 절차에 대해 자바 쉽게 할 수 있습니다-당신할 수 있습을 Oracle Java 소스 코드입니다.

PL/SQL,기술 중 하나는 우리가 찾은 매우 유용한 변환 작업을 포함하는 원료,캐스트하는 것 varchar,다음을 변환하는 것은 육,조작한 다음의 진수(문자열) 표준 Oracle 문자열 기능이 있다.I.e:

create or replace function retrieve_data_from_blob (
    b blob
    , tag_code
)
as
    lw long raw;
    data varchar(30000);
    result varchar(100);
    amount pls_integer := 30000;
begin
    -- covert blob to long raw.
    -- amount will hold total bytes read.
    dbms_lob.read(b, amount, 1, lw);
    data := util_raw.rawtohex(lw);
    -- retrieve_embedded retrieves data tagged with tag_code
    -- from internal binary structure by reading hex data
    return retrieve_embedded(data, tag_code);
end;
/

이 작업에 대한 blob 최대 15Kb 크기에 있습니다.이 retrieve_embedded 기능을 수있다,예를 들어를 읽을 수 있는"첫째 바이트"에 의해 일 substr(data, 1, 8), 변환,그 진수를 통해 to_number(hexdata, 'xxxxxxxx') 사용으로 오프셋...etc.

저장 매개변수할 수 있게 매우 중요한 차이가 올 때에 모두 저장 및 검색을 비교적 적은 덩(< DB_BLOCK_SIZE*2 도).일반적으로,당신이 최소화하려는 행동과 행 체인뿐만 아니라 낭비를 최소화유 공간이 있습니다.

아마도 가장 효과는 성능이 활성화 또는 비활성화에서'행'관-그것은 확실히 실험을 가치가있다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top