짧은 URL 개발중에 ㅎㄷㄷ한 용량 정보
짧은 URL 개발중에 ㅎㄷㄷ한 용량본문
이걸로 몇번 글쓰네요.
전에 15018570건 완성했을때 그걸 덤프 받으면 약 570메가 정도 되었는데요.
지금은 그걸 이용해서 약 9억건에 도전하고 있습니다.
제 서버의 계정용 HDD 용량이 160기가인데 거기에 하나 폴더 만들어서 MySQL 저장 폴더로 쓰고 있습니다.
15018570건을 이용하여 62진수로 약 9억건에 도전하고 있는데 문제가 생겼습니다.
그것은 서버 HDD용량 부족 사태.
일단 INDEX 테이블 하나에 약 9억건을 몽땅 넣을 생각입니다.
62진수중에 51개 완료해서 저장했는데 HDD 용량 100% 사용
그래서 덤프 받은거 마지막꺼 빼고 다른 DATABASE에 테스트중인거 지우고
그외에 당장 급하지 않은거 지웠더니 여유가 20%로 늘었네요.
그래서 마지막꺼 덤프 받았더니 그 .SQL 화일 하나가 17기가...
덤프 안받으면 약 9억건 완성은 되겠지만 만약에 HDD에 문제가 생기면 낭패일것 같아요.
일단 9억건 테이블 하나에 모두 담아보고 이걸 나눌건지 말건지를 테스트해봐야겠습니다.
그래도 하나 SELECT 하는데 걸리는 시간은 0.08초로 양호하네요.
생각보다 양호한 MySQL 성능에 감탄...
빨리 개발서버 스팩 좋고 용량 빵빵한놈으로 바꾸고 싶네요.
서버 교체하고 9억건 완성한다 해도 그걸 이용해서 560억건 하다보면 또 서버 HDD 용량 간당간당 할수도 있겠다는 생각이 듭니다.
추천
0
0
댓글 8개

중복 url 를 필터하지 않았나요?
테이블 스키마 필드를 unique로 해서 abcd 이런 짧은 URL 은 <== 이건 중복되지 않고요.
사용자가 입력하는
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=1002053
http://www.sir.co.kr/qa/
↑↑↑↑
요런 URL들은 아직 입력도 안된 상태입니다.
요런 URL들을 입력하면 용량이 더 늘겠죠.
15018570건의 경우 네이버 검색 URL로 몽땅 넣으니
URL 입력전에는 570메가인데
URL을 입력하니 2.3기가정도 되더군요.
대략 4배로 늘어나요.
그리고 사용자가 입력하는
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=1002053
http://www.sir.co.kr/qa/
↑↑↑↑
요런 URL도 원래 중복되었었는데 테이블스키마랑 알고리즘 바꿔서 지금은 중복입력되지 않습니다.
http://www.sir.co.kr/qa/ <<== 이거에 지정된 짧은 URL은 다른 사용자가 이걸 입력해도 똑같은 결과만 보여주도록 했습니다.
사용자가 입력하는
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=1002053
http://www.sir.co.kr/qa/
↑↑↑↑
요런 URL들은 아직 입력도 안된 상태입니다.
요런 URL들을 입력하면 용량이 더 늘겠죠.
15018570건의 경우 네이버 검색 URL로 몽땅 넣으니
URL 입력전에는 570메가인데
URL을 입력하니 2.3기가정도 되더군요.
대략 4배로 늘어나요.
그리고 사용자가 입력하는
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=1002053
http://www.sir.co.kr/qa/
↑↑↑↑
요런 URL도 원래 중복되었었는데 테이블스키마랑 알고리즘 바꿔서 지금은 중복입력되지 않습니다.
http://www.sir.co.kr/qa/ <<== 이거에 지정된 짧은 URL은 다른 사용자가 이걸 입력해도 똑같은 결과만 보여주도록 했습니다.
아~ 짧은 URL을 요청이 들어올때마다 생성하는게 아니라 abcd 같은 문자열을 미리 다 만들어 DB에 입력해 놓고 요청이 들어올때마다 하나씩 배분하는 방식입니다.
요청이 올때마다 URL을 생성하는건 아직 알고리즘이 불안합니다.
1500만건 이하는 완벽한데 그 이상에는 예외상황이 생겨서 에러가 있네요.
그래서 일단 DB에 몽땅 입력해 놓은 방식을 택했습니다.
물론 하나씩 요청이 올때마다 배분하는 방식도 개발할 예정입니다.
요청이 올때마다 URL을 생성하는건 아직 알고리즘이 불안합니다.
1500만건 이하는 완벽한데 그 이상에는 예외상황이 생겨서 에러가 있네요.
그래서 일단 DB에 몽땅 입력해 놓은 방식을 택했습니다.
물론 하나씩 요청이 올때마다 배분하는 방식도 개발할 예정입니다.

