본문 바로가기
▶ Project_Python/◾ DB

파이썬 프로젝트를 진행할 때 필요한 DB(database) 어떤 것으로 선택하는 것이 좋을까.

by ★→←★ 2021. 10. 3.
반응형

개인이 파이썬(python)을 이용해 프로젝트를 진행하는 것은 그렇게 거창한 것이 아닐 수 있습니다. 단순하게는 크롤러 또는 스크래이핑을 위한 간단한 코딩을 진행하는 경우도 있습니다. 휘발성이 강한 활용, 다시 말해 일회용으로 이용하는 경우라면 db(database)가 필요하지 않을 수 있지만, 데이터를 저장하는 경우라면 DB를 활용하는 것이 좋습니다.

 

개인적으로 생각하는 DB의 활용.

가장 흔히 생각할 수 있는 활용법은 정보를 저장하는 공간이며, 보관 관리를 통해 필요한 상황에 적절한 정보를 제공하는 저장장치를 생각할 수 있습니다. 여기서 주안점이 되는 부분은 '저장', 그리고 '제공'의 부분이라 할 수 있습니다.

 

이 부분은 가장 기본적이고 중요한 부분이라 할 수 있습니다. 웹을 이용해 특정 서비스를 제공할 때, 유저의 정보를 보관하는 공간으로 활용할 수 있기 때문에 유료 혹은 무료 서비스를 진행하는 과정에서 DB의 관리는 무엇보다 중요합니다.

 

여기서 한 걸음 더 나아가 프로그램이 구동되는 과정에서도 DB는 상당히 중요한 부분으로 작용하게 됩니다. 단일 코드를 이용한 획일적인 작업을 진행하는 과정이든 여러 클래스와 파일을 연동하여 구동되는 코딩이든 상관없이 경우에 따라서 특정 명령체계, 변화되는 변숫값을 고정 또는 유동적으로 활용해야 하는 경우가 있습니다.

 

이런 경우, DB를 이용하여 충분한 효과를 발휘할 수 있습니다. 하나의 예시로 웹프로그램을 들 수 있습니다. 우리가 알고 있는 워드프레스의 경우 mysql이라는 db를 이용하여 다양한 설정값을 조절하여 구동되는 모습을 볼 수 있으며, 사용자는 DB의 정보를 조정하여 원하는 모습으로 꾸밀 수도 있습니다.

 

 

어떤 DB(database)를 이용하는 것이 좋을까요.

현재 서비스되고 있는 database는 종류가 상당히 다양하며, 그 특징 또한 다양하게 존재하고 있습니다. 이는 개인의 취향 또한 반영될 수 있는 부분이기 때문에 정답이 정해져 있는 것은 아니라고 할 수 있습니다. 취향과 진행되는 서비스에 적합한 DB를 선택하는 것이 가장 현명한 방법이 될 수 있습니다.

 

전문가의 입장이 아니기 때문에 다양한 DB에 대한 지식은 부족할 수 밖에 없음을 미리 언급합니다. 개인적으로 구분하는 가장 큰 요소는 '서버의 유무'입니다.

 

외부에서도 접속하여 정보를 활용해야 하는 경우라면 서버가 있는 DB를 선택하는 것은 당연한 이야기입니다. 반면, 서버가 필요 없는 경우, 대표적으로 로컬에서 활용되는 프로그램이라도 굳이 서버가 없는 DB를 선택할 필요는 없습니다. 어떻게 활용하고 연결할 것인지에 따라 차이를 보일 수 있습니다.

 

  • 서버가 필요하다면 : mysql, mariadb, oracle 등
  • 서버가 필요없다면 : sqlite
  • 더 다양하게 존재합니다.
  • 저와 같은 개인의 활용으로 파이썬을 이용한다면 충분하지 않을까 생각합니다. 
  • 더 다양하게 찾아볼 수 있는 키워드는 다음과 같습니다.
    1. 계층형 데이터베이스
    2. 네트워크형 데이터베이스
    3. 관계형 데이터베이스
    4. NoSQL 데이터베이스
  • 만약, 천재가 아니라면, 코딩을 배우고 있다면 지속적인 검색은 필수가 될 수 있습니다. 따라서, 관련된 '키워드'는 상당히 많은 도움이 될 것입니다.

 

DB를 연동하는 것이 중요할까요.

