주식프로그램을 위해서 DB를 설계할 예정입니다.
여러가지 데이터를 저장하는데, 그 중에 가장 큰 비중을 차지하는게 체결 데이터 입니다.
체결데이터는 하루에 200~400만개 정도의 데이터가 생성됩니다. (컬럼은 int정도 되는 데이터 13개(?)정도 예상됩니다. 줄여야된다면 5개 정도도 가능합니다.) 이게 1년정도 쌓였다고 가정하면 5억 ~ 10억개의 row가 쌓이는거죠.
하루에 한번 insert(200~400만개), select(대략 1000만개, 많으면 1억개) 한번 씩 합니다.
그리고 테스트도 진행하는데, 테스트는 전체 데이터는 select하게 됩니다. 아마 데이터가 너무 많기때문에 분할해서 받아올것 같습니다. 이 테스트는 시간나는대로 가끔씩 하게 됩니다.
종합해보면 데이터에 수정되고 내용에 접근하는게 live로 진행되진 않다는겁니다.
이 상황에서 어떤 DB를 사용하는게 좋을지 조언 부탁드립니다.
흑은 DB가 아니라 그냥 파일로 저장하는게 좋다면 어떤 형식으로 저장하는게 좋을지 조언 부탁드립니다. 최근에 검색했던 것 중에서는 hdf5라는 것이 그냥 단순 파일로 저장하는 것 같았는데, 나름 괜찮은 방식같아보였습니다.
Comment 2
-
지영아빠
2020.06.22 14:33
-
진윤호
2020.07.28 13:41
한 컬럼의 데이터가 일정한 규칙을 가지고 반복적인 데이터가 저장된다면 SQL Server의 Clustered Columnstore Index (CCI) 를 이용하여 처리 하는 것도 괜찮습니다.
엔터프라이즈 이상 버전에서 제공됩니다. 비슷한 columnar index 로는 HBase 가 있습니다.
다른 방법으로 통계적인 예상치를 추출되기 위한 것이라면 Elasticsearch를 구성하여 병렬처리하는 것도 방법입니다.
비슷한 방법으로 병렬처리 가능한 Hadoop Echo System 중 HDFS와 Hive(ORC 압축 형태) 를 채택하여 구성하고 SQL과 같은 방식으로 사용할 수 있고 Scala 또는 Python의 역량을 보유하고 계신다면 HDFS와 Spark(parquet 압축 형태)을 이용하여 인메로리 처리하는 것이 가장 빠른 방법으로 예상됩니다.
timeseries DB라고 해보면 맞는 nosql을 찾을 수 있을 듯합니다.