CS
-
조인의 종류와 원리CS/데이터베이스 2022. 6. 14. 12:27
조인(JOIN) 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것 MySQL에서는 JOIN, MongoDB에서는 lookup 이라는 쿼리로 처리한다. 하지만 MongoDB의 lookup은 성능이 떨어지므로 지양해야 한다. 따라서 여러 테이블을 조이하는 작업이 많을 경우 관계형 데이터베이스를 써야 한다. 조인의 종류 셀프 조인, 오른쪽 조인, 합집합 조인, 교집합 조인, 교차 조인, 왼쪽 조인이 있는데 중요한 내부 조인, 왼쪽 조인, 오른쪽 조인 합집합 조인에서 알아 보겠다. 참고하면 좋은 사이트 : SQL JOIN 시각화 사이트 : https://sql-joins.leopard.in.ua/ SQL Joins Visualizer Please select how do you wa..
-
제 1 정규화CS/데이터베이스 2022. 6. 12. 13:05
제 1 정규화 릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 한다. topic table title type description created author_id author_name author_profile price tag MySQL paper MySQL is... 2011 1 kim developer 10000 rdb, free MySQL online MySQL is... 2011 1 kim developer 0 rdb, free ORACLE online ORACLE is... 2012 1 kim developer 0 rdb, commercial 위의 정규화 되지 않은 topic table은 tag가 atomic 하지 않아 제 1 정규형을 만족..
-
데이터베이스의 기본CS/데이터베이스 2022. 6. 11. 17:14
데이터베이스(DB, DataBase) 조직의 여러 응용 시스템들이 공용하기 위해 통합, 저장한 운영 데이터의 집합을 의미 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(DataBase Management System)라고 한다. DB 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 실시간 접근과 동시 공유가 가능하다. 응용 프로그램 DBMS 데이터베이스 엔티티(Entity) 엔티티는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미한다. 예를 들어 회원이라는 엔티티가 있다면 회원은 이름, 아이디, 주소, 전화번호의 속성을 갖는다. 속성은 서비스의 요구 사항에 맞춰 속성이 정해..
-
쿠키&로컬스토리지CS/네트워크 2022. 5. 6. 12:32
쿠키 브라우저에 저장되는 작은 크기의 문자열(최대 4KB) 매직 쿠키에서 유래( 프로그램이 수신한 뒤 변경하지 않고 보내는 데이터 패킷 ) http는 비연결성, 무상태성의 특징을 가지고 있어 이미 방문했던 클라이언트인지 아니면 처음 방문하는 클라이언트인지 알 수 없다. 따라서 쿠키에 클라이언트의 상태를 담아 보내면 서버에서 인식한다. 쿠키 종류 영구 쿠키 (Persistent Cookie) 세션 쿠키 (Session Cookie) 만료 기간 O 만료 기간 X 만료 기간이 끝난 후 삭제 브라우저 종료 시 삭제 퍼스트파티 쿠키 서드파티 쿠키 같은 도메인의 쿠키들 ex naver.com m.naver.com 다른 도메인의 쿠키 ex kakao.com 쿠키 문제점 CSRF 쿠키가 자동으로 전송된다는 특징을 이용..
-
파이썬 코딩 스타일 가이드라인 PEP8CS/공통 2022. 4. 26. 11:13
Code is more often read, than it's written PEP8은 Python Enhance Proposal을 말하는 것으로 파이썬 코드를 어떻게 구성할지 알려주는 파이썬 스타일 가이드이다. 클린 코드를 작성하기 위해 일관성 있는 스타일을 사용하여 유지보수가 더욱 쉬워지고 가독성을 높여 다른 프로그래머들과의 협업을 쉽게 해준다. 들여 쓰기 파이썬에서 공백은 문법적으로 의미가 있다. 특히 코드의 명료성을 지키기 위해 신경써 주어야 한다. 탭이 아닌 스페이스를 사용하여 들여 쓰기를 한다. (일관되지 않게 들여 쓰기를 탭과 공백을 혼합해서 사용하면 에러가 발생) 문법적으로 의미 있는 들여 쓰기는 스페이스 4 개를 사용한다. 표현식이 길어서 다음 줄로 이어지면 일반적인 들여쓰기 수준에 추가..
-
RDBMS vs NoSQLCS/데이터베이스 2022. 4. 13. 12:07
관계형 데이터베이스 시스템 vs 비관계형 데이터베이스 시스템 RDBMS pros 관계형 데이터베이스는 데이터를 더 효율적이고 체계적으로 저장하고 관리할 수 있다 미리 저장하는 데이터들의 구조(테이블 스키마)를 정의함으로써 뎅이터의 완전성이 보장된다. 트랜잭션(transaction) 기능을 제공한다. cons 테이블을 미리 정의해야 하므로 테이블 구조 변화 등에 덜 유연하다. 확장이 쉽지 않다. 테이블 구조가 미리 정의되어야 하고 ACID를 보장해야 하다 보니 단순히 서버를 늘리는 것만으로 확장하기가 쉽지 않고 서버의 성능 자체도 높여야 한다 서버를 늘려서 분산 저장하는 것도 쉽지 않다. 주로 스케일 아웃보다는 스케일 업으로 확장해야 한다. NoSQL pros 데이터 구조를 미리 정의하지 않아도 되므로 저..
-
macOS shell을 bash에서 ZSH로 바꾸기CS/OS 2022. 4. 11. 16:58
Shell(셸) 터미널 환경에서 운영체제의 커널과 사용자의 유저 스페이스를 이어 주는 인터페이스 역할을 하는 프로그램이다. 인터페이스 역할 외에도 셸 스크립트(Shell Script)라는 셸 전용 프로그래밍 언어를 사용해서 터미널 환경에서 다양한 자동화를 실행할 수 있다. Bash(Bourne-Again Shell) 거의 대부분의 리눅스 기반 운영체제에서 default Shell로 설치된다. ZSH(Z shell) 'Oh My Zsh(설정 관리 툴)로 인해 인기를 얻고 있는 shell이다. 기본적인 기능은 Bash와 큰 차이는 없으나 여러 다양한 편리한 기능을 제공한다. Oh My Zsh이라는 ZSH 설정 매니저 플러그인을 통해서 편리하게 Shell을 설정할 수 있다. Bash -> ZSH 1. ZSH을..
-
가상메모리CS/OS 2022. 3. 20. 21:07
가상 메모리 메모리 관리 기법 중 하나로 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법 사용자 프로그램이 물리 메모리의 제약에서 벗어남 각 프로그램이 더 작은 메모리를 차지하기 때문에 더 많은 프로그램을 동시 수행 가능한 것처럼 보임 프로그램을 메모리에 올리고 swap 하는데 필요한 IO 횟수가 줄어듦 가상 메모리가 왜 필요할까? 프로세스란 실행되는 프로그램이며, 이는 메인 메모리에 올라와있어야 한다. 하지만 메인 메모리의 공간은 그렇게 크지 않고 여러 개의 프로그램을 실행할수록 할당되는 공간의 크기는 줄어들고, 어느새 공간은 꽉 차게 될 것이다. 다른 프로세스를 사용하기 위해 기존의 프로세스를 스왑 영역으로 내보내고 올리는 Swap In, Swap Out을 빈번히 한다면 큰..