안녕하세요.
최근에 맞닥뜨린 어려운 문제가 있어 여러분들의 고견을 청합니다.
아래와 같은 데이터가 있습니다.
A, B, C, D, E, F, G
이것은 "언제 어디서 무엇을 먹었는가?" 를 표시합니다.
먼저 A, B, C, D 필드는 공간적인 데이터를 의미합니다. 즉 식당의 위치.
가령 (A, B, C, D) = (나라, 도시, 거리, 번지)입니다.
그리고 E, F 필드는 시간적 데이터를 표시합니다. 즉 식당에 몇 번째 갔으며 언제 갔는가.
가령 (E, F) = (몇 번째 방문인지, 방문 시간)과 같습니다.
마지막으로 G는 먹은 음식을 수치로 바꾼 값입니다. 0은 밥, 1은 라면 등등..
자, 이제 각국을 돌아다니면서 먹어치우는 기록을 데이터베이스에 담아보려고 합니다.
가정은,
1. 매초마다 하나씩 음식을 먹는다 (종류는 아무거나..) 즉 매초마다 하나씩 데이터가 발생.
2. 이동에 필요한 시간은 0. 다른 나라로 가는데에도 시간이 들지 않음.
3. 다른 나라로의 이동시에는 (A, B, C, D)값이 한꺼번에 바뀜.
4. 중요. 한 지역에 도착하면 꽤 정성들여 그 지역의 먹거리를 싹쓸이.
즉, A > B > C > D 순서로 값이 한번 바뀐 후에는 다시 바뀌지 않을 확률이 매우 큽니다.
각 단계에 따라 약 1:10 정도의 비율로 바뀐다고 하죠. 즉, 어떤 나라에 가면 평균 10개의 도시를 방문.
그러다 어느 순간 다른 나라 다른 도시로...
5. 문제는 이겁니다: 1~10억 초의 활동을 기록. 즉 1~10억 개의 데이터(!)가 발생.
제 질문은 이렇습니다.
1. (방문 시간)이 primary key가 될 수 있을까요?
2. 무식하게 (A, B, C, D, E, F, G)로 넣어도 데이터베이스가 버틸 수 있을까요?
- 크기가 엄청 크겠죠? 크니까 문제가 많이 되더라구요. 어디 백업하기도 곤란하고;;
3. 혹시 mySQL이 똑똑하게 공간적인 변화의 특성을 잘 파악해서 알아서 압축을 할까요?
- 역시 크기가 ㅜ.ㅜ 위와 같은 정보를 여러(수십?)개 만들어야 할 것 같더라구요..
4. 걍 (A, B, C, D, E, F, G)가 아니라 뭔가 다른 테이블 구조를 사용하면 더 작고도 같은 일을 할 수 있을까요?
데이터베이스에 문외한이어서.. 지금 이걸 파일시스템을 적당히 사용해서 처리하고 있는데
검색등이 유연하지 않고 크기가 역시 너무 커서 쉽지 않네요.
너무 많은 걸 물어보는 것 같아 너무 죄송한 마음입니다만, 저에게는 굉장히 큰 문제여서요.
혹시 이런 문제에 도움이 될만한 책이라도 알려주시면 매우 고맙겠습니다.
감사합니다!
|