문제

그 외에도에서 구글/bigtable 시나리오의 경우해야 하지 않는 관계형 데이터베이스를 사용하여?왜지,그리고 무엇을 사용해야 합니까?(당신 배우는'방'?)

도움이 되었습니까?

해결책

내 경험상 이러한 기준 중 하나가 사실 일 때 관계형 데이터베이스를 사용해서는 안됩니다.

  • 데이터는 계층 구조 또는 임의의 깊이의 그래프 (네트워크)로 구성됩니다.
  • 일반적인 액세스 패턴은 글쓰기에 대한 읽기를 강조하거나
  • 임시 쿼리에 대한 요구 사항은 없습니다.

깊은 계층 구조와 그래프는 관계형 테이블로 잘 번역되지 않습니다. Oracle 's와 같은 독점 확장의 도움을 받아도 CONNECT BY, 나무를 쫓는 것은 SQL을 사용하는 강력한 고통입니다.

관계형 데이터베이스는 간단한 읽기 액세스를 위해 많은 오버 헤드를 추가합니다. 거래 및 참조 무결성은 강력하지만 일부 응용 프로그램의 경우 과잉입니다. 따라서 읽은 응용 프로그램의 경우 파일 은유가 충분합니다.

마지막으로 예상치 못한 쿼리가 예상되지 않으면 본격적인 쿼리 언어가 포함 된 관계형 데이터베이스가 필요하지 않습니다. "영업 사원이 그룹화 한 동부 해안에서 판매 한 5%분리 된 파란색 위젯 수"와 같은 질문을하는 소송이 없다면, 당신은 결코 DB가 없을 수 없을 것입니다.

다른 팁

관계형 데이터베이스 패러다임은 데이터 사용에 대해 몇 가지 가정을 만듭니다.

  • 관계는 변하지 않는 행 세트로 구성됩니다.
  • 관계의 모든 행에는 동일한 열 세트가 있습니다.
  • 각 열에는 모든 행에 고정 된 이름과 데이터 유형 및 시맨틱 의미가 있습니다.
  • 관계의 행은 기본 키 열의 고유 값으로 식별됩니다.
  • 등.

이러한 가정은 약간의 유연성 비용으로 단순성과 구조를 지원합니다. 모든 데이터 관리 작업이 이러한 종류의 구조에 적합한 것은 아닙니다. 예를 들어 복잡한 속성 또는 가변 속성을 가진 엔티티는 그렇지 않습니다. 관계형 데이터베이스 솔루션이 지원하지 않는 영역에서 유연성이 필요한 경우 다른 종류의 솔루션을 사용해야합니다.

요구 사항이 다른 데이터를 관리하기위한 다른 솔루션이 있습니다. 예를 들어 시맨틱 웹 기술을 사용하면 메타 데이터를 데이터와 같은 속성으로 취급하여 각 엔터티가 자체 속성을 정의하고 자체 설명을 할 수 있습니다. 이는 관계형 데이터베이스에 의해 부과 된 구조보다 유연하지만 유연성은 자체 비용과 함께 제공됩니다.

전반적으로, 각 작업에 적합한 도구를 사용해야합니다.

"다른 대답"을 참조하십시오.차세대 데이터베이스."