개인적으로 처음에는 DB 프로그램을 연동하는 것에 부담을 느끼기도 했습니다. 원하는 기능을 구현하는 과정에서 발생되는 여러 코드와 규칙, 알고리즘을 구성하는 것에도 쉽지 않은 부담을 느끼곤 했습니다. 거기에 혼자 활용할 목적으로 DB까지 연동한다는 것에 필요성을 못 느끼기도 했습니다.

 

그럼, 도출되는 결괏값을 저장하고 검토하는 과정에 어떤 것을 활용할 수 있을까요. 개인적으로 가장 많이 활용한 것이 엑셀(excel) 프로그램이었습니다. 우선은 익숙하고, 시각적으로 잘 정리되어 있는 모습과 필요에 따라서 커스텀이 가능하다는 장점이 있었습니다.

 

엑셀에도 다양한 기능을 구현할 수 있는 코드를 구현할 수 있습니다. VBA(Visual Basic Application)이라는 부분입니다. 처음에는 하얀 백지에 코딩을 진행하면, 기본적으로 제공되는 엑셀의 기능외의 다양한 기능을 구현할 수 있습니다. 

 

이런 장점으로 활용했지만 지속적으로 활용하기에는 불편함을 느끼게 되었으며, 속도와 취급할 수 있는 정보량의 한계성을 느꼈습니다. 그 밖에도 txt, ini파일을 활용하여 가볍게 이용해 볼 수 있습니다.

 

파이썬에는 이미 좋은 라이브러리가 존재하기 때문에 엑셀, txt, ini, json, xml등의 파일을 불러와 정보를 활용하고, 저장하는 코드는 짧고 간결하게 준비되어 있습니다.

 

만약, 이제막 코딩을 시작하고 프로젝트에 도전하고 있다면 어떤 것으로 접근하는 게 좋을까요.

우선은 두가지의 DB를 활용하는 방법부터 익히는 것을 권하고 싶네요. 그저 가볍게 사용하고 싶다면 (서버를 이용한 서비스가 필요 없다면) SQlite를 추천합니다. 반면, 서버를 이용한 서비스(웹, 앱 등)를 구현하는 과정이라면 장소를 불문하고 활용할 수 있는 mysql, mariadb를 추천합니다.

 

명령어를 전달하는 쿼리문의 기본적인 형태는 대동소이(大同小異)한 부분이기 때문이며, 해당되는 DB를 활용하는 것으로도 충분한 활용도를 보일 수 있습니다. mysql, mariadb, oracle의 경우는 거의 같은 맥락을 가지고 있기 때문에 도움이 될 수 있습니다. 한 걸음 더 나아가, 가상 서버(vps)를 준비하여 서비스를 제공한다면 보다 폭넓은 서비스를 제공할 수 있을 것입니다.

 

끝으로, DB의 시각적인 모습을 보고 싶다면 관련 프로그램을 활용할 수 있습니다.

제가 엑셀을 선택했던 가장 큰 이유는 시각적인 모습이었습니다. 물론, 익숙해지면 크게 중요한 부분은 아닐 수 있지만, 처음에는 코드가 구동되는 과정에서 보여지는 결괏값에 대한 궁금증에 대해 직관적으로 확인하고 싶었습니다. DB를 활용한다면 확인하기 어렵다는 편견을 가지고 있기도 했습니다.

 

결과적으로 제가 부족했던 부분이며, 쉽게 단정지은 부분이기도 합니다. 조금만 더 검색해보면 해결책을 찾을 수 있는데, 마음이 급하기도 했습니다. 

 

SQlite의 경우 DB Browser를 이용할 수 있으며, mysql, mariadb와 같은 경우라면 HeidiSQL을 이용할 수 있습니다. 엑셀과 같이 DB, table, field의 영역을 표로 볼 수 있습니다. 또한, 해당 프로그램에서 쿼리문을 전달하는 기동도 있기 때문에 DB를 조작하는데도 도움이 될 수 있을 것입니다.

 

여기까지 처음시작하는 파이썬 프로젝트에서 DB에 대한 간략한 견해를 전합니다. 100명 중 1명에게라도 도움이 될 수 있기를 바라며, 아주 단순하지만 개인적으로 생각하는 중요한 부분을 정리했습니다. 이는 공유의 목적도 있지만, 개인적으로 정리를 하려는 목적이기도 합니다. 감사합니다.

반응형

댓글