네트워크 오버 헤드없이 효율적이고 매우 빠른 액세스를 위해 일부 정보를 다른 시스템에 배포하려고합니다. 데이터는 관계형 스키마에 존재하며 엔티티 간의 관계에 "조인"해야한다는 요구 사항이지만 데이터베이스에 쓰는 요구 사항은 아닙니다 (오프라인으로 생성됩니다).빠른 읽기 전용 포함 된 "데이터베이스"?
SQLite가 성능을 제공한다는 확신이 있었지만 RDMBS는 근본적인 수준에서는 적합하지 않은 것 같습니다. 조인은 인덱스 조회 비용으로 인해 매우 비싸고 읽기 전용 컨텍스트에서는 불필요한 오버 헤드입니다 엔티티는 파일 오프셋의 형태로 서로 직접 참조를 저장할 수 있습니다. 이 방법으로 파일 찾기를 위해 인덱스 조회가 전환됩니다.
내 옵션에는 어떤 것들이 있습니까? 데이터베이스가 실제로 내가 원하는 것을 설명하는 것 같지 않습니다. 나는 Neo4j에 대해 알고 있지만 자바에 내 앱을 포함시킬 수는 없다.
TIA!
- 데이터의 크기가 최대 1GB 될 것입니다, 나는 정말 옵션이 아닙니다 그래서 메모리에 데이터를 유지하는 PHP를 사용하고 있습니다 :
편집, 주석을 응답합니다. 나는 지속적으로 디스크로가는 것을 피하기 위해 OS 버퍼 캐시에 의존 할 것이다.
- 예제는 15 개의 혼합 유형 필드와 특정 제조사가있는 제품을 카테고리 테이블에 등록하는 쿼리가있는 Product 테이블입니다.
- 솔루션은 일종의 플랫 파일이어야합니다. 내 요구를 충족시키는 소프트웨어가 이미 있는지 궁금합니다.
@ 마크 윌킨스 : 성능 문제를 측정
. 필자의 상황에서는 2ms IO 바인딩 쿼리를 Memcache에 5ms CPU 바운드 호출로 대체하는 것이 용납되지 않습니다 ... 예를 들어, categories 테이블에는 부모 및 자식 범주가 포함 된 500 개의 레코드가 있습니다. 다음 쿼리는 디스크 IO가없는 ~ 8ms가 걸립니다. SELECT 1 FROM categories INNER JOIN 범주 B on b.id = a.parent_id. 일부 단순한 조인리스 쿼리는 매우 빠릅니다.
이것은 관계형 스키마이며 관계에 참여해야하지만 관계형 데이터베이스를 사용하고 싶지 않다고 말하고 있습니까? 플랫 파일을 사용하지 않는 이유는 무엇입니까? – Oded
"DB"의 예제와 대략적인 크기를 지정하십시오. – CAFxX