2016년 11월 29일 화요일

로또 45C6 = 8145060 경우의 수 모두 DB에 넣기

앞서 글에서 적었듯 MySQL을 쓴다.
MS-SQL을 쓰든 Oracle을 쓰든, 사실 별로 큰 차이는 없다.

엑셀은 쓸 수 없는게
세로로 MAX 65536 개
가로로 MAX 256 개
까지 저장 할 수 있으므로
800만개가 넘는 경우의 수를
엑셀로 처리하기엔 무리다.

800만개를 DB 에 모두 넣는것은
프로그램을 조금만 할 수 있다면,
의외로 간단하다.

문제는 퍼포먼스~ 속도이다.
이런저런 연산을 많이 해야 하는데
몇초 안에 연산을 끝내지 않으면

(몇초? 며초? 아놔... 한국어
몇일을 며칠로 맞춤법을 바꾸질 않나...
사람들이 많이 쓰는게 맞는거 아닌가?
몇년 몇월 몇일 몇시간 몇분 몇초
면년 며둴 며칠 며씨간 며뿐 며초
머시여 이게 ...)

아므튼, 중요한건 그게 아니고~

DB 에 넣는 방법은 여러가지가 있다.
MySQL 에서 직접 쿼리해서 넣을 수도 있고
프로그램을 간단히 만들어서 넣을 수도 있다.

go 를 쓰든 파이썬을 쓰든 C를 쓰든 Java를 쓰든 편한걸로~
대신, 웹언어 PHP 나 JSP, ASP 같은 경우는
WAS(웹 어플리케이션 서버)에 런타임,세션시간이 정해져 있고
동작시키는 브라우저에도 런타임 시간이 정해져 있어서
800만개를 DB에 넣는 동안 브라우저가 뻗어,
몇분 길게는 몇시간 동안 '응답없음' 상태가 되버리는 경우가 있었다..
웹에서 동작하는건 추천하지 않는다.

이미 들어간걸 조회 하는건 오래 걸리지 않는다. 몇초컷


~


처음 만들때는 1,2,3,4,5,6 부터 40,41,42,43,44,45 까지 모두 넣는데
완료 예상 시간이 7일 정도 걸렸는데;
점점 발전하면서 800만개 모두 넣는데, 몇분안에 CUT 하였다.



속도야 만드는 사람의 제량에 따른것이니 공부를 해야하는 부분이다.
그게 어렵다면 프로그램 전문가에게 의뢰를 하든, 만들어진 DB를 사든 해야한다.
로또 번호가 모두 들어가있는 DB 파일의 용량은 100메가 정도이다. zip로 압축하면 10메가 정도?
구글 블로그에는 파일을 올리는 기능이 없으므로, skip.

814만5천60개를 모두 넣었으니
이제 역대 로또 당첨번호를 모두 DB에 넣어야 한다.
다음편에 계속...

댓글 없음:

댓글 쓰기

플러터 단축키

1. 위젯 감싸기/벗기기 비주얼 스튜디오 :   Cmd + . 안드로이드 스튜디오 : Alt + Enter 2. 코드 정렬 비주얼 스튜디오 : Ctrl + S 안드로이드 스튜디오 : Ctlr + Alt + L 3. StatelessWidget ->...