1:1 관계가 아닌 다중으로 몰렸을때가 mysql 에서 성능을 체크하는 것도 괜찮을 듯 합니다.
진수 사용으로 url 축소 또는 중복 코드를 줄이는 방법으로 "자주 등록된 사이트 url + 코드" 인데
자주 등록된 사이트의 url 이 http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=??? 라고 했을때
index 가 999999999 라면 62진수 G7 일때 G7 * ??? 조합의 의미도 포함 됩니다.
진수 사용으로 url 축소 또는 중복 코드를 줄이는 방법으로 "자주 등록된 사이트 url + 코드" 인데
자주 등록된 사이트의 url 이 http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=??? 라고 했을때
index 가 999999999 라면 62진수 G7 일때 G7 * ??? 조합의 의미도 포함 됩니다.
저의 솜씨가 비루해서인가 zzzz님의 댓글을 잘 이해하지 못하겠어요.
아직 내공이 부족한가 봅니다.
좋은 말씀 같은데 제 실력으로 이해를 못하고 있습니다. ㅠ_ㅠ
아직 내공이 부족한가 봅니다.
좋은 말씀 같은데 제 실력으로 이해를 못하고 있습니다. ㅠ_ㅠ
혹시 사용자들이 sir을 자주 이용한다면
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id= <<== 이걸 abcd 로하고
뒤에 숫자만 바꿔서 저장하라는 말씀인가요?
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=123 || abcd / 123
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=583 || abcd / 583
이렇게 저장하라는 말씀이신가요?
맞다면 용량을 줄이는데 좋은 방법인것 같아요.
기발하네요.
용량을 줄이는데는 훌륭한 알고리즘 같습니다.
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id= 는 한번만 저장하고 중복되는건 123, 583 만 저장하면 되니까요.
그런데 url 의 길이가 늘어날것 같아요.
저는 최소한으로 줄이는게 목표라서요.
일단 고민좀 해 보겠습니다.
이미 약 9억건 도전중이고 여기에 서버 HDD 용량을 많이 사용한 상태라 당장 중단하기가 아깝기도 하고요,
서버 교체하고 시간 나면 위 방법을 시도하는것도 고민해 보겠습니다.
커뮤니티 사이트에서 URL 용량도 줄이고 길이도 어느정도 줄이는 방법으로 정말 좋은것 같아요.
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id= <<== 이걸 abcd 로하고
뒤에 숫자만 바꿔서 저장하라는 말씀인가요?
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=123 || abcd / 123
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=583 || abcd / 583
이렇게 저장하라는 말씀이신가요?
맞다면 용량을 줄이는데 좋은 방법인것 같아요.
기발하네요.
용량을 줄이는데는 훌륭한 알고리즘 같습니다.
http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id= 는 한번만 저장하고 중복되는건 123, 583 만 저장하면 되니까요.
그런데 url 의 길이가 늘어날것 같아요.
저는 최소한으로 줄이는게 목표라서요.
일단 고민좀 해 보겠습니다.
이미 약 9억건 도전중이고 여기에 서버 HDD 용량을 많이 사용한 상태라 당장 중단하기가 아깝기도 하고요,
서버 교체하고 시간 나면 위 방법을 시도하는것도 고민해 보겠습니다.
커뮤니티 사이트에서 URL 용량도 줄이고 길이도 어느정도 줄이는 방법으로 정말 좋은것 같아요.

화이팅!!
고맙습니다.
그런데 제가 zzzz님의 조언을 제대로 이해하고 있는건가요?
그런데 제가 zzzz님의 조언을 제대로 이해하고 있는건가요?