문제

관계형 DB를 통해 언제 키 가치 데이터 저장소를 선택합니까? 하나를 결정하는 데 어떤 고려 사항이 있습니까? 최고의 경로는 언제 혼합됩니까? 가능하다면 예제를 제공하십시오.

도움이 되었습니까?

해결책

내 경험상, 전통적인 대 피해자 관행을 사용해야하는지 여부를 묻는다면 전통적으로 가십시오. 난해한 관행은 섹시하고 도전적이며 재미 있지만 99.999%의 응용 프로그램이 전통적인 접근 방식을 요구합니다.

관계 vs kv와 관련하여 질문 ~해야 한다 묻는 것은 다음과 같습니다.

내가 왜 ~ 아니다 이 시나리오에 관계형 모델을 사용하고 싶습니다 : ...

시나리오를 설명하지 않았으므로 누구나 사용해서는 안되는 이유를 알려주는 것은 불가능합니다. KV의 "모든 잡기"이유는 확장 성입니다. 이는 지금은 문제가되지 않습니다. 최적화 규칙을 알고 있습니까?

  1. 하지 마십시오.
  2. (전문가 만) 지금하지 마십시오.

KV는 a입니다 고도로 응용 프로그램에 완전히 불필요 할 가능성이 높은 확장성에 대한 최적화 된 솔루션.

다른 팁

키-값, 상속인,지도-빨리 또는 그래프 데이터베이스 시스템은 구현 전략에 훨씬 가깝기 때문에 물리적 표현과 크게 연결되어 있습니다. 이 중 하나를 선택 해야하는 주된 이유는 매력적인 성능 주장이 있고 데이터 처리 전략에 매우 밀접하게 맞는 경우입니다. 조심하십시오. Ad-Hoc Queries는 일반적으로 이러한 시스템에 실용적이지 않으며 미리 쿼리를 결정하는 것이 좋습니다.

관계형 데이터베이스 시스템은 논리적, 비즈니스 지향 모델을 기본 물리적 표현 및 처리 전략과 분리하려고 노력합니다. 이 분리는 불완전하지만 여전히 꽤 좋습니다. 관계 시스템은 사실을 처리하고 사실 모음에서 신뢰할 수있는 정보를 추출하는 데 적합합니다. 관계 시스템은 또한 임시 쿼리에서도 훌륭하며 다른 시스템은 악명 높게 나쁘다. 그것은 비즈니스 세계와 다른 많은 곳에서 매우 적합합니다. 그렇기 때문에 관계형 시스템이 널리 퍼져 있습니다.

비즈니스 응용 프로그램이라면 관계 시스템은 거의 항상 답입니다. 다른 시스템의 경우 아마도 대답 일 것입니다. 발생하는 일의 일부 파이프 라인과 같은 데이터 처리 문제가 더 많고 대량의 데이터가 있고 모든 쿼리가 앞쪽에 있다는 것을 알고 있다면 다른 시스템이 적합 할 수 있습니다.

데이터가 단순히 사물 목록이고 각 항목에 대한 고유 식별자를 도출 할 수 있다면 KVS는 잘 일치합니다. 그들은 신입생 컴퓨터 과학에서 우리가 배운 간단한 데이터 구조를 밀접하게 구현하고 복잡한 관계를 허용하지 않습니다.

간단한 테스트 : 데이터와 모든 관계를 링크 된 목록 또는 해시 테이블로 표현할 수 있습니까? 그렇다면 KVS가 작동 할 수 있습니다. 아니오라면 RDB가 필요합니다.

여전히 환경에서 작동 할 KV를 찾아야합니다. KVSE에 대한 지원, 심지어 주요 것조차도 PostgreSQL 및 MySQL/MariadB의 것이 무엇인지가 거의 없습니다.

전통적인 관계형 데이터베이스에는 점을 넘어 스케일링이 문제가됩니다. 그 지점은 당신이하려는 일에 약간 달려 있습니다.

클라우드 컴퓨팅 공급 업체의 모든 (대부분?)는 주요 가치 데이터 저장소를 제공합니다.

그러나 복잡한 데이터 구조가있는 합리적인 크기의 응용 프로그램이있는 경우 관계형 데이터베이스를 사용하여 얻는 지원은 개발 비용을 줄일 수 있습니다.

IMO, 키 값 쌍 (예 : NOSQL 데이터베이스)은 기본 데이터가 구조화되지 않았거나 예측할 수 없거나 자주 변경 될 때 가장 잘 작동합니다. 구조화 된 데이터가없는 경우, 관계형 데이터베이스는 많은 스키마를 변경하거나 후프를 통해 데이터를 구조로 준수해야하기 때문에 관계형 데이터베이스가 가치보다 더 문제가 될 것입니다.

KVP / JSON / NOSQL은 데이터 구조의 변경으로 인해 데이터 모델을 완전히 리팩토링 할 필요가 없기 때문에 훌륭합니다. 데이터 객체에 필드를 추가하는 것은 단순히 데이터에 추가하는 문제입니다. 코인의 다른 쪽은 관계형 데이터베이스보다 KVP / NOSQL 데이터베이스에 제약 조건 및 검증 점검이 적으므로 데이터가 지저분해질 수 있다는 것입니다.

관계형 데이터 모델에는 성능 및 공간 절약 이점이 있습니다. 정규화 된 관계형 데이터를 사용하면 테이블의 주요 관계와 제약 조건이 있기 때문에 데이터를 더 쉽게 이해하고 검증 할 수 있습니다.

내가 본 최악의 패턴 중 하나는 두 가지 방법을 갖기 위해 노력하는 것입니다. 키 가치 쌍을 관계형 데이터베이스에 넣는 것은 종종 재난의 레시피입니다. 데이터에 가장 적합한 기술을 사용하는 것이 좋습니다.

열쇠를 기준으로 O (1) 값 조회를 원한다면 KV 저장소를 원합니다. 의미, 양식의 데이터가있는 경우 k1={foo}, k2={bar}, 등, 값이 더 크고 중첩 된 구조물이고 빠른 조회를 원할 때도 KV 저장소를 원합니다. 적절한 인덱싱을하더라도 임의의 키를 위해 관계형 DB에서 O (1) 조회를 달성 할 수 없습니다. 때로는 이것을 "무작위 조회"라고합니다.

Alliteratially에서, 하나의 열만 쿼리하는 경우, "기본 키"인 경우 나머지 데이터를 검색하고 해당 열을 키 공간으로 사용하고 나머지 데이터를 KV 스토어의 값으로 사용합니다. 조회를하는 가장 효율적인 방법.

대조적으로, 여러 열 중 하나에 의해 데이터를 종종 쿼리하는 경우, 일명 데이터에 대한 더 풍부한 쿼리 API를 지원하면 관계형 데이터베이스를 원할 수 있습니다.

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