Android

카우치베이스 모바일로 생활의 간소화

Simplicity is the Ultimate Sophistication - L. Da Vinci

사진 제공 웨슬리 프라이어 라이선스에 따른 허가 CC BY-SA 2.0

 

tl;dr

카우치베이스 모바일 는 사용하기 쉽고 완전히 독립적으로 작동하지만 필요할 때 엔터프라이즈급 확장 기능을 제공합니다. 꼭 사용해 보세요.

처음에

이 글은 제가 이곳에 올리는 두 번째 공식 게시물입니다. 카우치베이스. 앞으로 좀 더 실용적인 문제에 대해 블로그에 포스팅할 예정입니다. 하지만 지금은 조금 더 높은 수준의 담론에 빠져보려고 합니다.

저는 오랫동안 프로그래밍을 해왔습니다. 지난 몇 년 동안 저는 모바일에 정말 빠져들었지만 다른 분야에서도 많은 일을 해왔습니다.

그래도 Couchbase에 입사하기 전에는 데이터베이스에 대해 평균 정도의 이해도를 가지고 있었습니다. 아니, 관계형 데이터베이스라고 해야 할까요. 6차 정규형을 달성하는 것이 왠지 멋져 보였지만 실제로 걱정할 필요는 없었습니다.

그럼에도 불구하고 개발을 위해서는 관계형 데이터베이스(따라서 모바일용 SQLite)가 가장 적합한 방법인 것처럼 보였습니다.

이 글에서는 제가 마음을 바꾼 이유와 여러분도 그렇게 해야 한다고 생각하는 이유에 대해 이야기해 보려고 합니다.

무대 설정

몇 년 전만 해도 관계형 데이터베이스는 다른 기술에 비해 거의 모든 면에서 우위를 점하고 있었습니다. 실제로 언어의 이름인 SQL이 데이터베이스와 거의 동의어가 될 정도로 말이죠.

웹과 모바일의 폭발적인 성장으로 세상은 많이 변했습니다. 여기에는 데이터의 종류와 데이터에 액세스하는 방법도 포함됩니다. 데이터베이스도 변화해야 했습니다. 이것이 바로 NoSQL의 탄생 배경입니다.

여기서는 NoSQL에 대한 더 큰 그림은 다루지 않겠습니다. 참고로, 다음은 NoSQL이 무엇인지 이해하는 데 도움이 되는 몇 가지 리소스입니다.12관계형 데이터베이스와 비교하는 방법34및 고급 주제5. 물론 더 자세히 알아볼 수 있는 것이 많습니다.

왜 카우치베이스 모바일인가?

Couchbase Mobile(또는 CBM)은 독립형 임베디드 데이터베이스를 포함한 완전한 패키지입니다. (독립형 부분은 실제로 Couchbase Lite라고 불립니다.) CBM의 핵심 아키텍처는 NoSQL 진영에 속합니다.

모바일 앱에 CBM을 가장 먼저 선택해야 한다고 생각하는 두 가지 강력한 이유, 즉 사용 편의성과 아키텍처 유연성에 대해 집중적으로 설명하고자 합니다. 프로젝트 시작부터 CBM을 사용하는 측면에 대해 자세히 설명하겠습니다. 성숙한 앱에서도 동일한 이유로 CBM으로 전환해야 하는 강력한 이유가 됩니다.

사용 편의성

iOS와 Android는 모두 표준 데이터베이스로 SQLite를 사용합니다. SQLite는 훌륭한 오픈 소스 관계형 데이터베이스입니다. 다만 사용하기가 쉽지 않을 뿐입니다.

Android 개발자 포털로 이동하여 SQLite 사용에 대한 최신 문서를 살펴봤습니다. 다음은 인트로 이후 첫 번째 단락의 시작 부분입니다:

SQL 데이터베이스의 주요 원칙 중 하나는 데이터베이스가 어떻게 구성되어 있는지에 대한 공식적인 선언인 스키마입니다.

다음은 데이터베이스를 만들기 위한 코드 예제입니다:

재미있죠?

