기업에 적합한 데이터베이스 유형을 선택하는 방법

수백 개의 기술이 많은 데이터베이스 리뷰가 있지만 데이터베이스 선택의 첫 번째 단계, 즉 특정 애플리케이션에 가장 적합한 일반 유형 선택에 대한 명확한 지침을 항상 제공하지는 않습니다. 모든 데이터베이스가 동일하게 생성되지는 않습니다. 각각에는 특정한 강점과 약점이 있습니다. 대부분의 프로젝트에서 좋아하는 데이터베이스를 작동하도록하는 해결 방법이 존재하는 것은 사실이지만 이러한 트릭을 사용하면 불필요한 복잡성이 추가됩니다.

특정 데이터베이스를 고려하기 전에 현재 프로젝트를 가장 잘 지원하는 유형이 무엇인지 생각해보십시오. 질문은 "SQL vs. NoSQL"보다 더 깊습니다. 가장 일반적인 데이터베이스 유형에 대한 요약, 각각의 상대적 장점 및 가장 적합한 유형을 확인하는 방법에 대해 읽어보십시오.

관계형 데이터베이스 관리 시스템 (Oracle, MySQL, MS Server, PostgreSQL)

관계형 데이터베이스는 증가하는 데이터 생성 홍수를 처리하기 위해 1970 년대에 개발되었습니다. 그들은 견고한 기초 이론을 가지고 있으며 오늘날 사용되는 거의 모든 데이터베이스 시스템에 영향을 미쳤습니다.

관계형 데이터베이스는 데이터 세트를 "관계"(모든 정보가 특정 셀의 값으로 저장되는 행과 열이있는 테이블)로 저장합니다. RDBMS의 데이터는 SQL을 사용하여 관리됩니다. 다른 구현이 있지만 SQL은 표준화되어 있으며 수준의 예측 가능성과 유용성을 제공합니다.

공급 업체의 초기 홍수가 비 관계형 제품으로 시스템의 인기를 활용하려고 시도한 후 제작자 EF Codd는 모든 관계형 데이터베이스 관리 시스템이 따라야하는 일련의 규칙을 설명했습니다. Codd의 12 가지 규칙은 엄격한 내부 구조 프로토콜을 적용하고, 검색이 요청 된 데이터를 안정적으로 반환하는지 확인하고, 최소한 사용자에 의한 구조적 변경을 방지하는 것입니다. 이 프레임 워크는 관계형 데이터베이스가 오늘날까지 일관되고 신뢰할 수 있도록 보장했습니다.

강점

관계형 데이터베이스는 고도로 구조화 된 데이터를 처리하는 데 탁월하며 ACID (원 자성, 일관성, 격리 및 내구성) 트랜잭션을 지원합니다. 데이터는 SQL 쿼리를 사용하여 쉽게 저장 및 검색됩니다. 기존 데이터를 수정하지 않고 데이터를 추가하는 것이 간단하기 때문에 구조를 빠르게 확장 할 수 있습니다.

특정 사용자 유형이 액세스하거나 수정할 수있는 항목에 대한 제한을 만드는 것은 RDBMS의 구조에 내장되어 있습니다. 이 때문에 관계형 데이터베이스는 계층화 된 액세스가 필요한 응용 프로그램에 적합합니다. 예를 들어 고객은 자신의 계정을 볼 수 있고 상담원은 필요한 사항을보고 변경할 수 있습니다.

약점

관계형 데이터베이스의 가장 큰 약점은 가장 큰 장점의 거울입니다. 구조화 된 데이터를 처리하는 데 능숙하지만 구조화되지 않은 데이터를 사용하는 데 어려움을 겪습니다. RDBMS의 범위에서 상황에 따라 실제 엔티티를 표현하는 것은 어렵습니다. "분할 된"데이터는 테이블에서 더 읽기 쉬운 것으로 재 조립되어야하며 속도는 부정적인 영향을받을 수 있습니다. 고정 된 스키마는 변화에 잘 반응하지 않습니다.

비용은 관계형 데이터베이스의 고려 사항입니다. 설치 및 성장에 더 많은 비용이 드는 경향이 있습니다. 수평 적 확장 또는 더 많은 서버를 추가하여 확장하는 것은 일반적으로 서버에 더 많은 리소스를 추가하는 수직적 확장보다 더 빠르고 경제적입니다. 그러나 관계형 데이터베이스의 구조는 프로세스를 복잡하게 만듭니다. 관계형 데이터베이스를 확장하려면 샤딩 (데이터가 수평으로 분할되고 머신 컬렉션에 분산 됨)이 필요합니다. ACID 준수를 유지하면서 관계형 데이터베이스를 샤딩하는 것은 어려울 수 있습니다.

