숙제에 대한 아이디어 공유 시간


Q. 여러분들이 데이터베이스 엔진을 만드는 프로그래머라고 가정을 합시다. 이 데이터베이스 엔진에는 이중화가 자체적으로 지원이 필수적이며 여러분의 상사가 이중화 기능을 구현해달라고 합니다. 어떤 논리로 이중화 기능을 구현해볼지 생각하고 여러분들의 아이디어를 공유해주세요!

틀려도 됩니다. 말이 안되어도 전혀 상관없습니다! 부담없이 자유롭게 아이디어를 공유해주세요! 먼저 발표를 해주셔도 좋지만 참여도가 적으면 사다리를 타서 걸리는 분들은 강제로 발표하게끔 하겠습니다.

데이터베이스 모델링


보통의 백엔드 엔지니어는 주어진 데이터베이스 환경에서 SQL을 이용해 질의를 하는 것이 주요 업무입니다만 훌륭한 백엔드 엔지니어는 이러한 업무는 당연하고 클라이언트 요구사항에 맞추어 데이터베이스 환경을 설계할 수 있어야 합니다.

데이터베이스 환경을 설계한다는 얘기를 좀 더 구체적으로 해볼까요? 이러한 상황이 있다고 가정합시다.

데이터베이스 환경을 설계해야 하는 경우를 요약해서 말하면 클라이언트의 요구사항이 접수되었고 그 요구사항을 구현하기 위해서 데이터베이스를 사용해야 할 때라고 할 수 있겠습니다.

요구사항이라는 것은 현실이며 데이터베이스 모델링은 현실에 직면한 문제를 추상화해서 푸는 행위라고 생각하면 좋습니다. 현실에서의 다소 복잡한 관계들을 데이터베이스 내에서는 좀 더 쉽고 가볍게 풀 수 있는 장점이 있습니다.

모델링을 할 때는 단순히 데이터베이스 스키마만 정의하는게 끝이 아니라 타겟 유저 및 추상화 수준에 따라 여러 종류의 스키마가 정의되어야 합니다.