오해하지 마세요. Android는 멋진 기술 번들입니다. SQLite는 동급 최강의 기술입니다. 하지만 앱은 데이터를 저장해야 합니다. 그리고 프로젝트를 시작하려고 할 때 스키마 설계에 대해 고민하고 SQL 문을 문자열에 채우는 데 시간을 보내고 싶지 않습니다.

이와는 대조적으로, Couchbase Mobile을 시작하려면 대략 이렇게 해야 합니다:

다음은 몇 가지 새로운 데이터를 저장하는 코드(상용구 제외)입니다:

완전히 공정한 비교는 아닙니다. Google 샘플에는 작업을 제대로 수행하는 데 필요한 몇 가지 추가 비트가 있습니다. 반면에 Couchbase 샘플에는 이미 데이터베이스에 데이터가 들어 있습니다!

진짜 요점은 이 모든 것이 얼마나 간단한지와 관련이 있습니다. 코드의 자연 구조(이 경우 Java 객체)를 데이터베이스에 필요한 구조에 매핑하는 것이 훨씬 더 쉽습니다. 매핑이 쉽기 때문에 CBM이 다른 많은 세부 사항도 대신 처리해 줍니다. 위의 코드 스니펫은 Java 객체를 파일로 직렬화하는 데 필요한 것보다 훨씬 더 많은 시간이 걸리지 않습니다!

카우치베이스는 문서 데이터베이스로, 완전한 반정형 객체를 기본 데이터 청크로 저장합니다(테이블의 행이 아닌 반정형 객체). 더 정확히 말하면, Couchbase는 JSON 객체를 저장합니다. JSON은 가볍고 유연합니다. 배열을 처리합니다. 아무것도 깨뜨리지 않고 개체를 확장할 수 있습니다. 그냥 더 좋습니다.

유연하지 않은 테이블을 서로 붙여서 복잡한 객체에 매핑하려고 하는 것과 대조해 보세요. SQL로 직접 하든, 라이브러리를 가져와 도움을 받든, 보기 좋은 모습은 아닙니다.

유연성

카우치베이스 모바일은 구조와 확장성이라는 두 가지 중요한 측면에서 유연성을 제공합니다.

구조

CBM은 "스키마가 없습니다." 이는 사용 편의성에서도 잘 드러납니다. 코드 샘플에서 문서 구조가 암시적으로 생성되는 것을 볼 수 있습니다. 테이블을 정의하거나 열 이름을 지정할 필요가 없습니다.

스키마가 없다는 것은 마이그레이션의 번거로움 없이 데이터 구조를 쉽게 변경할 수 있다는 의미이기도 합니다.

이러한 점을 설명하기 위해 각 사람마다 하나의 전화번호가 포함된 사용자 프로필로 시작한다고 가정해 보겠습니다. 두 그림은 이 프로필이 SQLite 테이블과 JSON 문서로 어떻게 보이는지 보여줍니다.

Single relational table example
Simple JSON document
요구 사항이 변경되었다고 가정해 보겠습니다. 두 개 이상의 전화번호를 포함할 수 있도록 하려고 합니다. 관계형인 경우에는 이 다이어그램에 표시된 것과 같은 방식으로 마이그레이션하고 싶을 것입니다:
Array data normalized into two tables

그 전환을 관리하는 것에 대해 잠시 생각해 보세요. 코드가 어떻게 보일지 보여드리려고 하지도 않겠습니다.

이와 대조적으로 JSON을 사용하면 다음과 같은 다이어그램이 나타납니다:

JSON document containing an array

전화번호 입력란을 배열로 덮어쓰기만 하면 됩니다. 이전 버전과의 호환성도 쉽게 처리할 수 있습니다. 전화번호 입력이 단일 값인지 배열인지 런타임에 간단히 확인할 수 있습니다.

확장성

지금까지 말씀드린 모든 기능은 기기에서 완전히 독립적으로 작동합니다. 이는 강력하고 많은 용도로 사용할 수 있습니다. 일부 모바일 데이터베이스는 여기서 멈춥니다. 독립형으로만 작동합니다.

