키 값 저장소에 인덱스가있는 데이터베이스 테이블을 시뮬레이션하는 가장 쉬운 방법은 무엇입니까? 키 값 저장소에는 범위 지정 쿼리가없고 정렬 된 키가 없습니다.키 값 저장소에 인덱스가있는 데이터베이스 테이블을 시뮬레이션하는 가장 쉬운 방법은 무엇입니까?
내가 시뮬레이션하고 싶은 일을 (우선 순위의 순서대로) :
- 이 테이블을 작성
- 임의에 따라 기본 키
- 쿼리를 기반으로 인덱스를
- 쿼리 만들기 열을
- 추가 열
키 값 저장소에 인덱스가있는 데이터베이스 테이블을 시뮬레이션하는 가장 쉬운 방법은 무엇입니까? 키 값 저장소에는 범위 지정 쿼리가없고 정렬 된 키가 없습니다.키 값 저장소에 인덱스가있는 데이터베이스 테이블을 시뮬레이션하는 가장 쉬운 방법은 무엇입니까?
내가 시뮬레이션하고 싶은 일을 (우선 순위의 순서대로) :
Redis (문자열, 목록, 집합 등을 지원하는 고급 키 - 값 저장소)을 사용하는 경우 매우 간단합니다. 나는 이미 C# redis client을 개발했으며, POCO의 데이터 모델을 저장하기위한 기본 지원을 제공합니다. 정확하게 동일한 POCO를 OrmLite이 사용하여 RDBMS에 저장할 수 있습니다. 레디 스가 빠르고 그런데
, 나는 benchmark 그 매장을 가지고 있으며 1.2에서 초 (A 3yo 아이맥에 유닛 테스트 내에서 실행)에서 전체 Northwind 데이터베이스 (3202 개 레코드) 검색합니다.나는 두 가지 방법
고유 키, 예를 들어를 만들 내가 클래스 형의 이름과 기본 키를 결합urn:user:1
ids:user
lists:user
나는 과거에 Redis를 사용 했었습니다. 그렇습니다. 정말 빨랐습니다. 특히, 모든 범위, 설정 및 원자 (incr 및 decr) 연산이 좋았습니다. 지금은 동적으로 확장 할 수있는 데이터베이스 (Riak)에 수십억 개의 레코드를 저장하는 시스템을 다루므로 Redis는 모든 것을 메모리에 맞춰야하므로 적절하지 않습니다 – Zubair
실제로 redis 트렁크는 여전히 1.6GB의 메모리만으로 1,000 만 개의 키를 저장할 수 있으며, 여전히 놀랍도록 빠르다. http://antirez.com/post/redis-virtual-memory-story.html – mythz
그래, 나 그것을 보았다, 매우 시원한! 사실, Riak조차도 Redis 기반 백엔드를 보유하고 있습니다. 그래도 수십억 개의 레코드로 확장되지는 않지만 매우 훌륭합니다. – Zubair
해시 테이블이나 사전을 사용하십시오. 고유 한 키 값을 원할 경우 GUID 또는 해시 코드를 사용할 수 있습니다.
기본 키에 대한 hastable을 의미합니까? 그리고 사전은 어디에 들어 맞습니까? – Zubair
사실, 해시 테이블이 아마도 당신에게 더 잘 어울릴 것이라고 생각합니다. 사전은 또 다른 가능한 옵션입니다. –
키 - 값 저장소는 키 정렬 순서와 키에 대한 액세스 권한을 지원해야합니다.
그럼 당신은 작성해야 두 개의 사전 : payload
모든 데이터베이스 테이블에 포함 할 데이터와를 포함해야 두 번째 사전의 키를 포함해야
id -> payload
및
col1, id -> NULL
, 첫 번째 사전의 각 항목에서 (col1, id)
의 값.
어떤 부분을 시뮬레이션합니까? SQL 호환성? 성능 특성? 그냥 정수 기본 키를 기반으로 올바른 개체를 받고? –
성능면에서 구현할 수있는 모든면. – Zubair
귀하의 질문은 명확하지 않으며 귀하의 "설명"은 어떤 것도 명확히하지 않았습니다. @ MB의 의견에 응답하면 더 나은 응답을 얻을 수 있습니다. –