알고리즘을 쉽게 풀고 싶다 / 데이터베이스는 왜 사용할까?

shockwave·2024년 9월 4일

TIL

목록 보기
21/49

알고리즘 문제를 풀 때마다 어떤 의도로 변수나 배열을 만들어야할까? 항상 고민되는 부분인데 조금 체계적으로 생각해보고 싶었다.

알고리즘 문제를 풀 때
객체 또는 배열을 만들거나 변수를 만드는 데에는 이유가 있어야 한다.
그냥 만들어놓고 아 이렇게 해볼까 저렇게 해볼까 보다는 확실한 이유와 과정을 생각하고 만드는 것이 의도를 명확하게 담을 수 있고 생각을 체계적으로 정리해가면서 코드를 써내려가기에 좋다.

배열을 만들 때는 어떤 이유가 필요할까?
단순하게 생각해보면, 배열은 어떠한 값들을 저장하기 위함이다.

어떠한 단순한 비교군을 사용하는 차등점수가 기록된 명예의 전당이라는 것이 있고 k개의 리스트 중에서 최하등급을 매 회 선정하여 기록하는 배열을 만든다고 생각해보자.
함수를 만든다고 가정할 때, 입력되는 것을 제외하고 기능을 만들기 위해 필요한 배열은 몇 개일까?
답은 2개이다.
k개의 차등점수를 담은 [명예의 전당]에 대한 배열 1개와
그 [명예의 전당] 배열에서 최하점수를 매회 선정하여 기록하는 배열 1개가 필요하다.

이처럼 확실한 의도를 갖고 만드는 데이터(객체, 배열, 주소)는 처음 배열을 선언 및 초기화 했을 때 작성자로부터 굉장히 강력한 신뢰를 받는 데이터가 될 수 있다.


데이터 베이스를 사용하는 이유가 뭘까?

저번 주부터 네트워크를 공부하면서 데이터베이스를 어떻게 사용해야할 지를 공부하기 전에 왜 데이터베이스를 사용해야하는지를 알고 싶었다.

서버에 문제가 생겨 재시작 해야 할 때 서버를 종료하면 임시 저장소에 보관된 메모리가 사라지는 "인-메모리"방식일 경우 기록했던 데이터를 전부 다 다시 기록해야하는 문제점이 발생할 수 있다.
이 때, 모든 데이터를 보관해줄 수 있는 장소가 있다면 서버가 재시작되는 불상사가 일어나더라도 "백업"가능한 장소가 있기에 문제가 발생하지 않을 것이다.

그 "장소"가 "데이터 베이스"이다.

또한, 데이터베이스를 관리해주는 시스템을 "DBMS(DataBase Management System)"이라고 부른다.

데이터베이스라는 커다란 창고에 DBMS라는 창구가 있는 것이다.

관계형 데이터베이스 - RDB (Relational DataBase)

  • 데이터 간의 관계를 맺어 무결성과 정합성이 높은 "모순이 없는 데이터"를 유지할 수 있도록 도와주는 데이터베이스 / 데이터의 형식이 미리 지정되어있다.

비관계형 데이터베이스 - NoSQL (Non-relational DataBase - Non Structured Query Language)

  • 데이터의 형식이 고정되어 있지 않아 유연한 확장이 가능하다.
    SNS, 빅데이터와 같이 다양한 형식의 데이터를 빠르게 저장하고 검색해야 할 때 사용된다.
profile
생각을 많이. 입은 무겁게. 심장은 항상 열심히 뛰는 사람이 되자.

0개의 댓글