NoSQL에 대한 오해는 NoSQL 자체만큼이나 오래 전부터 존재해 왔습니다. 다양한 관점을 접하는 것은 언제나 좋은 일이기 때문에 이 블로그 시리즈는 계속됩니다. 특히 세계 최고의 문서 데이터베이스 회사 중 두 곳과 관련하여 NoSQL에 대한 오해에 대해 논의해 보겠습니다: 카우치베이스와 몽고DB입니다.
이 게시물에서는 다시 한 번 카우치베이스와 NoSQL에 대한 몽고의 오해에서 가장 많이 듣는 오해와 오해 중 하나는 개발자 커뮤니티 NoSQL 전반에 대해 설명합니다.
이 시리즈의 이전 포스팅도 꼭 확인하시기 바랍니다:
NoSQL은 안전한가요?
초창기(심지어 비교적 최근의 일이지만) NoSQL에는 눈에 띄고 주목할 만한 보안 문제가 몇 가지 있었습니다. 다음은 몇 가지입니다:
NoSQL에 관한 뉴스를 무심코 읽은 사람이라면 누구나 보안에 관한 한 NoSQL이 서부 개척시대라는 인상을 받을 수 있습니다. 한동안은 그랬죠. "시작하기 쉽다"는 말은 곧 "기본적으로 안전하지 않다"는 뜻이었습니다.
하지만 NoSQL이 "보안 없음"을 의미할 필요는 없습니다. 카우치베이스 카펠라와 AWS, Microsoft와 같은 클라우드 서비스 제공업체는 보안을 최우선 과제로 삼기 위해 많은 노력을 기울여 왔습니다.
-
- 카우치베이스 카펠라 보안 및 데이터 보호이 백서는 보안 및 데이터 보호를 가장 높은 수준부터 구현 세부 사항까지 다룹니다.
- 카펠라는 또한 SOC2 규정 준수 인증.
- 카펠라 클라우드 제공업체의 기본 암호화를 자동으로 사용합니다..
- 세분화된 액세스 관리, 비공개 네트워킹, 다단계 인증, 모니터링 및 알림은 포함된 보안 기능 중 일부에 불과합니다.
Capella 대신 Couchbase Server를 실행하고 관리하려는 경우에도 모든 보안 기능을 계속 이용할 수 있습니다.
NoSQL로 인해 데이터가 손실되나요?
이와 같은 헤드라인을 본 적이 있을 것입니다: 젭슨, 몽고DB의 데이터 일관성 주장에 이의를 제기하다.
많은 NoSQL 시스템은 지연 시간을 줄이고 성능을 향상시키기 위해 데이터 작업과 여러 가지 절충점을 만듭니다(애초에 사람들이 NoSQL로 전환하는 주요 이유 중 하나). 이는 제대로 해결하기 어려운 문제이며, 과거에는 데이터 손실로 이어질 수 있는 엣지 케이스 문제가 발생하기도 했습니다. '최종적인 일관성'도 많은 사람들이 망설이는 이유 중 하나입니다.
이러한 절충안은 마케팅 벤치마크에서 보기 좋은 더 나은 수치를 얻기 위해 마련되었습니다. 하지만 실제로는 Couchbase와 같은 최신의 성숙한 NoSQL이 제공하는 것이 있습니다: 제어.
-
- 카우치베이스는 일관성이 강합니다.
- 카우치베이스는 젭센과 함께 완벽한 테스트를 거쳤습니다.
- 래프트 는 메타데이터 합의에 사용됩니다.
- 극히 드물게 발생하는 엣지 케이스에 대한 위험을 줄이고 싶다면 제어할 수 있습니다.
더 긴 이야기:
-
- 하나의 Couchbase 클러스터 내의 데이터 저장소는 매우 일관성이 있습니다. 데이터를 저장하면 메모리에 저장되고, 그 다음에는 디스크에 저장되고, 그 다음에는 다른 노드에 저장됩니다(자동 및 비동기식으로).
- 비동기로 인한 엣지 케이스가 걱정된다면 더 강력한 내구성 요구 사항. 이렇게 할 수 있습니다. 작업당 원하는 경우.
- Couchbase의 쿼리 인덱스는 (결국) 비동기식으로 업데이트되므로, 데이터를 생성/업데이트할 때 인덱스를 기다리는 속도 저하를 방지할 수 있습니다.
- 하지만 쿼리할 때 다음을 지정할 수 있습니다. 일관성 수준에서 다시 쿼리당 기준으로 합니다. 최대 마이크로초 단위의 쿼리 결과를 읽어야 하는 경우 지연 시간을 절충할 수 있습니다.
클러스터가 두 개 이상인 경우 데이터 저장소 데이터 센터 간 동기화 는 결국 일관성을 유지합니다. 즉, 미국 동부 지역의 문서를 변경하면 몇 마이크로초 후에 미국 서부 지역의 문서가 일치하는 문서로 업데이트됩니다. (그리고 충돌 자동으로 관리할 수 있습니다). 이 만 는 여러 데이터 센터를 사용하는 경우에 적용됩니다.
항상 다음과 같은 엣지 케이스가 있습니다. any 데이터베이스를 사용할 수 있습니다. 하지만 최신 Couchbase NoSQL에는 합리적인 기본값이 기본으로 제공되며, 필요할 때 다양한 옵션을 선택할 수 있습니다.
NoSQL은 "No ACID"를 의미하나요?
다시 말하지만, 처음에는 짧은 지연 시간, 고성능 읽기 및 쓰기를 제공합니다, 산 거래 는 NoSQL 초창기에는 존재하지 않았습니다. 관계형 데이터베이스 사용자에게 이것은 종종 위험 신호로 여겨졌습니다.
하지만 과거에 언급된ACID는 트랜잭션에만 적용되는 것이 아니며, 많은 NoSQL 데이터베이스가 ACID 보증을 제공할 수 있습니다.
즉, 말하자면, 다중 문서 ACID 트랜잭션 는 버전 6.5부터 Couchbase Server에서 사용할 수 있었습니다.
몽고에서 비교 페이지에 따르면 Couchbase의 ACID 트랜잭션은 "매우 제한적"이라는 특징이 있습니다. 이보다 더 자세한 내용은 없으므로, 처음에는 Java 개발자(그리고 더 확장하면 Scala/Kotlin)에게 미리 보기로 제공되는 트랜잭션에 대한 오래된 참조라고 추측할 수 있을 뿐입니다. 하지만 그 동안 ACID 트랜잭션은 .NET, Node, PHP, Go, Python 및 C SDK에 추가되었으며, 앞으로 더 추가될 예정입니다. 뿐만 아니라, ACID 트랜잭션은 다음에서 사용할 수 있습니다. 새로운 SQL++의 시작/완료/롤백 기능.
1 2 3 4 5 6 7 |
시작 트랜잭션; 선택 COUNT(*) FROM 공항 어디 도시='Stanted'; 업데이트 공항 SET 도시='London' 어디 faa='STN'; 세이브포인트 s1; 삭제 FROM 공항 어디 도시='London' AND faa != 'STN'; 롤백 트랜잭션 TO 세이브포인트 s1; 커밋 트랜잭션; |
그리고 복잡한 샤딩 시나리오는 이 방정식에 포함되지도 않습니다, 몽고와 달리.
요약
-
- 최신 NoSQL은 안전합니다.
- 최신 NoSQL은 데이터를 잃지 않습니다.
- 최신 NoSQL은 ACID 트랜잭션을 지원합니다.
다음과 같은 경우 괜찮습니다. 기타 이러한 기능을 지원하지 않는 NoSQL 데이터베이스: 틈새 전문화를 위한 충분한 여지가 있습니다. 하지만 Couchbase의 경우, 이러한 기능은 대규모 조직에서 중요한 사용 사례에 사용하는 성숙한 기능입니다.
따라서 지난 몇 년 동안 NoSQL을 확인하지 않았다면 지금이 바로 확인해 볼 때입니다. 카우치베이스 카펠라 무료 체험판 신청하기. 신용 카드가 필요하지 않습니다.
다음 단계는 무엇인가요?
다음 글에서는 더 많은 오해를 파헤쳐 보겠습니다. NoSQL은 정말 확장성이 뛰어날까요? 가장 인기 있는 NoSQL은 무엇이며, 그 이유는 무엇일까요?
더 자세히 논의하고 싶으신가요? 언제든지 카우치베이스 디스코드 를 통해 Couchbase 직원 및 커뮤니티와 더 많은 대화, 질문, 답변을 나눌 수 있습니다.