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 파일 (선택 사항)

이것은 파티션이 여러 디렉토리 / 디스크 드라이브에 분산되어있을 때 사용되는 구성 파일이며 디스크 파티션에 대한 경로를 포함합니다.