안녕하세요
대용량 데이터 처리 관련해서 질문이 있어서 이렇게 글 남깁니다.
현재 현장에서 1초에 약 9만건 정도의 대용량 데이터가 발생하고 있습니다.
MSSQL 2012 서버로 DB를 구축 예정이고
데이터가 저장되는 테이블의 구조는
측정시간 datetime2(4) PK
측정항목ID tinyint PK
측정값 float Null 허용
이렇게 3개의 column 으로 되어 있습니다.
C# SqlBulkCopy 클래스를 활용해서 약 400ms 정도의 속도로 데이터를 처리하고 있고 기능에는 문제가 없습니다만..
이 데이터들이 쌓이면서 1일 190 G 정도의 데이터가 샇입니다.
양이 너무 많아지다보니 해당 데이터를 어떻게 관리하는 것이 좋은 것일지 고민이 됩니다.
1시간 정도만 테이블에 저장하고 (그래도 8기가 정도 됩니다.)
1시간이 지난 데이터는 HISTORY 테이블을 따로 만들어서 그쪽으로 보관을 할지...
7일 기준으로 이전 데이터는 삭제를 하는 식으로 운용을 생각중입니다만..
삭제시 발생하는 부하도 만만치 않을거 같아서.. 그것도 고민이네요..
현장의 PC는 하드가 SSD 2TB 하나라서
물리적인 데이터 드라이브 분리도 안되는 상황이고...
장기적인 운용을 위한 좋은 방법이 없을까요?
현재까지 조사한 대로 라면.. Patitioning Table 이라는 것이 그나마 가능성이 보이는데..
데이터가 쌓이는 양과 속도가 장난이 아니라서 년단위가 아닌 일 단위 관리가 될거 같습니다..
그렇게 되면 또 Patitioning Table 관리를 위해 1주일 마다 현장에 들어가야하는 것도 문제가 될거 같네요..
한번 설치하면 그 뒤로는 가급적 유지보수가 발생하지 않도록 설계하고 싶습니다만..
알고 있는 지식이 일천하다보니.. 이렇게 조언을 구합니다.
일단 오늘 현장에 가서 샘플 시연하고 데이터를 얼마나 보관할 것인지 논의가 이루어질 예정입니다만..
현장 데이터의 경우 장비 보관은 불가능할 것을 못박아야할것 같네요.. 1.4 테라 라니.. 후덜덜..
1주일도 못가는 DB 데이터 양은 처음 봅니다..
많은 조언 부탁드립니다..
PS. 현장 PC 사양 입니다.
Intel i7 - 8세대 2.6Ghz
16 GB
SSD 2TB (삼성)
Windows 7 64bit
SQL Server 2012 (설치 예정)
제 개인적인 생각으로는..
처음부터 테이블을 backup_20180101, backup_20180102 이런식으로 만들어 놓고 인서트를 날짜에 맞게 시키는게 어떨지요..
7일 지난 테이블은 drop를 해버리면 되니요..
그냥 파일로 저장하는것도 괜찮을거 같은데요.