맨헤 #1: Realm과 Sync

이승원·2022년 8월 3일

Goplan

목록 보기
2/4

안녕하세요, 고딕입니다.

밑밥

뭐, 백 처음 하시는 분들은 다 RDBMS로 시작하셨겠지만, 저는 놀랍게도 여러분들과 같은 RDBMS로 시작했답니다. 하핫 ㅋ 그래서 몽고디비가 어려워요. 용어가 많으니 머릿속에 다 지나쳐 가는 것 같아서 이렇게 정리해보는 거죠. 뭐 여하튼 시작하겠습니다.

MongoDB가 뭐냐? 뭐 여러 가지로 정의할 수 있겠습니다만, 가방끈이 짧은 저로서는 BSON 타입으로 데이터를 저장하는 데이터베이스라고 정의하겠습니다. BSON이란, JSON을 바이너리 형식으로 저장하는 겁니다. 밑에가 그 예십니다. Binary JSON을 줄여서 BSON이라고 하는 거죠.

{ yourname : 'Kim SaKaShi' }

자, 이제 이 MongoDB를 구체적으로 어떻게 해볼 거냐? Atlas라는 MongoDB 만든 회사에서 만들어둔 서비스를 이용해서 데이터베이스를 만들고 프론트와 직접 연결해볼 겁니다. (원래, backend server를 만들어서 해야 하는 것으로 알고 있습니다만, 저는 몰상식한 사람이라 그냥 생각나는 대로 합니다.) 그럼 이 Atlas라는 건 또 뭐냐? 한 마디로 멀티 클라우드 데이터 서비스입니다. MySQL에 워크벤치가 있다면, MongoDB에는 Atlas가 있는 거죠.

근데 우리가 이 Atlas 사용법을 알기 전에, 먼저 알아야 할 게 있습니다. 물론, 환경설정부터 하는 것도 중요하지만, 솔직히 말해서 기본 데이터베이스 저장 방식도 잘 모르는데, 환경설정의 무엇을 이해할 수 있겠습니까. 환경설정 이해 못하면, 데이터를 (효율은 둘째 치고) 효과적으로 다룰 수 있겠습니까.

본론

여하튼 이 글에서는 Realm과 Sync에 대해서 알아볼 겁니다. (이 글의 모든 자료는 mongoDB 공식 홈페이지 및 각 자료의 공식 홈페이지에 근거합니다. 귀찮아서 URL은 따로 안 넣을게요.

Realm은 데이터베이습니다. 원래 뜻이 영역, 지역, 왕국이라는 뜻인데, 왕국이 위계질서가 잘 잡혀 있잖아요. 그래서 이 걸 가져와 쓴 것 같습니다만, 무슨 얘기냐 하면, Realm 형식의 데이터 구조는 데이터의 흐름을 제어해서, 데이터 간 conflict가 일어나지 않도록 하게 한다고 합니다. 또한 Local 데이터를 우선적으로 처리해서, ORM 없이 데이터에 직접적으로 접근하거나 사용중인 데이터를 저장할 수 있다고 합니다.

Realm Database is an offline-first mobile object database in which you can directly access and store live objects without an
ORM.
Live Objects always reflect the latest state of data in the database, which simplifies keeping your UI in sync with changes to your data.
Atlas Device Sync synchronizes data between client-side realms and the server-side MongoDB Atlas cluster linked to your app. Realm Database synchronizes data in a background thread, abstracting away network usage so you don't have to worry about latency or dropped connections.
The Realm SDKs integrate with Atlas App Services to easily and securely work with your data in Atlas.

또 덧붙여서 동기화에 대해서 알아보려 하는데요, 동기화는 제가 대충 알고 있는 부분이라, 명확한 정리가 필요할 거 같아서 따로 정리해봅니다. 네이버 국어사전에 따르면 동기화란 다음과 같습니다.

작업들 사이의 수행 시기를 맞추는 것. 사건이 동시에 일어나거나, 일정한 간격을 두고 일어나도록 시간의 간격을 조정하는 것을 이른다.

해외에서도 비슷한 방식으로 정의하고 있는 것 같습니다.

If two things are in/out of sync, they reach the same or related stage at the same time/at different times.

뭐, 둘 다 추상적인 정의긴 하지만 저는 추상적인 개념을 stage로 구체화(뭔가 stage라고 하면 무대가 떠오르잖아요?)시켰다는 점에서 저는 후자의 정의가 더 와닿는 거 같습니다.

여하튼 쉽게 말하자면, 동기화란 작업들의 수행시기를 맞추어 일정한 기능을 수행하는 것이라고 할 수 있겠습니다.

그래서

다음 시간에는 Realm React Native SDK에 대해서 알아보도록 하겠습니다. 사실 샘플 데이터를 이용하려고 하기만 했었는데, 생각보다 복잡해져서 이게 맞는 건가 싶긴 하네요.. 실무에서 이러면 안 되긴 하지만, 지금은 공부하는 시간이니 막 때려보기보다는 천천히 시간을 들여 정복해나가도록 해보죠.

profile
개발 초보

0개의 댓글