NoSQL에 대한 오해는 NoSQL 자체만큼이나 오래 전부터 존재해 왔습니다. 다양한 관점을 접하는 것은 언제나 좋은 일이기 때문에 이 블로그 시리즈는 계속됩니다. 특히 세계 최고의 문서 데이터베이스 회사 중 두 곳과 관련하여 NoSQL에 대한 오해에 대해 논의해 보겠습니다: 카우치베이스와 몽고DB입니다.

이 게시물에서는 다시 한 번 카우치베이스와 NoSQL에 대한 몽고의 오해에서 가장 많이 듣는 오해와 오해 중 하나는 개발자 커뮤니티 NoSQL 전반에 대해 설명합니다.

이 시리즈의 이전 포스팅도 꼭 확인하시기 바랍니다:

NoSQL은 안전한가요?

초창기(심지어 비교적 최근의 일이지만) NoSQL에는 눈에 띄고 주목할 만한 보안 문제가 몇 가지 있었습니다. 다음은 몇 가지입니다:

NoSQL에 관한 뉴스를 무심코 읽은 사람이라면 누구나 보안에 관한 한 NoSQL이 서부 개척시대라는 인상을 받을 수 있습니다. 한동안은 그랬죠. "시작하기 쉽다"는 말은 곧 "기본적으로 안전하지 않다"는 뜻이었습니다.

하지만 NoSQL이 "보안 없음"을 의미할 필요는 없습니다. 카우치베이스 카펠라와 AWS, Microsoft와 같은 클라우드 서비스 제공업체는 보안을 최우선 과제로 삼기 위해 많은 노력을 기울여 왔습니다.

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++의 시작/완료/롤백 기능.

그리고 복잡한 샤딩 시나리오는 이 방정식에 포함되지도 않습니다, 몽고와 달리.

요약

    • 최신 NoSQL은 안전합니다.
    • 최신 NoSQL은 데이터를 잃지 않습니다.
    • 최신 NoSQL은 ACID 트랜잭션을 지원합니다.

다음과 같은 경우 괜찮습니다. 기타 이러한 기능을 지원하지 않는 NoSQL 데이터베이스: 틈새 전문화를 위한 충분한 여지가 있습니다. 하지만 Couchbase의 경우, 이러한 기능은 대규모 조직에서 중요한 사용 사례에 사용하는 성숙한 기능입니다.

따라서 지난 몇 년 동안 NoSQL을 확인하지 않았다면 지금이 바로 확인해 볼 때입니다. 카우치베이스 카펠라 무료 체험판 신청하기. 신용 카드가 필요하지 않습니다.

다음 단계는 무엇인가요?

다음 글에서는 더 많은 오해를 파헤쳐 보겠습니다. NoSQL은 정말 확장성이 뛰어날까요? 가장 인기 있는 NoSQL은 무엇이며, 그 이유는 무엇일까요?

더 자세히 논의하고 싶으신가요? 언제든지 카우치베이스 디스코드 를 통해 Couchbase 직원 및 커뮤니티와 더 많은 대화, 질문, 답변을 나눌 수 있습니다.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기