Q 언어-디스크의 테이블
하드 디스크 (이력 데이터베이스라고도 함)의 데이터는 플랫 파일, 분할 된 테이블 및 분할 된 테이블의 세 가지 형식으로 저장할 수 있습니다. 여기서는 이러한 세 가지 형식을 사용하여 데이터를 저장하는 방법을 배웁니다.
플랫 파일
플랫 파일은 메모리에 완전히로드되므로 크기 (메모리 공간)가 작아야합니다. 테이블은 완전히 하나의 파일로 디스크에 저장됩니다 (크기가 중요합니다).
이러한 테이블을 조작하는 데 사용되는 기능은 다음과 같습니다. set/get −
`:path_to_file/filename set tablename
어떻게 작동하는지 예를 들어 보겠습니다.
q)tables `.
`s#`t`tab`tab1
q)`:c:/q/w32/tab1_test set tab1
`:c:/q/w32/tab1_test
Windows 환경에서 플랫 파일은 다음 위치에 저장됩니다. C:\q\w32
디스크 (히스토리 DB)에서 플랫 파일을 가져 와서 get 다음과 같이 명령-
q)tab2: get `:c:/q/w32/tab1_test
q)tab2
sym | time price size
--------- | -------------------------------
APPLE | 11:16:39.779 8.388858 12
MSFT | 11:16:39.779 19.59907 10
IBM | 11:16:39.779 37.5638 1
SAMSUNG | 11:16:39.779 61.37452 90
APPLE | 11:16:39.779 52.94808 73
새 테이블이 생성됩니다. tab2 내용이 저장된 tab1_test 파일.
스플레이 된 테이블
테이블에 열이 너무 많으면 이러한 테이블을 분할 형식으로 저장합니다. 즉, 디스크에 디렉터리에 저장합니다. 디렉토리 내에서 각 열은 열 이름과 동일한 이름으로 별도의 파일에 저장됩니다. 각 열은 kdb + 바이너리 파일에 해당 유형의 목록으로 저장됩니다.
분할 된 형식으로 테이블을 저장하는 것은 많은 열 중 몇 개의 열에 만 자주 액세스해야 할 때 매우 유용합니다. 펼쳐진 테이블 디렉토리에는.d 열 순서를 포함하는 바이너리 파일.
플랫 파일과 마찬가지로 테이블은 다음을 사용하여 펼쳐진 상태로 저장할 수 있습니다. set명령. 테이블을 펼친 상태로 저장하려면 파일 경로가 백래시로 끝나야합니다.
`:path_to_filename/filename/ set tablename
펼쳐진 테이블을 읽으려면 다음을 사용할 수 있습니다. get 기능-
tablename: get `:path_to_file/filename
Note − 테이블이 확장 된 상태로 저장 되려면 키가 지정되지 않고 열거되어야합니다.
Windows 환경에서 파일 구조는 다음과 같이 나타납니다.
분할 된 테이블
분할 된 테이블은 많은 양의 데이터를 포함하는 거대한 테이블을 관리하는 효율적인 방법을 제공합니다. 파티션을 나눈 테이블은 더 많은 파티션 (디렉터리)에 분산 된 테이블입니다.
각 파티션 내에서 테이블은 분할 된 테이블의 구조를 가진 자체 디렉터리를 갖습니다. 콘텐츠에 대한 최적화 된 액세스를 제공하기 위해 테이블을 일 / 월 / 년 단위로 분할 할 수 있습니다.
분할 된 테이블의 내용을 얻으려면 다음 코드 블록을 사용하십시오.
q)get `:c:/q/data/2000.01.13 // “get” command used, sample folder
quote| +`sym`time`bid`ask`bsize`asize`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0
0 0 0….
trade| +`sym`time`price`size`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 ….
트레이드 테이블의 내용을 가져 오자-
q)get `:c:/q/data/2000.01.13/trade
sym time price size ex
--------------------------------------------------
0 09:30:00.496 0.4092016 7 T
0 09:30:00.501 1.428629 4 N
0 09:30:00.707 0.5647834 6 T
0 09:30:00.781 1.590509 5 T
0 09:30:00.848 2.242627 3 A
0 09:30:00.860 2.277041 8 T
0 09:30:00.931 0.8044885 8 A
0 09:30:01.197 1.344031 2 A
0 09:30:01.337 1.875 3 A
0 09:30:01.399 2.187723 7 A
Note − 분할 모드는 하루에 수백만 개의 레코드가있는 테이블 (즉, 시계열 데이터)에 적합합니다.
Sym 파일
sym 파일은 모든 분할 및 분할 된 테이블의 기호 목록을 포함하는 kdb + 바이너리 파일입니다. 다음과 같이 읽을 수 있습니다.
get `:sym
par.txt 파일 (선택 사항)
이것은 파티션이 여러 디렉토리 / 디스크 드라이브에 분산되어있을 때 사용되는 구성 파일이며 디스크 파티션에 대한 경로를 포함합니다.