다음을 위해 관계형 데이터베이스를 사용하십시오.

  • 데이터 무결성이 절대적으로 중요한 상황 (예 : 금융 애플리케이션, 방어 및 보안, 개인 건강 정보)
  • 고도로 구조화 된 데이터
  • 내부 프로세스 자동화

문서 저장소 (MongoDB, Couchbase)

문서 저장소는 JSON, BSON 또는 XML 문서에 데이터를 저장하는 비 관계형 데이터베이스입니다. 유연한 스키마가 특징입니다. 사용자가 데이터를 삽입하기 전에 테이블의 스키마를 선언해야하는 SQL 데이터베이스와 달리 문서 저장소는 문서 구조를 적용하지 않습니다. 문서에는 원하는 데이터가 포함될 수 있습니다. 키-값 쌍이 있지만 속성 메타 데이터를 포함하여 쿼리를 더 쉽게 만듭니다.

강점

문서 저장소는 매우 유연합니다. 반 구조화 및 비 구조화 데이터를 잘 처리합니다. 사용자는 설정 중에 어떤 유형의 데이터가 저장 될지 알 필요가 없으므로 어떤 종류의 데이터가 수신 될지 미리 명확하지 않은 경우 좋은 선택입니다.

사용자는 모든 문서에 영향을주지 않고 특정 문서에서 원하는 구조를 만들 수 있습니다. 다운 타임을 일으키지 않고 스키마를 수정할 수 있으므로 가용성이 높아집니다. 쓰기 속도도 일반적으로 빠릅니다.

유연성 외에도 개발자는 수평 확장이 쉽기 때문에 문서 저장소를 좋아합니다. 수평 확장에 필요한 샤딩은 관계형 데이터베이스보다 훨씬 직관적이므로 문서 저장소는 빠르고 효율적으로 확장됩니다.

약점

문서 데이터베이스는 유연성을 위해 ACID 준수를 희생합니다. 또한 쿼리는 문서에서 수행 할 수 있지만 문서 간에는 불가능합니다.

다음을 위해 문서 데이터베이스를 사용합니다.

  • 비정형 또는 반 정형 데이터
  • 콘텐츠 관리
  • 심층 데이터 분석
  • 신속한 프로토 타입

키-값 저장소 (Redis, Memcached)

키-값 저장소는 각 값이 특정 키와 연결된 비 관계형 데이터베이스 유형입니다. 연관 배열이라고도합니다.

"키"는 값과 관련된 고유 식별자입니다. 키는 DBMS에서 허용하는 모든 것이 될 수 있습니다. 예를 들어 Redis에서 키 man은 최대 512MB의 바이너리 시퀀스입니다.

"값"은 Blob으로 저장되며 미리 정의 된 스키마가 필요하지 않습니다. 숫자, 문자열, 카운터, JSON, XML, HTML, PHP, 바이너리, 이미지, 짧은 동영상, 목록 및 객체에 캡슐화 된 다른 키-값 쌍 등 거의 모든 형식을 취할 수 있습니다. 일부 DBMS는 데이터 유형 지정을 허용하지만 필수는 아닙니다.

강점

이 스타일의 데이터베이스에는 많은 장점이 있습니다. 매우 유연하고 매우 다양한 데이터 유형을 쉽게 처리 할 수 ​​있습니다. 키는 인덱스 검색이나 조인없이 바로 값으로 이동하는 데 사용되므로 성능이 높습니다. 이식성은 또 다른 이점입니다. 키-값 저장소는 코드를 다시 작성하지 않고도 한 시스템에서 다른 시스템으로 이동할 수 있습니다. 마지막으로 수평 확장 성이 뛰어나고 전체적인 운영 비용이 낮습니다.

약점

유연성에는 대가가 따릅니다. 값은 Blob으로 저장되고 그대로 반환 될 수 있기 때문에 쿼리 할 수 ​​없습니다. 이로 인해 값의 일부를보고하거나 편집하기가 어렵습니다. 모든 개체가 키-값 쌍으로 쉽게 모델링되는 것은 아닙니다.

다음을 위해 키-값 저장소를 사용합니다.

  • 권장 사항
  • 사용자 프로필 및 설정
  • 제품 리뷰 또는 블로그 댓글과 같은 비정형 데이터
  • 대규모 세션 관리
  • 자주 액세스되지만 자주 업데이트되지 않는 데이터

