전체 글

이지스퍼블리싱 서평단으로 선정되어 도서를 지원받아 솔직하게 쓴 글입니다.서론그동안 MySQL을 중심으로 데이터베이스를 활용해 왔지만, 오라클 DB는 기업 환경에서 널리 사용되고 여러 채용공고에서 우대사항으로도 보았기에 이 기회에 책을 읽으며 학습해보고 정리해보고자 합니다.본인은 기본적인 SQL 문법은 알고 있고, MySQL DB로 DB를 설계해보고 이용해본적은 있지만, 오라클은 많이 들어보기는 했지만 실제로 사용해본 적은 처음이었습니다. 총평이 책은 오라클 데이터베이스를 처음 접하는 사람들을 대상으로 SQL의 기본 개념부터 실무에서 활용할 수 있는 기능까지 체계적으로 설명하고 있습니다. 전반적으로 관계형 DB란 무엇인지, 오라클이 어떤 DB인지부터 DDL, DML(CRUD), JOIN, 트랜잭션, 인덱스..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course 데이터베이스 엔진데이터베이스 엔진이란?- 실제 디스크에 CRUD 작업을 처리하는 라이브러리- 크게 2가지로 나눌 수 있음. 디스크에 데이터를 저장하는 것과 실제로 작업을 하는 것- 단순히 key-value를 저장하는데 그칠 수도 있고, 완전한 ACID 트랜잭션을 지원하기 위해서 복잡할 수도 있음- 데이터베이스  엔진은 단순히 데이터를 저장하는 것뿐 아니라, Master-Slave 구조를 이루게 하거나 프로시저를 저장하는 등 엔터프라이즈 레벨에서 사용되는 다양한 ..
· 대회
팀원 모집한동안 개인 프로젝트만 하면서 복학 준비를 하던 중, 과 동기가 같이 대회를 나가보자는 제안을 했다.공고를 보니 일반적인 해커톤과 다르게 '모바일 앱'을 타겟으로 진행한다는 점과, 사측에서 직접 사용할 서비스를 만든다는 점이 재미있어 보였고, 진행기간도 10일 정도로 적당해서 참가를 결정하게 되었다.무엇보다 개발자들만 모아서하는게 아닌 PM과 디자이너를 따로 모집해서 협업할 수 있다는 점도 좋은 경험이 될 것 같았다.대회 진행은 개인 혹은 팀으로 신청해서 참가자로 선정되면, 디스코드로 본인 어필을 통해 팀원을 추가 모집할 수 있는 방식이었다. 같이 신청한 팀원도 백엔드 경험을 쌓기를 희망했기에 디스코드에서 열심히 프론트 개발자, 기획자, 디자이너를 찾아다녔고, 디자이너, 기획자까지는 적극적으로 ..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course동시성 제어공유 락 vs 배타 락배타 락(Exclusive Lock)- 특정 데이터 조각을 읽거나 업데이트하려 할 때, 보안 및 일관성을 위해 이 값을 읽으려는 사람에게 오류가 발생하도록 하려고 할 때 사용- 연결된 유일한 사용자가 되는 것... 나만이 업데이트 가능- 시스템의 일관성을 보장하기 위해 도입 공유 락(Shared Lock)- 내가 데이터를 읽을 때, 아무도 수정하지 못하게 하고 싶을 때 사용... 이 값을 편집하려는 사람에게 오류가 발생- 많은 사용..
서론지난 1편에서 라즈베리파이 서버를 설치하고 네트워크 구성했고, 이어서 Nginx, MySQL, WAS(NestJS)를 Docker를 이용하여 구성하고 전 과정을 코드로 관리하여, Github Actions로 자동화까지 해보겠습니다. Docker & docker-compose 설치먼저 docker와 docker-compose를 설치해 준다.# Docker 디렉토리 생성 후 docker installmkdir Dockercd Dockercurl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh# Docker 그룹에 사용자 추가sudo usermod -aG docker ${USER}groups ${USER}sudo rebootdocker..
서론그동안 개인 프로젝트나 해커톤에 참여하게 되면, AWS를 이용해서 배포를 해왔다. 특히 Elastic Beanstalk, lambda 등 관리형 서비스를 쓰면 서버 관리나 배포를 신경 쓰지 않아도 되고, 최초 세팅만 해주면 손쉽게 구성을 할 수 있어서 애용했다.그런데 이게 서비스가 하나 일 때는 Freetier 지원도 받고, AWS 크레딧 받은 거를 쓰면 크게 문제 될 게 없었는데, 이것저것 개발하다 보니 살려놔야 할 서비스들도 늘어나고, 프리티어 기간이 끝날 때마다 계정을 갈아타는 것도 여간 귀찮은 일이 아니었다.사실 유저가 항상 있는 서비스도 아니고, 당장 운영 안정성이 필요한 서비스들도 아니었기에 클라우드 환경은 낭비되는 비용이 많다.처음에는 terraform 등 IaC로 환경 구성을 여러 프리..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course파티셔닝파티셔닝이란?- 파티셔닝: 거대 테이블을 여러 개의 테이블로 분할하고, WHERE 절에 따라 어떤 테이블 또는 파티션에 접근할지 결정하는 기술- 실제 데이터가 담기는 테이블을 TEMP_100K, TEMP_200K, TEMP_300K... 이런 식으로 나누고, TEMP(master table) 테이블은 실제 데이터는 갖고 있지 않음.- ex) TEMP로 id = 210,001에 대한 조회 쿼리가 오면 DB는 TEMP_200K에서 찾아서 주는 방식 사용법- 아..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course B-TreeB-Tree 필요성- Full Table Scans: large tables를 읽는 것은 느림... 모든 page를 읽으면 많은 디스크 IO 발생B-Tree란- 빠른 탐색을 위해 만들어진 균형잡힌 데이터 구조로 검색 공간을 최소화하는게 목표 - B-tree는 노드로 구성되어 있음, m이라는 차수를 가짐... 차수는 기본적으로 각 노드가 가질 수 있는 자식 노드의 수에 해당됨,- m degree 트리의 노드는 m-1 elements를 가짐... 각 el..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course 인덱싱 시작하기- explain analyze로 실행계획(쿼리계획)을 분석할 수 있음explain analyze select * from temp;Index only scan : Heap에서 fetch할 필요 없어 제일 빠르고 좋은 경우Parallel seq scan : 전체를 다 훑어야해서 최악의 경우. - create index로 인덱스 생성 가능create index temp_t on temp(t); - where 문으로 특정하였을 때 효과있지만, LIKE..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course 테이블과 인덱스가 저장되는 방식논리적 테이블 -> 열과 행(혹은 document)으로 이뤄져 있음 Row_ID- 특정 행 ID를 고유하게 식별(Postgres에서는 tuple ID)- MySQL에서는 기본 키가 사실상 가짜(sudo) 행 ID가 됨, 다른 DB에서는 별개의 새로운 행 ID가 열에 생성됨 Page- 행은 논리적 페이지에 저장됨, 기술적으로 한 페이지에 많은 행이 들어갈 수 있음- 페이지는 고정된 크기(MySQL는 16kb)의 메모리 위치로, 디스크..
파이랜스
PyPyStory