반응형

전체 글 71

대용량 시스템을 위한 데이터베이스 아키텍쳐(Query Off Loading & Sharding)

RDBMS는 2차원 테이블 구조의 데이타를 KEY 값을 중심으로 여러개의 컬럼으로 저장되며, 저장된 각각의 row는 다른 테이블의 로우와 관계를 가질 수 있다.대용량 처리를 위해 고려할만한 아키텍처에 Query Off loading과 Sharding이라는 기법이 있다. Query off Loading처리량을 증가시키기 위한 설계기법DB 트랜젝션의 70~90%는 대부분 READ성이 많다. 그러므로 READ 성 트랜잭션과 나머지 트랜잭션(CREATE, DELETE, UPDATE)로 분리한다.애플리케이션은 Master DB에 쓰기 작업(UPDATE)을 하고 Master DB의 내용을 중간의 Staging DB에 저장. 이 내용은 N개의 Slave DB에 복제한다.트랜젝션이 많은 읽기 작업은 Slave DB에서..

데이터베이스 2016.10.24

HashMap 형태의 parmeter의 필수 값을 체크

전달받은 HashMap 형태의 parmeter의 필수 값을 체크하기 위한 함수입니다.체크해야 하는 필수 값을 Array로 만들어 체크합니다. 체크함수public static boolean checkContainKey(String[] requirmentKeys, HashMap param) { for (String requirmentKey : requirmentKeys) { boolean flag = false; for (Object key : param.keySet()){ if (requirmentKey.equals(key.toString())) { flag = true; break; } } if (!flag) { return false; } } return true;}호출방식String [] requir..

language/java 2016.10.20

FOREIGN Key란?

SQL Constraints 중 하나이다. NOT NULL '필수 입력 사항'을 의미 UNIQUE 중복성 배제 즉, '유일한 값'으로 존재해야 함을 의미 PRIMARY KEY(기본키) NOT NULL + UNIQUE로, '테이블에서 대표되는 컬럼'을 의미 FOREIGN KEY(외래키) '참조하는 테이블에서 존재하는 값만 사용 가능'을 의미 CHECK '주어진 조건에 해당하는 값만 입력 가능'을 의미 테이블의 외래키(FORGEGIN KEY)는 다른 테이블의 PRIMAKRY KEY 를 가리켜야 하는 제약을 뜻한다.특이 사항FOREIGN KEY 제약은 테이블간 링크가 무너지는 액션을 방지하려고 사용한다.FOREIGN KEY 제약은 FOREIGN KEY column에 잘못된 값이 삽입되는 것을 방지한다.t_st..

sql 2016.08.02

[Django] ORM과 쿼리셋

ORM(Object Relation Mapper)데이터베이스의 내용을 객체로 변환 해서 어플리케이션 소스코드에서 직접 객체를 조작할 수 있도록 구성.ORM을 사용해서 개발자는 데이터베이스를 조작하는데 SQL을 사용하지 않고 직접 객체를 사용할 수 있다.database의 table은 ORM에서 model로 표현되고 Record는 Object로 표현된다.장점Django 에 구현된 각 RDBMS 별 wrapper 를 통해 RDBMS 의 종류가 어떤 것 인가에 상관없이 만들 수 있다. 직관적인 객체지향 프로그래밍이 가능하다.기존의 DB 기반 구성을 객체 기반 구성으로 확장하여, 컴포넌트를 조합하는 방식의 개발이 가능하다.단점SQL 구문의 생성을 추상화하여 구현 하였으므로, 복잡한 쿼리의 경우 비 효율적으로 SQ..

REST framework Serializer 사용해서 다중 건 저장

개요API 개발시 단 건의 데이터를 처리하는 경우도 있지만 여러 건의 데이터를 일괄로 저장해야 하는 경우도 있다.이 경우 REST framework Serializer를 사용해서 list로 전달 받은 데이터를 일괄로 저장한다.코드data = request.data.copy() #data = [{"test_name_kr": "electric", "test_type": 0, "test_reg_no": "1111"}, {"test_name_kr": "electric", #"test_type": 0, "test_reg_no": "2222"}] serializer = TestSerializer(data=data, many=True) if not serializer.is_valid(): print(serialize..

NoSQL이란?

NoSQL은 ‘Not Only SQL’의 약어로, 일반적인 DBMS로 처리하기에 비용이 많이 들거나 효과적이지 못한 부분을 해결할 목적으로 개발됐습니다. 대용량의 로그 처리나 Write가 많은 경우에 사용하지만, 각자 목적에 따라서 선택할 수 있는 제품이 다르고 DBMS 만큼 쉽게 사용할 수는 없습니다.NoSQL은 크게 세 가지 범주인 Key-Value Store, Column Oriented Store, Document OrientedStore로 나뉩니다. 이 책에서 소개하는 Memcached, Redis 같은 캐시 솔루션이 Key-Value Store : key로 value를 바로 찾을 수 있는 해시의 데이터 구조를 사용Column Oriented Store : 일반적인 RDBMS가 하나의 Recor..

NoSql 2016.07.13

장자 - "아무리 작은 것도"

아무리 작은 것도 만들지 않으면 얻을 수 없고, 아무리 총명해도 배우지 않으면 깨닫지 못한다. 노력과 배움 없이는 인생을 밝힐 수 없다. IT인으로서 매일 야근하는 삶이 고달픈가? 비전이 없어 무기력하게 살고 있는가? 돈을 벌기위해 하기 싫은 일을 억지로 하면 남은 생을 살아갈 것인가? 이제 내 안의 잠자는 장자를 깨울 때다. 장자는 또한 말한다. 스스로가 선택한 자시만의 삶을 살라고. "길을 걸어가면 만들어진다." IT, 인문을 만나다 [자유로운 영혼의 소유자 장자]-219p

한줄 글귀 2016.07.04

리눅스 ssh 원격서버 접속

리눅스 환경에서 ssh 명령어를 사용하면 다른 서버에 접속 할 수 있다. 테스트환경클라이언트 : MAC OS 10.11.5 서버 : Ubuntu 16.04 기본 포트(22)로 원격서버 접속mparkui-MacBook-Pro:~ mpark$ ssh 아이디@서버주소mpark@10.211.55.4's password: 위와 같이 해당 서버에 접속해서 비밀번호를 입력하면 원격서버에 접속 할 수 있습니다. 기본 포트 이외의 포트로 원격서버 접속 mparkui-MacBook-Pro:~ mpark$ ssh mpark@10.211.55.4 -p80 원격서버 연결 종료mpark@ubuntu-linux:~$ exit 로그아웃 Connection to 10.211.55.4 closed.

리눅스 2016.07.01
반응형