데이터베이스를 사용한다면 백엔드가 있으면 좋을 것 같습니다. 아니면 성공에 결정적인 역할을 할 수도 있습니다. 장치를 쉽게 전환할 수 있도록 백업을 제공하는 것만으로도 충분합니다.

백엔드가 필요해지기 시작하면 몇 가지 새로운 문제에 대해 걱정해야 합니다. 마지막으로 카우치베이스 모바일에 대한 요점을 말씀드리겠습니다. CBM에는 기기 외부 사용을 위한 많은 기능이 있습니다.

제가 가장 매력적이라고 생각하는 부분으로 돌아가서, 여기서 가장 눈에 띄는 우려는 확장성입니다. 10,000명의 사용자를 처리하는 데 비용이 얼마나 들까요, 아니면 10만 명이나 100만 명까지 처리하는 데 비용이 얼마나 들까요? 아키텍처가 많은 재작업 없이 오프디바이스 작업도 지원할 수 있을까요?

CBM에는 동기화 게이트웨이라는 것이 포함되어 있습니다. 동기화 게이트웨이(SG)는 카우치베이스 라이트와 함께 사용하는 것만으로도 몇 가지 멋진 용도가 있습니다. 정말 빛을 발하는 곳은 다음과 같은 복제 엔드포인트입니다. 카우치베이스 서버. Couchbase Server는 이미 주요 설치에 사용되고 있는 엔터프라이즈급 고강도 NoSQL 패키지입니다. 동기화 게이트웨이에 대해 자세히 알아보세요. 여기. 다음 이미지를 통해 구성 요소가 어떻게 결합되는지 알 수 있습니다.

Three components: Couchbase Lite, Sync Gateway, and Couchbase Server

결론부터 말하자면, CBM은 당신을 구석에 몰아넣지 않습니다. 시작은 쉬우며, 진행 상황에 따라 유연하게 대처할 수 있는 CBM을 사용하면 됩니다.

마무리

CBM은 문서 기반의 확장성이 뛰어난 최신 모바일용 NoSQL 솔루션입니다.

  • CBM은 디바이스 내에서 독립적으로 잘 작동합니다.

  • 카우치베이스는 원하는 경우 완전한 백엔드를 제공합니다.

  • 데이터 형식은 기본 표현에 쉽게 매핑됩니다.

이를 통해 거의 모든 프로젝트에 더 쉽게 사용할 수 있는 솔루션을 제공합니다. 사용자 환경설정을 위한 편리한 저장소로 활용하세요. 앱과 함께 정적 데이터 번들을 제공하는 데 사용하세요. 또는 수백만 명의 활성 사용자를 대상으로 촬영하고 싶을 때 사용하세요. 단순함을 즐기면서 필요에 따라 유연하게 조정하고 확장할 수 있습니다.

포스트 스크립트

제가 설명한 개념의 이면에는 많은 세부 사항이 있습니다. 이 글에서는 더 많은 참고 자료를 활용했지만 추가 탐색을 위해 몇 가지 참고 자료를 포함했습니다.

더 많은 리소스를 확인하세요. 개발자 포털 트위터에서 팔로우하세요 카우치베이스 개발. 에 질문을 게시할 수 있습니다. 포럼. 그리고 다음에도 적극적으로 참여합니다. 스택 오버플로.

다음 주소에서 저를 개인적으로 팔로우할 수 있습니다. 호드그릴리

여러분과의 대화를 기대하겠습니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

Author

Posted by 호드 그릴리

호드 그레이리는 실리콘밸리에 거주하는 카우치베이스의 개발자 옹호자입니다. 그는 소프트웨어 엔지니어 및 엔지니어링 관리자로서 20년 이상의 경력을 보유하고 있습니다. 그는 전산 물리학 및 화학, 컴퓨터 및 네트워크 보안, 금융, 모바일 등 다양한 소프트웨어 분야에서 일해 왔습니다. 2016년 카우치베이스에 합류하기 전에는 삼성에서 모바일 개발자 관계를 이끌었습니다. 컬럼비아 대학교에서 화학 물리학 박사 학위를 받았습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.