넓은 열 저장소 (Cassandra, HBase)

열 저장소 또는 확장 가능한 레코드 저장소라고도하는 넓은 열 저장소는 동적 열 지향 비 관계형 데이터베이스입니다. 때때로 키-값 저장소의 한 유형으로 보이지만 기존 관계형 데이터베이스의 속성도 있습니다.

넓은 열 저장소는 스키마 대신 키 스페이스 개념을 사용합니다. 키 스페이스는 열 패밀리 (테이블과 유사하지만 구조가 더 유연함)를 포함하며 각 열에는 고유 한 열이있는 여러 행이 포함됩니다. 각 행은 동일한 수 또는 유형의 열을 가질 필요가 없습니다. 타임 스탬프는 최신 버전의 데이터를 결정합니다.

강점

이러한 유형의 데이터베이스는 관계형 및 비 관계형 데이터베이스 모두에서 몇 가지 이점이 있습니다. 다른 비 관계형 데이터베이스보다 구조화 된 데이터와 반 구조화 된 데이터를 모두 더 잘 처리하고 업데이트하기가 더 쉽습니다. 관계형 데이터베이스에 비해 수평 확장이 가능하고 규모가 더 빠릅니다.

열 기반 데이터베이스는 행 기반 시스템보다 더 잘 압축됩니다. 또한 대규모 데이터 세트는 탐색하기 쉽습니다. 예를 들어 넓은 열 저장소는 특히 집계 쿼리에 적합합니다.

약점

쓰기는 작지만 비싸다. 대량으로 업데이트하는 것은 쉽지만 개별 레코드를 업로드하고 업데이트하는 것은 어렵습니다. 또한 와이드 컬럼 저장소는 트랜잭션을 처리 할 때 관계형 데이터베이스보다 느립니다.

다음을 위해 넓은 열 저장소를 사용합니다.

  • 속도가 중요한 빅 데이터 분석
  • 빅 데이터에 대한 데이터웨어 하우징
  • 대규모 프로젝트 (이 데이터베이스 스타일은 평균 트랜잭션 애플리케이션에 적합한 도구가 아닙니다)

검색 엔진 (Elasticsearch)

데이터베이스 유형에 대한 기사에 검색 엔진을 포함하는 것이 이상하게 보일 수 있습니다. 그러나 Elasticsearch는 개발자가 검색 지연을 줄이는 혁신적인 방법을 모색함에 따라이 분야에서 인기가 높아졌습니다. Elastisearch는 데이터 저장 및 신속한 검색을 위해 특별히 배열되고 최적화 된 비 관계형 문서 기반 데이터 저장 및 검색 솔루션입니다.

강점

Elastisearch는 확장 성이 매우 뛰어납니다. 전체 텍스트 검색, 제안 및 복잡한 검색 표현식을 포함한 고급 검색 옵션을 통해 유연한 스키마와 빠른 레코드 검색이 특징입니다.

가장 흥미로운 검색 기능 중 하나는 형태소 분석입니다. 형태소 분석은 단어의 어근 형식을 분석하여 다른 형식이 사용 된 경우에도 관련 레코드를 찾습니다. 예를 들어, "유급 일자리"에 대한 고용 데이터베이스를 검색하는 사용자는 "유급"및 "급여"태그가 지정된 직위도 찾습니다.

약점

Elastisearch는 기본 데이터베이스보다 중개 또는 보조 저장소로 더 많이 사용됩니다. 내구성이 낮고 보안이 취약합니다. 고유 한 인증이나 액세스 제어가 없습니다. 또한 Elastisearch는 트랜잭션을 지원하지 않습니다.

Elastisearch와 같은 검색 엔진을 사용하여 다음을 수행하십시오.

  • 더 빠른 검색 결과로 사용자 경험 향상
  • 벌채 반출

최종 고려 사항

일부 응용 프로그램은 하나의 특정 데이터베이스 유형의 강점에 깔끔하게 맞지만 대부분의 프로젝트에서는 둘 이상이 겹칩니다. 이러한 경우 경합 스타일의 특정 데이터베이스가 적합한 후보인지 확인하는 것이 유용 할 수 있습니다. 공급 업체는 데이터베이스를 개별 표준에 맞게 조정할 수있는 다양한 기능을 제공합니다. 이들 중 일부는 보안, 확장 성 및 비용과 같은 요인에 대한 불확실성을 해결하는 데 도움이 될 수 있습니다.