문서 지향 데이터베이스는 관계형 데이터베이스를 대체하기 위한 것입니까?
최근에 저는 MongoDB와 함께 일을 하고 있는데, 저는 그것을 정말 좋아한다고 말해야 합니다.그러나 그것은 완전히 다른 유형의 데이터베이스이며 나는 사용됩니다.특정 유형의 데이터에는 가장 적합하지만 정규화된 데이터베이스에는 적합하지 않을 수 있습니다.
하지만 제가 보기에 이것은 여러분이 가지고 있는 관계형 데이터베이스를 완전히 대체할 수 있고 대부분의 경우 더 나은 성능을 발휘할 수 있습니다. 이것은 정말 놀라운 일입니다.이를 통해 다음과 같은 몇 가지 질문을 하게 됩니다.
- 문서 지향 데이터베이스가 차세대 데이터베이스로 개발되어 관계형 데이터베이스를 완전히 대체하고 있습니까?
- 서로 더 적합한 다양한 데이터를 위해 문서 지향 데이터베이스와 관계형 데이터베이스를 나란히 사용하는 것이 프로젝트에 더 나을 수 있습니까?
- 문서 지향 데이터베이스가 관계형 데이터베이스를 대체하기 위한 것이 아니라면, 관계형 데이터베이스(또는 그 반대)에서 절대적으로 더 나은 데이터베이스 구조의 예를 가진 사람이 있습니까?
문서 지향 데이터베이스가 차세대 데이터베이스로 개발되어 관계형 데이터베이스를 완전히 대체하고 있습니까?
아니요. 문서 지향 데이터베이스(MongoDB 등)는 현대 웹 사이트에서 일반적으로 볼 수 있는 작업 유형(개별 항목 또는 작은 항목 집합의 빠른 검색)에 매우 유용합니다.
하지만 그들은 관계형 시스템과 큰 트레이드오프를 합니다.ACID 규정 준수 없이는 특정 RDBMS를 대체할 수 없습니다.그리고 MongoDB와 같은 시스템을 살펴보면, ACID 규정을 준수하지 않는 것이 그렇게 빠른 이유입니다.
서로 더 적합한 다양한 데이터를 위해 문서 지향 데이터베이스와 관계형 데이터베이스를 나란히 사용하는 것이 프로젝트에 더 나을 수 있습니까?
네. 사실 저는 두 가지를 모두 사용하는 매우 큰 프로덕션 웹 사이트를 운영하고 있습니다.시스템은 MySQL에서 시작되었지만 일부를 MongoDB로 마이그레이션했습니다. b/c 키-밸류 저장소가 필요합니다. MySQL은 150M 레코드에서 하나의 항목을 찾는 데 그다지 능숙하지 않습니다.
문서 지향 데이터베이스가 관계형 데이터베이스를 대체하기 위한 것이 아니라면, 관계형 데이터베이스(또는 그 반대)에서 절대적으로 더 나은 데이터베이스 구조의 예를 가진 사람이 있습니까?
문서 지향 데이터베이스는 "키-값" 및 단순하고 선형적인 "부모-자녀" 관계에 쉽게 포함되는 데이터를 저장하는 데 유용합니다.여기에 있는 간단한 예는 블로그와 위키와 같은 것들입니다.
그러나 관계형 데이터베이스는 "설정 기반"인 경향이 있는 보고와 같은 것에 대해 여전히 강력한 우위를 점하고 있습니다.
솔직히 대부분의 데이터는 문서 지향 데이터베이스에 의해 "처리"되지만 보고는 맵 축소 작업에 의해 업데이트되는 관계형 데이터베이스에서 수행되는 세상을 볼 수 있습니다.
이것은 정말로 목적에 대한 적합성의 문제입니다.
일부 테이블을 함께 조인하고 필터링된 결과 집합을 반환하려면 관계형 데이터베이스에서만 조인할 수 있습니다.놀라운 성능과 엄청난 양의 데이터를 원하는 경우 열 패밀리 또는 문서 지향 데이터베이스가 자체적으로 구축됩니다.
이것은 전형적인 트레이드오프입니다.관계형 데이터베이스는 성능 비용과 함께 제공되는 모든 기능을 제공합니다.다른 모든 기능 목록에 가입, 인덱싱, 스캔 또는 수행할 수 없는 경우 모든 데이터를 볼 필요가 없으므로 중요한 데이터를 처리하는 데 필요한 성능과 분산 기능을 제공합니다.
또한 이 주제에 대해 아옌데 라히엔의 블로그를 팔로우하는 것을 추천합니다.
@소니가 딱 맞습니다.관계형 데이터베이스를 추가할 수도 있습니다.
- 는 예상치 못한 조합으로 정보를 검색하는 데 탁월합니다. 이 경우 별도의 데이터 웨어하우스가 아닌 시간에 민감한 프로덕션 시스템에서 광범위한 보고서가 실행된다는 잘못된 생각이 가끔 발생할 수도 있습니다.
- 관계형 모델의 한계와 SQL의 불완전한 구현을 포함하여 다양한 문제에 대한 직원 및 테스트를 거친 솔루션을 쉽게 찾을 수 있는 성숙한 기술입니다.
여러분이 무엇을 하고 싶은지, 그리고 여러분에게 중요한 자질은 무엇인지 스스로에게 물어보세요.셸 스크립트와 관련된 모든 프로그래밍을 할 수 있습니다.당신은 원하나요?
저는 계속 같은 질문을 합니다. 그게 제가 여기 오게 된 이유죠.저는 MySQL과 MongoDB를 모두 사용합니다(현재는 tandem에 없지만, 아이디어는 있습니다).저는 솔직히 다시는 MySQL을 만지지 못하게 되어 매우 행복하다고 말해야 합니다.물론 "ACID" 규정 준수가 있지만 MySQL로 테이블을 복구해야 하는 경우가 있습니까?데이터베이스가 손상된 적이 있습니까?그것은 일어난다.MySQL에 다른 문제가 있었던 적이 있습니까?잠금 경합이나 데드락은 없습니까?클러스터링에 문제가 있습니까?설정 및 구성이 얼마나 쉬웠습니까?
MongoDB...전원을 켜면 끝입니다.그럼 오토셰이딩입니다.그것은 놀랍도록 간단하고 또한 매우 빠릅니다.생각해 보세요.당신의 시간.
아니요, JOIN은 없지만 데이터 관리 요구사항의 99% 이상을 할인한다는 것은 완전히 잘못된 설명입니다.저는 종종 MongoDB를 설명하려고 할 때 반대를 받습니다. 사람들은 심지어 비웃기도 합니다.그냥 직시하자구요.사람들은 새로운 것을 배우고 싶어하지 않고 그들이 아는 것이 그들이 필요로 하는 전부라고 생각합니다.물론, 남은 인생 동안 MySQL을 사용하여 웹 사이트를 구축할 수 있습니다.효과가 있습니다. 효과가 있다는 것을 알고 있습니다.우리는 또한 그것이 실패한다는 것을 압니다.그렇지 않으면 질문을 하지 않을 것이고 문서 지향 데이터베이스도 그렇게 많이 볼 수 없을 것입니다.우리는 그것이 확장된다는 것을 알고 있지만 그것을 확장하는 것은 골칫거리입니다.
또한 사진에서 트래픽과 확장을 제거합니다.설정을 해제합니다.이제 사용에 초점을 맞추겠습니다.MySQL을 사용할 때의 경험은 무엇입니까?MySQL 아키텍처와 효율적인 쿼리를 얼마나 잘 수행하고 있습니까?EXPLE을 사용하여 쿼리를 검토하는 데 얼마나 많은 시간을 할애하십니까?스키마 다이어그램을 만드는 데 얼마나 많은 시간을 소비합니까? ...저는 그 시간을 되돌리라고 말합니다.그것은 다른 곳에서 쓰는 것이 좋습니다.
그건 제 2센트입니다.저는 MongoDB를 정말 사랑하고 다시는 MySQL을 사용하지 않기를 희망합니다. 그리고 제가 구축하는 웹 사이트의 유형에 대해서는 그럴 필요가 없을 가능성이 매우 높습니다.MongoDB를 통해 MySQL을 사용할 수 있는 시점(솔직히 말해서 데이터가 저장되어 있습니다. 축하합니다. XML 파일을 대량으로 작성할 수 있지만 좋은 생각은 아닙니다.)이 아니라 MySQL을 MongoDB를 통해 언제 사용해야 하는지 알아보려고 노력하고 있습니다.그 동안 저는 MongoDB와 함께 제 일을 하러 가서 두통을 덜 겪을 것입니다.
다중 객체 트랜잭션이 필요하지 않는 한 MongoDB는 특히 웹 애플리케이션 컨텍스트에서 RDMBS를 대체하는 데 유리할 수 있습니다.속도, 체계성 및 문서 모델링은 모두 이 도메인에 도움이 됩니다.
문서 지향 데이터베이스는 다음과 같은 경우에만 유용합니다.
- 계층(트리) 모델을 사용하여 데이터를 더 잘 나타내는 데이터베이스.이는 웹 사이트 데이터베이스에서는 일반적이지 않습니다.
- Facebook 및 Amazon 데이터베이스와 같이 방대한 양의 데이터가 있는 데이터베이스.이 경우 관계형 모델의 이점을 희생해야 합니다.
MongoDB의 주요 특징은 다음과 같습니다.
- 문서 모델(JSON)
높은 수준(실제 개체에 가까운), 더 적은 컬렉션 - 샤딩(선택 사항)
- 프로그래머 친화적인
드라이버, 동일한 데이터 구조 배열/매크로 맵
문서 데이터베이스
문서는 테이블보다 일반적이며 JSON을 테이블에 저장하는 것보다 JSON으로 테이블을 표시하는 것이 훨씬 쉽습니다.
예, 문서 데이터베이스가 표 데이터베이스를 대체할 수 있습니다.
샤딩
샤드 컬렉션의 조인은 모든 데이터베이스에 대해 비용이 많이 듭니다.MongoDB 추가됨$lookup
MongoDB 5.1+에서는 두 컬렉션이 모두 샤드된 경우에도 사용할 수 있습니다.
그러나 분산 데이터베이스의 조인은 느리고 피해야 하므로 관계형 모델링 방식은 피해야 합니다.
샤딩 없음
샤딩을 사용하지 않을 때, MongoDB는 관계형 데이터베이스(특히 ACID 지원 및 $lookup 지원 이후)와 공존하고 중복되어 하드를 대체할 것이며, 현재 MongoDB의 목표처럼 보이지 않습니다.
따라서 전체적으로 MongoDB는 관계형 데이터베이스가 수행하는 작업을 수행할 수 있을 것으로 보이지만, 현재로서는 이를 대체할 수 없습니다.그 반대는 사실이 아닙니다. 관계형 데이터베이스가 MongoDB처럼 작동하려고 하면 훨씬 더 큰 문제가 발생합니다.
오류, 문서 데이터베이스에 조인이 없습니다.이는 데이터 관리 요구사항의 99% 이상을 충족하는 데 상당한 도움이 됩니다.
Matthew Flashchen이 코멘트에서 지적했듯이, 심지어 데스크톱에서도 SQLite와 같은 데이터베이스는 기존에 고유 파일 형식이나 XML을 사용하던 영역에 SQL 의미론을 도입하고 있습니다.
언급URL : https://stackoverflow.com/questions/2866086/are-document-oriented-databases-meant-to-replace-relational-databases
'programing' 카테고리의 다른 글
Python에서 구별되는 요소만 포함하는 목록을 만드는 방법은 무엇입니까? (0) | 2023.07.13 |
---|---|
날짜별 주문 처음부터 마지막 날짜까지 NULL 표시 (0) | 2023.07.13 |
Oracle 세션과 연결 풀 간의 관계 (0) | 2023.07.13 |
$ 또는 $elemMatch의 문 (0) | 2023.07.13 |
SQL LIKE 문에서 변수 사용 (0) | 2023.07.13 |