복붙노트

[SQL] 때 당신은 관계형 데이터베이스를 사용하지 않겠습니까? [닫은]

SQL

때 당신은 관계형 데이터베이스를 사용하지 않겠습니까? [닫은]

외에도 구글 /에서 Bigtable 시나리오에서, 때 관계형 데이터베이스를 사용하지 않겠습니까? 왜, 당신은 무엇을 사용해야합니까? (당신이 '어려운 길'을 배우나요?)

해결법

  1. ==============================

    1.내 경험에 의하면, 이러한 조건 중 하나에 해당 관계형 데이터베이스를 사용하지 않아야합니다 :

    내 경험에 의하면, 이러한 조건 중 하나에 해당 관계형 데이터베이스를 사용하지 않아야합니다 :

    깊은 계층 구조와 그래프는 관계형 테이블에 잘 번역하지 않습니다. 심지어 오라클의 CONNECT BY와 같은 독점적 인 확장의 도움으로, 나무 아래 쫓는 것은 SQL을 사용하여 강력한 고통이다.

    관계형 데이터베이스는 간단한 읽기 액세스에 대한 많은 오버 헤드를 추가합니다. 트랜잭션 및 참조 무결성하지만 과잉 일부 응용 프로그램, 강력하다. 그래서 읽기 대부분의 응용 프로그램, 파일 비유 충분한입니다.

    예상 예기치 않은 쿼리가없는 경우 마지막으로, 당신은 단순히 본격적인 쿼리 언어와 관계형 데이터베이스가 필요하지 않습니다. 같은 질문에는 정장이없는 경우 "5 %는 파란색 위젯 우리가 영업 사원별로 그룹화 동쪽 해안에 판매? 한 -discounted 얼마나 많은"과가 없을 것입니다 결코, 당신은, 선생님, DB 무료로 살 수 있습니다.

  2. ==============================

    2.관계형 데이터베이스 패러다임의 데이터 사용에 대한 몇 가지 가정을합니다.

    관계형 데이터베이스 패러다임의 데이터 사용에 대한 몇 가지 가정을합니다.

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

    다른 요구 사항과 데이터를 관리하기위한 다른 해결책이 있습니다. 시맨틱 웹 기술은, 예를 들어, 자신의 속성을 정의하고 데이터 만 같은 속성으로 메타 데이터를 처리하여, 자체 기술로 각각의 개체 수 있습니다. 이 관계형 데이터베이스에 의해 부과 된 구조보다 더 유연하지만 그 유연성은 자신의 비용으로 제공됩니다.

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

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

  3. ==============================

    3.이 세 가지 주요 데이터 모델 (C.J.Date, E.F.Codd은)이며, 나는이에 플랫 파일을 추가하고있다 :

    이 세 가지 주요 데이터 모델 (C.J.Date, E.F.Codd은)이며, 나는이에 플랫 파일을 추가하고있다 :

    두 계층과 네트워크는 관계형 관계가 다른 두 표현 될 수로 표현 될 수있다.

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

    장점은 대부분의 프로젝트가에서이 예측 가능한 미래에 사용할 수있을에서 장기 데이터를 저장 시스템 (다중 응용 프로그램)에 대한 좋은 비율로 발견 비용에서 온다.

    당신은 아마도 단일 사용자를위한 시스템,하지만 하나의 응용 프로그램을 구축하지 않습니다, 당신은 곧 다음, 언제든지 당신이 당신의 데이터가 없으며, 여러 사용자를 사용하여 여러 응용 프로그램을 원하지 않을 것이라는 점을 매우 확신하는 경우에 당신은 아마 접근 빠르게 찾을 수 있습니다 .

    또한 당신은 종류의 데이터는 저장하고 그 다음 관계형 모델의 강점은 그것을 낭비 모델링하는 방법을 원하는 것을 모르는 경우.

    또는 당신은 단순히 더 (잘 될 수있는) 것이 데이터의 무결성을 걱정하지 않는 경우.

    모든 데이터 구조가 제대로 모델링 시도가 의미 공정한 방법으로 '현실'을 제시하는 경우에만 관계형 사용의 특정 종류에 최적화되어 있습니다. 관계형 데이터베이스 나쁜 경험이 사람들은 일반적으로 자신의 경험을 데이터 모델의 다른 유형 훨씬 더 나쁠 것이라는 점을 인식하지 않습니다. 끔찍한 구현이 가능하고, 특히이 복잡한 모델을 구축 비교적 쉽게 관계형 데이터베이스로, 당신은 당신의 손에 꽤 괴물로 끝낼 수 있었다. 내가 XML에서 같은 괴물을 상상하려고 할 때 여전히 난 항상 기분이 좋아.

    얼마나 좋은 관계형 모델의 한 예는 IMO, 당신이이 SQL을 포함 찾을 수있는 질문에 곤란 대 복잡성의 비율이다.

  4. ==============================

    4.나는 거의 매일이 주제에 대해 설명하고 RDMBS 이상 등의 해시를 분산 선택했다 프로젝트에 대한 많은 기사가있는 높은 확장 성 블로그를 방문하는 것이 좋습니다.

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

    빠른 (하지만 매우 불완전한 대답은) 모든 데이터를 효율적인 방법으로 테이블에 잘 변환한다는 것입니다. 데이터가 기본적으로 하나 개의 큰 사전의 경우 예를 들어, 보통 오래된 RDBMS 그 대안이 훨씬 더 빨리 아마이 있습니다. 성능이 예를 들어 거대한 프로젝트의 우려, 안정성, 일관성과 신뢰성이없는 경우 그런 말을하는 데, 그것은 주로 성능의 문제, 그리고이다, 나는 이러한 기술하는 경우에 탐구에서 많은 점을 볼 수 없습니다 RDBMS는 모든 언어 및 플랫폼과 선택할 수있는 솔루션의 거대한 세트의 지원, 훨씬 더 성숙하고 잘 개발 방식이다.

  5. ==============================

    5.십오 년 나는 신용 리스크 시스템 (기본적으로 큰 나무 산책 시스템)에서 일하고 있었다 전에. 우리는 HPUX 및 Solaris에서베이스를 사용하고 performnce 우리를 죽이고했다. 우리는 할 수 없다고 말했다베이스에서 직접 컨설턴트로 고용했다. 그런 다음 우리는 OO 데이터베이스 (이 경우 객체 저장소)로 전환하고, 100 배의 성능 향상에 대해있어 (그리고 코드는 100 배에 대해 너무 쉽게 작성할했다)

    십오 년 나는 신용 리스크 시스템 (기본적으로 큰 나무 산책 시스템)에서 일하고 있었다 전에. 우리는 HPUX 및 Solaris에서베이스를 사용하고 performnce 우리를 죽이고했다. 우리는 할 수 없다고 말했다베이스에서 직접 컨설턴트로 고용했다. 그런 다음 우리는 OO 데이터베이스 (이 경우 객체 저장소)로 전환하고, 100 배의 성능 향상에 대해있어 (그리고 코드는 100 배에 대해 너무 쉽게 작성할했다)

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

  6. ==============================

    6.당신 스키마가 많이 다릅니다 때 당신은 관계형 데이터베이스에 어려움이있을 것이다. XML 데이터베이스 또는 키 - 값 쌍 데이터베이스가 가장 적합한 곳이다. 또는 당신은 IBM DB2를 사용하고 하나의 데이터베이스 엔진에 의해 관리되는 관계형 데이터와 XML 데이터를 가질 수있다.

    당신 스키마가 많이 다릅니다 때 당신은 관계형 데이터베이스에 어려움이있을 것이다. XML 데이터베이스 또는 키 - 값 쌍 데이터베이스가 가장 적합한 곳이다. 또는 당신은 IBM DB2를 사용하고 하나의 데이터베이스 엔진에 의해 관리되는 관계형 데이터와 XML 데이터를 가질 수있다.

  7. ==============================

    7.7-8 소개 년 전 우리의 초기 기대 이상으로 인기가 성장 웹 사이트에 근무하고 그것을 문제 성능 현명한 우리를 얻었다. 우리는 모두 상대적으로 웹 기반 프로젝트에 미숙 한 이후로는 등, 별도의 서버에 일반적인 데이터베이스 분리 이상으로로드 밸런싱을 수행 할 작업에 대한 우리에 상당한 부담을 제기

    7-8 소개 년 전 우리의 초기 기대 이상으로 인기가 성장 웹 사이트에 근무하고 그것을 문제 성능 현명한 우리를 얻었다. 우리는 모두 상대적으로 웹 기반 프로젝트에 미숙 한 이후로는 등, 별도의 서버에 일반적인 데이터베이스 분리 이상으로로드 밸런싱을 수행 할 작업에 대한 우리에 상당한 부담을 제기

    어느 날 나는 아주 간단 뭔가 생각했습니다. 사이트가 사용자에 기반하기 때문에, 자신의 프로필은 일반적인 방법으로 누군가가 그것을 할 것이다 데이터베이스 테이블에 저장되어 - 사용자 ID, 그런 정보 변수와 물건을 많이 - 다른 사용자가 볼 수있는 사용자의 프로필 페이지로 표시 할 . 기본적으로 캐시 - 나는 모든 간단한 HTML 파일에 데이터를 이미 사용자의 프로필 페이지로 준비하고 상당한 향상을 가지고 그 플러시했습니다. 더 부스트있어 - 난 사용자가 자신의 프로필 정보를 편집 할 때, 그것은 원래의 HTML 파일을 구문 분석 편집을 위해 그것을 넣어, 다음 파일 시스템에 HTML을 다시 물로 씻어 것이라고하는 시스템을 만들었다. 나는 서로에게 보낸 메시지 사용자와 뭔가 simillar했다. 기본적으로 내가 모두 데이터베이스 바이 패스 시스템을 만들 수있는 곳하는 INSERT 또는 UPDATE를 피하고, 나는 상당한 향상을 얻었다. 그것은 상식처럼 들릴지도 모르지만 그것은 계몽 순간이었다. 그것은 그 자체로 관계 설정의 회피 아니지만, 그것은 모두 데이터베이스의 회피입니다 - KISS.

  8. from https://stackoverflow.com/questions/667141/when-shouldnt-you-use-a-relational-database by cc-by-sa and MIT license