세 가지 주요 데이터 모델 (cjdate, efcodd)이 있으며 이것에 플랫 파일을 추가하고 있습니다.

  • 플랫 파일 (S) (구조 변수 - '멍청한'플랫 텍스트에서 파일에 이르기까지 영리한 도구와 결합 된 문법을 준수하는 파일에 이르기
  • 계층 적 (트리, 중첩 세트 - 예 : 예 : XML 및 기타 마크 업 언어, 레지스트리, 조직 차트 등 느린 )
  • 회로망 (네트워크, 그래프 - 예제 : 탐색 데이터베이스, 하이퍼 링크, 시맨틱 웹, 다시 거의 모든 것을 모델링 할 수 있지만 자동 최적화는 문제가됩니다)
  • 관계 (1 차 술어 논리 - 예 : 관계형 데이터베이스, 자동 최적화)

계층과 네트워크는 모두 관계형으로 표현 될 수 있으며 관계형은 다른 두 가지로 표현 될 수 있습니다.

관계형이 '더 나은'으로 간주되는 이유는 데이터 검색 언어뿐만 아니라 강력한 선언적 데이터 무결성을 포함하여 데이터 정의 언어에 대한 선언적 특성과 표준화입니다. 안정적인, 확장 가능한 다중 사용자 관리 시스템.

혜택은 비용이 많이 듭니다. 대부분의 프로젝트는 장기 데이터를 예측 가능한 미래에 사용할 수있는 시스템 (다중 응용 프로그램)에 대해 좋은 비율이라고 생각합니다.

시스템을 구축하지 않고 단일 응용 프로그램, 아마도 단일 사용자를위한 단일 응용 프로그램을 구축하는 경우 데이터를 사용하거나 여러 사용자를 사용하여 여러 응용 프로그램을 원하지 않을 것이라고 확신합니다. 곧 더 빠른 접근 방식을 찾을 수 있습니다. .

또한 어떤 종류의 데이터를 저장하려는 데이터와 모델링 방법을 모르는 경우 관계형 모델 강점이 낭비됩니다.

또는 단순히 데이터의 무결성에 관심이 없다면 (괜찮을 수 있음).

모든 데이터 구조는 특정 종류의 사용을 위해 최적화되며, 적절하게 모델링 된 경우만으로도 '현실'을 의미 적으로 편견없는 방식으로 표현하려고합니다. 관계형 데이터베이스에 대한 경험이 나쁜 사람들은 일반적으로 다른 유형의 데이터 모델에서 자신의 경험이 훨씬 나빠 졌다는 것을 깨닫지 못합니다. 끔찍한 구현이 가능하며, 특히 복잡한 모델을 구축하기가 상대적으로 쉬운 관계형 데이터베이스를 사용하면 손에 몬스터가 생길 수 있습니다. 그래도 XML에서 같은 괴물을 상상하려고 할 때 항상 기분이 좋아집니다.

관계형 모델이 얼마나 좋은지의 예는 IMO가 SQL과 관련된 질문의 복잡성과 부족의 비율입니다.

나는 당신이 방문하는 것이 좋습니다 높은 확장 성 블로그, 이 주제에 대해 거의 매일 논의하고 RDMBS를 통해 분산 해시 등을 선택하는 프로젝트에 관한 많은 기사가 있습니다.

빠른 (그러나 매우 불완전한 답변)는 모든 데이터가 효율적인 방식으로 테이블로 잘 해석되는 것은 아닙니다. 예를 들어, 귀하의 데이터가 본질적으로 하나의 큰 사전 인 경우, 오래된 RDBMS의 대안이 훨씬 빠를 수 있습니다. 말하지만, 그것은 대부분 성능의 문제이며, 프로젝트에서 성능이 큰 문제가 아니라면 안정성, 일관성 및 신뢰성이 있다면, 나는 이러한 기술에 대해 많은 점이 보이지 않습니다. RDBMS는 훨씬 더 성숙하고 잘 발달 된 체계이며 모든 언어와 플랫폼을 지원하고 선택할 수있는 다양한 솔루션 세트입니다.

15 년 전 저는 신용 위험 시스템 (기본적으로 큰 트리 워킹 시스템)을 연구하고있었습니다. 우리는 Hpux & Solaris에서 Sybase를 사용하고 있었고 Performnce는 우리를 죽이고있었습니다. 우리는 Sybase의 직접 컨설턴트로 고용하여 할 수 없다고 말했습니다. 그런 다음 OO 데이터베이스 (이 경우 객체 저장소)로 전환하고 약 100 배의 성능 증가를 얻었습니다 (코드는 약 100 배 더 쉽게 쓰기가 더 쉽습니다).

그러나 이러한 상황은 매우 드물다. 관계형 데이터베이스는 좋은 첫 번째 선택이다.

스키마가 많이 변하면 관계형 데이터베이스에 어려움을 겪게됩니다. XML 데이터베이스 또는 키 값 쌍 데이터베이스가 가장 잘 작동하는 곳입니다. 또는 IBM DB2를 사용하고 단일 데이터베이스 엔진에서 관리하는 관계형 데이터와 XML 데이터가 모두있을 수 있습니다.

약 7~8 년 전에는 웹 사이트에서 성장 인기를 넘어 우리의 초기 기대 그리고 우리 문제의 성능이 현명하다.때문에 우리 모두 비교적 경험에서는 웹 기반의 프로젝트는 그것을 제기하는 상당한 부담을 우리에게 무엇을해야하는지에 대해 평소 넘어 데이터베이스 분리를 별도의 서버 부하를 분산 등입니다.

어느 날 나는 뭔가 생각했습니다 아주 간단합니다.이 사이트 사용자에 따라,그들의 프로파일에 저장된 데이터베이스 테이블 일반적인 방법으로 누군가가 그것을 할 사용자 id,많은 정보의 변수와 같은 물건는 것으로 표시의 사용자 프로필 페이지는 다른 사용자 수 있습니다.나는 플러시되는 모든 데이터는 간단한 html 파일을 이미 준비로 사용자 프로필 페이지고있어 크게 향상-기본적으로 캐시입니다.나는 심지어는 시스템이 사용자가 자신의 프로필 편집한 정보,그것은 원래 분석에 html 파일을 올려한 편집,그리고 다음 세척 html 다시 파일 시스템을 가지고 더 많은 향상이다.

나 무에서 유를 창조하는 기술이 존재합니다.으로 메시지 사용자를 보냈습니다.기본적으로 어디든지 내가 만들 수 있는 시스템 바이패스는 데이터베이스 모두를 피하고,업데이트하거나 삽입,나는 뜻깊습니다.그것도 같은 소리는 일반적인 감각,그러나 그것이 깨달음이 있는 순간입니다.그것은 회피의 관계 설정 자체이지만,그것은 회피의 데이터베이스의 전부-키스입니다.

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