본문 바로가기

분류 전체보기103

[DataBase] 5. 파티셔닝/ 샤딩 1. 파티셔닝(Partitioning)/샤딩(Sharding) 데이터베이스를 여러개로 나누어 분산시키는 기술용어로, 서비스 크기의 증가에 따라 DB의 크기가 증가하면서 성능을 향상시키기 위한 것이다. 자료가 매우 많아지면서 하나의 DBMS가 여러개의 테이블을 관리하기에는 성능적으로 문제가 생겼고 이에 따라 테이블을 나누어 관리하는 방법이 파티셔닝, 데이터베이스를 여러개 사용하는 방법이 샤딩이다. 1) 파티셔닝 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법 [1] 파티셔닝 방법 Horizontal Partitioning( 수평 파티셔닝 ) 수평 즉, 데이터의 개수를 기준으로 나누어 파티셔닝하는 방법이다. 하나의 테이블을 대상으로 튜플(행)의 개수가 많아지면 여러개의 테이블로 분산하여 저장하는 .. 2021. 6. 3.
[DataBase] 4. 정규화 2. 정규화( Nomalization) 정규화의 기본 목표는 테이블간 중복된 데이터를 허용하지 않는다는 것이다. 이로써 무결성(정확성/일관성 보장)을 유지할 수 있으며, DB저장용량 또한 줄일 수 있다. 정규화는 또한 이상문제들을 해결하기 위해 속성(컬럼)들 끼리 종속관계를 분석하여 여러 테이블로 나누는 과정이라고 표현 할 수 있다. 테이블을 여러개로 분해하면 속도는 느려질 수 있지만, 각종 이상문제들을 해결하기위해 정규화가 필요하다. - 이상문제 종류 삽입이상 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우 삭제이상 튜플 삭제 시 유지되어야 되는 정보도 함께 삭제되는 경우 갱신이상 중복되는 튜플 중 일부 속성만 갱신되어 모순이 발생하는 경우 1) 제 1정규화 (도메인 원자값) 테이블의 컬럼이.. 2021. 6. 3.
[DataBase] 3. 스키마 1. 스키마 스키마란 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다. 자세하게 살펴보면 다음과 같다. 개체의 특성을 나타내는 속성(Attribute) 속성들의 집합으로 이루어진 개체(Entity) 개체 사이에 존재하는 관계(Relation)에 대한 정의 이들이 유지해야 할 제약조건들을 기술한 것이다. DB에 저장되는구조를 나타내는 데이터 베이스 구조를 스키마라 한다. 스키마는 데이터 사전(Data Dictionary)에 저장된다. *데이터 사전 : 시스템 전체에서 나타나는 데이터 항목들에 대한 정보를 지정한 중앙 장소로, 이 정보에는 항목을 참조하는데 사용되는 식별자, 항목에 대한 엔티티의 구성요소, 항목이 저장되는 곳, 항목을 참조하는 곳 등을 포함 현실 세계의 특정한 한 부분의 .. 2021. 6. 3.
[프로그래밍언어] 자바(1) 비 언어적 부분( 구성, 특성 ) 자바 카테고리와는 달리 자바의 특성만을 요약하여 다루는 포스팅입니다. 1. JDK, JRE, JVM 1) JDK(Java Development Kit) JDK는 JVM과 JRE 분만아니라 자바를 사용해서 개발을 하기위한 도구가 포함되어 있는 kit이라고 보면 될거 같다. 대표적으로 자바 컴파일러가 이에 포함되고 개발자가 아니라면 사용할 일이 없는 도구이다. 2) JRE(Java Runtime Environment) Java를 실행하기 위해서 필요한 도구로 JVM을 포함하고 있다. JRE에는 JVM을 실행하며 필요한 라이브러리들과 바이트코드(.class파일)를 JVM에 올리는 클래스 로더가 있다. 3)JVM(Java Virtual Machine) 자바 코드가 최종적으로 실행되는 가상머신이다. 자세한 내용은.. 2021. 6. 2.
[DataBase] 2. 트랜잭션(Transaction) 1. 트랜잭션 트랜잭션은 끊김없이 한번에 처리해야하는 업무의 단위를 의미한다. 데이터베이스에서의 트랜잭션은 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 말한다. 트랜잭션을 설명할 때 가장 대표적인 예시가 은행업무이다. 다음은 트랜잭션의 개념이 들어가지 않은 업무 처리의 예이다. A가 자신의 계좌에서 B에게 송금을 하려고 한다. 송금을 하는 중 네트워크에 문제가 생겨 A의 잔고는 줄었지만 B에게 입금이 되지 않았다. 이럴 경우를 대비하여 A의 통장에서 금액이 빠진 후 B의 통장에 입금이 된 것이 확인 된다면 작업을 마치는 것을 트랜잭션이라고 한다. 만일 중간에 오류가 발생했다면 거래를 처음 상태로 복구시켜야 한다. 즉, 작업 처리에있어서 안정성을 확보하는 것을 말한다. 트랜잭션을 정리하면.. 2021. 5. 31.
[Database] 1. Index 1. Database Index(DB성능을 높이는 핵심) 인덱스란 추가적인 쓰기작업과 저장공간을 활용하여 DataBase 테이블의 검색속도를 향상시키기 위한 자료구조이다. 책에서 원하는 내용을 찾을 때 책의 맨 앞 목록을 찾아보는 것과 같은 원리이다. 모든 데이터를 대상으로 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 하는 것이다. 데이터 베이스에 있어서 데이터를 검색할 때 성능을 최적화 하기 위한 유용한 도구이다. 인덱스를 사용하면 데이터 조회(SELECT)뿐만 아니라 수정(UPDATE), 삭제(DELETE)의 성능까지 좋아진다. 각 연산에는 모두 대상에 대한 조회가 선행되야 하기 때문이다. 만일 INDEX를 사용하지 않은 컬럼을 조회.. 2021. 5. 31.
[Network] 5. 주소창에 www.naver.com을 쳤을 때 생기는일 개요 (글자 드래거? 들을 위한 소소한 목적...) 개념공부에는 안나오지만 배운 내용들을 모두 내포한 질문이다. 사실 인터넷에 치면 기본적인 내용은 확인 할 수 있다. 기술면접의 단골질문 중 하나라 당연한 일이다.. 필자도 한 IT회사에서 이 질문을 받고 신나게 대답을 했다. 하지만 돌아오는 답변은 "그럼 , 네이버 서버에서 클라이언트가 요청하면 서버 하나에서 다 처리해 줄까요? 여러 클라이언트가 요청하면 어떻게 할 거 같아요?" 와 같은 꼬리질문을 하면서 말문이 막혔다. 아마 로드 밸런싱에 관한 내용에 대해서 공부해 봤는지를 알고 싶으셨던게 아닐까 싶은데 왜그랬는지 그 부분은 공부를 안하고 갔던 부분이었다. 따라서 이 포스팅에는 능력이 닿는 한에서 최대한 자세하게 정리해보고자 한다. 1. 간단한 과정 .. 2021. 5. 29.
[BOJ] 참외밭 2477 https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m^2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1≤K≤20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지나 www.acmicpc.net 레벨 - 실버1 분류 - 구현, 기하학 코드 #include #include using namespace std; int main() { int K; int result = 0; vector len(6); cin >> K; for (int i = 0; i > len[i].first >> len[i].second; if (i > 0) result += len[i].sec.. 2021. 5. 28.