database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
ㆍ자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
자유게시판 자유게시판 10567 게시물 읽기
 
No. 10567
최근 삽질 이야기3
작성자
신기배(소타)
작성일
2010-01-29 18:23ⓒ
2010-01-29 18:24ⓜ
조회수
4,709
PostgreSQL 게시판에 이전 글들이 있는데.. 점점 pgsql과 얘기가 멀어져서..


이후의 이야기입니다..

그렇게 여차저차 multi key-value data store가 만들어졌고 지금은 10억건이 좀 넘는 데이터가 들어가 있습니다. 데이터 용량은 1.2테라입니다.
초당 200~500개 정도의 새 데이터가 쌓이고 있습니다.
1k 이하의 IO요청이 거의 10k에 가깝게 일어납니다. 넘어갈 때도 있고요.
디스크 IO는 도저히 해결하지 못해서 SSD 1.5테라(256GB x 6개 RAID 0)를 달아줬고 장애를 대비해서 2테라의 SAS disk에 복제하고 있습니다.
메모리도 무려 96GB...
돈으로 scale-up 한 케이스입니다.. 그래도 SSD RAID 0가 성능이 엄청나서 다행입니다 -.-;;

적어도 제 인생에서는 가장 큰 데이터입니다 -.-;; 그 전까지는 많아봤자 수천만이었는데 장비든 뭐든 걱정 한 적이 없었습니다 -.-;; 우물 레벨1 탈출이랄까요..
야후는 데이터가 1.2PB라는데.. 새발의 피지만 말입니다..

여튼..
이 이후로 하나의 DBMS를 더 만들었습니다.
원래는 mysql로 구현했었는데 mysql이 버티지 못해서 메모리 기반의 DBMS를 새로 구현하게 되었습니다.
mysql로 생각하면 2개의 테이블이 있는데 한 테이블은 초당 0.5~1k정도의 레코드가 쌓입니다.
한 테이블은 적은 수의 insert가 일어나는데 update가 초당 몇 번 일어나는데 한번에 변경되는 레코드가 수십~수천 입니다.
매우 간단한 테이블 구조인데 레코드가 억단위를 가니 웹서비스라는 것에서는 나오면 안되는 성능이 나옵니다.

그 전의 key-value 기반은 데이터 구조가 간단해서 금방 만들고 테스트만 오래했지만 이번에 만들어야 하는 인덱싱 DB는 DB테이블 6개를 메모리에 구현해야 합니다. 만드는 김에 테이블 몇 개를 더 넣어버림 -_-;
처음으로 red-black tree, btree 등을 C로 구현해 봤습니다.. 맨날 있는거 갖다 썼는데 데이터가 많으니까 바이트 단위로 제어할 수 있도록 직접 구현하게 됐습니다. 생각보다 겁나 복잡하더라구요.. 언제 해봤어야지 -_-;
이런 트리로 데이터를 찾고 데이터를 연결하고 연결한 걸 뽑아내고 등등을 해야 했습니다.
SELECT ... ORDER BY 로 쉽게 하던걸 quick sort, merge sort 등을 구현해야만 했습니다...
여튼 우여곡절 끝에 만들었습니다.
기능 하나 넣으려면 죽였다 살려야 하고 -_-; 빠르게 동작하게 하려고 데이터 구조를 메모리에 최적화 했더니 추가로 저장할 데이터 하나 생기면 죽이고 살리는데 30분입니다..
약 20억건의 데이터 연결이 들어있고 몇 달 동안 잘 돌아가고 있습니다..
다행히도 이 장비는 메모리가 120GB입니다 >_<;


요즘은 이 두놈을 합쳐서 분산처리되는 놈을 만드려고 하고 있습니다.
이 두 놈을 몇 달 돌려보니 이런걸 만드는게 너무나 힘든 일이란 걸 실감하고 있습니다..
오라클이나 PostgreSQL, Cubrid 같은걸 만드는 사람은 정말 초천재입니다!!

여튼 삽질 수고하세요~
 
이 글에 대한 댓글이 총 7건 있습니다.

그러는 님하두 초천재 ㄷㄷㄷㄷ....

백록화(백록화)님이 2010-01-29 18:32에 작성한 댓글입니다.

전 아직도 copy&paste고요..

넘사벽이 느껴지는 이들이 존재하네요... -.-

신기배(소타)님이 2010-01-29 18:36에 작성한 댓글입니다.

술 한 잔 해야지?

김상기(ioseph)님이 2010-01-29 23:54에 작성한 댓글입니다.

미국 놀러오세요 ㅋ

양주랑 소주 준비 ㅎㅎ >_<;

신기배(소타)님이 2010-01-30 09:07에 작성한 댓글입니다.

 음.. 서버 메모리 용량이 내 HDD 용량보다 크네?

회사 사람들은 한국 사람들이랬지? 다행이다. 어려운 이야기 영어로 했으면;;

허정수(wertyu)님이 2010-01-30 11:29에 작성한 댓글입니다.

혹시, 한국에 잠시 방문할 계획은 없나? 

정병주(dber)님이 2010-02-04 18:05에 작성한 댓글입니다.

아직은 기약이 엄떠염 ㅠㅠㅠㅠㅠㅠ;;

아무것도 이룬게 없어서 ㅋ;

새해 복 많이 받으시고 건강하세요 =)

신기배(소타)님이 2010-02-05 08:32에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10574교수님 초청 데이터모델링 세미나 (Sybase)
tjworbs
2010-02-09
4123
10570웹타임교육쿠폰팝니다 [1]
홍길동
2010-01-30
4637
10569잘 다녀 왔습니다. [6]
이창민
2010-02-01
4451
10567최근 삽질 이야기3 [7]
신기배
2010-01-29
4709
10566다들 잘 지내시지요~ ^^; [5]
신기배
2010-01-29
4605
10564몇달만에 다시 들어오네요.ㅋ [1]
김윤호
2010-01-27
3914
10554신념 모임 후기 [2]
백록화
2010-01-16
4377
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.070초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다