명령줄

machbase-neo serve

machbase-neo 서버 프로세스를 시작합니다.

플래그

일반 플래그

flagdesc
--host수신 네트워크 주소(기본값 127.0.0.1)
예) --host 0.0.0.0
-c, --config구성 파일 경로
예) --config /data/machbase-neo.conf
--pidPID 저장 파일 경로
예) --pid /data/machbase-neo.pid
--data데이터베이스 경로(기본값 ./machbase_home)
예) --data /data/machbase
--file파일 저장 경로(기본값 .)
예) --file /data/files
--backup-dir백업 디렉터리 경로(기본값 ./backups)
예) --backup-dir /data/backups Since v8.0.26
--pref환경 설정 디렉터리 경로
(기본값 ~/.config/machbase)
--preset데이터베이스 프리셋 auto, fog, edge (기본값 auto)
예) --preset edge

데이터베이스 세션 플래그

개념적으로 machbase-neo를 TQL을 포함한 API 영역(HTTP, MQTT 등)과 DBMS 영역으로 나누면, 지금까지는 API와 DBMS 사이의 트래픽 제한이 없었습니다.

예를 들어 MQTT 클라이언트 100개와 HTTP 클라이언트 100개, 총 200개가 동시에 DB 쿼리를 실행하면 DBMS에서는 200개의 세션이 실행됩니다. DBMS로 전달되는 트래픽 흐름을 제어할 수 있다면 상황에 따라 유연하게 구성할 수 있습니다. 이를 위해 machbase-neo serve에 사용할 수 있는 새로운 플래그가 추가되었습니다. Since v8.0.44

flagdesc
--max-open-conn< 0: 무제한(기본값)
0: CPU_코어_수 * factor
> 0: 지정한 최대 연결 수
--max-open-conn-factor--max-open-conn이 0일 때 최대 연결 수를 계산하는 계수(기본값 2).
--max-open-query< 0: 무제한
0(기본값): CPU_코어_수 * factor
> 0: 지정한 최대 쿼리 실행 수
--max-open-query-factor--max-open-query가 0일 때 최대 쿼리 실행 수를 계산하는 계수(기본값 2)
  • –mach-open-conn은 API와 DBMS 사이에서 동시에 열 수 있는 연결(=세션) 수를 제어합니다. 설정값을 초과하면 API 레벨에서 대기합니다.
    • < 0 음수(예: -1)를 지정하면 이전 버전과 동일하게 제한 없이 동작합니다.
    • 0 기본값으로 설정하지 않으면 CPU 코어 수 * max-open-conn-factor로 계산합니다. 기본 max-open-conn-factor는 1.5입니다.
    • > 0 양수를 지정하면 해당 값에 맞춰 동작합니다.

이 설정은 machbase-neo shell에서 session limit 명령으로 확인할 수 있으며, session limit --set=<num>으로 변경할 수 있습니다. 변경 사항은 프로세스가 실행되는 동안만 유지되므로 영구적으로 적용하려면 시작 스크립트를 수정해야 합니다.

  • –mach-open-conn-factor는 위의 --mach-open-conn이 0(기본값)일 때 CPU 코어 수 * factor로 계산하는 계수를 설정합니다. 값은 0 이상이어야 하며 0 이하로 지정하면 기본값 2.0이 적용됩니다.

예를 들어 CPU 코어가 8개이고 factor를 2.0으로 설정하면 최대 16개의 연결이 열리고, 0.5로 설정하면 4개의 연결이 됩니다. 두 옵션을 모두 지정하지 않으면 기본 factor 2.0이 적용되어 16개의 연결이 허용됩니다.

HTTP 플래그

Since v8.0.43
flagdefaultdesc
--http-linger-1HTTP 소켓 옵션. -1은 SO_LINGER 비활성화, >=0은 SO_LINGER 설정
--http-readbuf-size0HTTP 소켓 읽기 버퍼 크기. 0은 시스템 기본값 사용
--http-writebuf-size0HTTP 소켓 쓰기 버퍼 크기. 0은 시스템 기본값 사용
--http-debugfalseHTTP 디버그 로그 활성화
--http-debug-latency"0"지정한 시간보다 오래 걸린 요청만 로그 (예: “3s”). “0"은 모든 요청 기록
--http-allow-statz/db/statz API 접근을 허용할 출발지 IP(쉼표 구분). 기본은 127.0.0.1만 허용

로그 플래그

flagdefaultdesc
--log-filename- (stdout)로그 파일 경로
예) --log-filename /data/logs/machbase-neo.log
--log-levelINFO로그 레벨: TRACE, DEBUG, INFO, WARN, ERROR
예) --log-level INFO
--log-appendtrue기존 로그 파일에 이어쓰기 Since v8.0.13
--log-rotate-schedule@midnight로그 롤링 스케줄 Since v8.0.13
--log-max-size10로그 파일 최대 크기(MB) Since v8.0.13
--log-max-backups1백업 로그 파일 최대 개수 Since v8.0.13
--log-max-age7백업 파일 보관 일수 Since v8.0.13
--log-compressfalse백업 파일 gzip 압축 Since v8.0.13
--log-time-utcfalse로그 타임스탬프를 UTC로 기록 Since v8.0.13

리스너 플래그

flagdefaultdesc
--shell-port5652SSH 수신 포트
--mqtt-port5653MQTT 수신 포트
--mqtt-sock/tmp/machbase-neo-mqtt.sockMQTT 유닉스 소켓 Since v8.0.36
--http-port5654HTTP 수신 포트
--http-sock/tmp/machbase-neo.sockHTTP 유닉스 소켓 Since v8.0.36
--grpc-port5655gRPC 수신 포트
--grpc-sockmach-grpc.sockgRPC 유닉스 도메인 소켓
--grpc-insecurefalse평문 TCP 소켓 사용 시 true로 설정, TLS 비활성화 Since v8.0.18
--mach-port5656Machbase 네이티브 수신 포트
📌
중요
--host 기본값은 루프백 주소이므로 원격 호스트에서 machbase-neo에 접근할 수 없습니다.
원격 클라이언트의 네트워크 연결을 허용하려면 --host <host-address> 또는 --host 0.0.0.0으로 설정하십시오.

플래그 없이 machbase-neo serve를 실행하면,

$ machbase-neo serve

다음 명령과 동일합니다.

$ machbase-neo serve --host 127.0.0.1 --data ./machbase_home --file . --preset auto

machbase-neo shell

machbase-neo 셸을 실행합니다. 다른 인수가 없으면 대화형 모드로 시작합니다.

플래그

flag (long)defaultdesc
-s, --servertcp://127.0.0.1:5655machbase-neo gRPC 주소
예) -s unix://./mach-grpc.sock
예) --server tcp://127.0.0.1:5655
--usersys사용자 이름
환경 변수: NEOSHELL_USER Since v8.0.4
--passwordmanager비밀번호
환경 변수: NEOSHELL_PASSWORD Since v8.0.4

machbase-neo 셸은 시작할 때 OS 환경 변수 NEOSHELL_USER, NEOSHELL_PASSWORD에서 사용자 이름과 비밀번호를 찾습니다. --user, --password 플래그를 지정하면 환경 변수 대신 해당 값을 사용합니다.

사용자 이름과 비밀번호의 우선순위

명령줄 플래그

--user, --password를 지정했다면 해당 값을 사용합니다.

환경 변수

$NEOSHELL_USER(Windows는 %NEOSHELL_USER%)가 설정되어 있으면 해당 값을 사용자 이름으로 사용합니다.

$NEOSHELL_PASSWORD(Windows는 %NEOSHELL_PASSWORD%)가 설정되어 있으면 해당 값을 비밀번호로 사용합니다.

기본값

위 항목이 모두 없으면 기본값 sys, manager를 사용합니다.

실무 예시

보안을 위해 아래처럼 즉석 환경 변수를 사용하는 것을 권장합니다.

$ NEOSHELL_PASSWORD='my-secret' machbase-neo shell --user sys

--password 플래그를 사용하면 아래와 같이 단순한 ps 명령으로 비밀번호가 노출될 수 있다는 점에 주의하십시오.

$ machbase-neo shell --user sys --password manager
$ ps -aef |grep machbase-neo
  501 13551  3598   0  9:33AM ttys000    0:00.07 machbase-neo shell --user sys --password manager

쿼리 실행

machbase-neo» select binary_signature from v$version;
┌────────┬─────────────────────────────────────────────┐
│ ROWNUM │ BINARY_SIGNATURE                            │
├────────┼─────────────────────────────────────────────┤
1 │ 8.0.2.develop-LINUX-X86-64-release-standard │
└────────┴─────────────────────────────────────────────┘
a row fetched.

테이블 생성

machbase-neo» create tag table if not exists example (name varchar(20) primary key, time datetime basetime, value double summarized);
executed.

스키마 확인

machbase-neo» desc example;
┌────────┬───────┬──────────┬────────┐
│ ROWNUM │ NAME  │ TYPE     │ LENGTH │
├────────┼───────┼──────────┼────────┤
1 │ NAME  │ varchar  │     202 │ TIME  │ datetime │      83 │ VALUE │ double   │      8└────────┴───────┴──────────┴────────┘

데이터 삽입

machbase-neo» insert into example values('tag0', to_date('2021-08-12'), 100);
a row inserted.

데이터 조회

machbase-neo» select * from example;
┌────────┬──────┬─────────────────────┬───────┐
│ ROWNUM │ NAME │ TIME(LOCAL)         │ VALUE │
├────────┼──────┼─────────────────────┼───────┤
1 │ tag0 │ 2021-08-12 00:00:00 │ 100└────────┴──────┴─────────────────────┴───────┘
a row fetched.

테이블 삭제

machbase-neo» drop table example;
executed.

서브 커맨드

explain

구문: explain [--full] <sql>

SQL 실행 계획을 보여줍니다.

machbase-neo» explain select * from example where name = 'tag.1';
 PROJECT
  TAG READ (RAW)
   KEYVALUE INDEX SCAN (_EXAMPLE_DATA_0)
    [KEY RANGE]
     * IN ()
   VOLATILE INDEX SCAN (_EXAMPLE_META)
    [KEY RANGE]
     *

export

  export [options] <table>
  arguments:
    table                    읽어올 테이블 이름
  options:
    -o,--output <file>       출력 파일(기본값: `-` stdout)
    -f,--format <format>     출력 형식
                csv          CSV 형식(기본값)
                json         JSON 형식
       --compress <method>   압축 방식 [gzip] (기본값은 비압축)
       --[no-]heading        헤더 출력 여부(기본값:false)
       --[no-]footer         푸터 출력 여부(기본값:false)
    -d,--delimiter           CSV 구분자(기본값 `,`)
       --tz                  datetime 처리용 타임존 지정
    -t,--timeformat          시간 형식 [ns|ms|s|<timeformat>] (기본값 `ns`)
                             자세한 내용은 "help timeformat" 참조
    -p,--precision <int>     부동소수점 값을 강제로 반올림할 자릿수 지정

import

  import [options] <table>
  arguments:
    table                 데이터를 쓸 테이블 이름
  options:
    -i,--input <file>     입력 파일(기본값: `-` 표준입력)
    -f,--format <fmt>     파일 형식 [csv] (기본값 `csv`)
       --compress <alg>   입력 데이터 압축 방식(지원: gzip)
       --no-header        헤더 없음, 첫 줄 생략하지 않음(기본값)
       --charset          입력이 UTF-8이 아니면 문자 인코딩 지정
       --header           첫 줄이 헤더이면 건너뜀
       --method           쓰기 방식 [insert|append] (기본값 `insert`)
       --create-table     테이블이 없으면 생성(기본값:false)
       --truncate-table   새 데이터 입력 전 테이블 비우기(기본값:false)
    -d,--delimiter        CSV 구분자(기본값 `,`)
       --tz               datetime 처리용 타임존 지정
    -t,--timeformat       시간 형식 [ns|ms|s|<timeformat>] (기본값 `ns`)
                          자세한 내용은 "help timeformat" 참조
       --eof <string>     EOF 라인 지정, [a-zA-Z0-9]+ 에 맞는 문자열 사용(기본값 '.')

show info

서버 정보를 표시합니다.

machbase-neo» show info;
┌────────────────────┬─────────────────────────────┐
│ NAME               │ VALUE                       │
├────────────────────┼─────────────────────────────┤
│ build.version      │ v2.0.0                      │
│ build.hash         │ #c953293f                   │
│ build.timestamp    │ 2023-08-29T08:08:00         │
│ build.engine       │ static_standard_linux_amd64 │
│ runtime.os         │ linux                       │
│ runtime.arch       │ amd64                       │
│ runtime.pid        │ 57814│ runtime.uptime     │ 2h 30m 57s                  │
│ runtime.goroutines │ 45│ mem.sys            │ 32.6 MB                     │
│ mem.heap.sys       │ 19.0 MB                     │
│ mem.heap.alloc     │ 9.7 MB                      │
│ mem.heap.in-use    │ 13.0 MB                     │
│ mem.stack.sys      │ 1,024.0 KB                  │
│ mem.stack.in-use   │ 1,024.0 KB                  │
└────────────────────┴─────────────────────────────┘

show ports

서버의 인터페이스 포트를 표시합니다.

machbase-neo» show ports;
┌─────────┬────────────────────────────────────────┐
│ SERVICE │ PORT                                   │
├─────────┼────────────────────────────────────────┤
│ grpc    │ tcp://127.0.0.1:5655                   │
│ grpc    │ unix:///database/mach-grpc.sock        │
│ http    │ tcp://127.0.0.1:5654                   │
│ mach    │ tcp://127.0.0.1:5656                   │
│ mqtt    │ tcp://127.0.0.1:5653                   │
│ shell   │ tcp://127.0.0.1:5652                   │
└─────────┴────────────────────────────────────────┘

show tables

구문: show tables [-a]

테이블 목록을 표시합니다. -a 플래그를 지정하면 숨김 테이블이 포함됩니다.

machbase-neo» show tables;
┌────────┬────────────┬──────┬─────────────┬───────────┐
│ ROWNUM │ DB         │ USER │ NAME        │ TYPE      │
├────────┼────────────┼──────┼─────────────┼───────────┤
1 │ MACHBASEDB │ SYS  │ EXAMPLE     │ Tag Table │
2 │ MACHBASEDB │ SYS  │ TAG         │ Tag Table │
3 │ MACHBASEDB │ SYS  │ TAGDATA     │ Tag Table │
└────────┴────────────┴──────┴─────────────┴───────────┘

show table

구문: show table [-a] <table>

테이블의 컬럼 목록을 표시합니다. -a 플래그를 지정하면 숨김 컬럼도 함께 표시됩니다.

machbase-neo» show table example -a;
┌────────┬───────┬──────────┬────────┬──────────┐
│ ROWNUM │ NAME  │ TYPE     │ LENGTH │ DESC     │
├────────┼───────┼──────────┼────────┼──────────┤
1 │ NAME  │ varchar  │    100 │ tag name │
2 │ TIME  │ datetime │     31 │ basetime │
3 │ VALUE │ double   │     17 │          │
4 │ _RID  │ long     │     20 │          │
└────────┴───────┴──────────┴────────┴──────────┘

show meta-tables

machbase-neo» show meta-tables;
┌────────┬─────────┬────────────────────────┬─────────────┐
│ ROWNUM │      ID │ NAME                   │ TYPE        │
├────────┼─────────┼────────────────────────┼─────────────┤
11000020 │ M$SYS_TABLESPACES      │ Fixed Table │
21000024 │ M$SYS_TABLESPACE_DISKS │ Fixed Table │
31000049 │ M$SYS_TABLES           │ Fixed Table │
41000051 │ M$TABLES               │ Fixed Table │
51000053 │ M$SYS_COLUMNS          │ Fixed Table │
61000054 │ M$COLUMNS              │ Fixed Table │
......

show virtual-tables

machbase-neo» show virtual-tables;
┌────────┬─────────┬─────────────────────────────────────────┬────────────────────┐
│ ROWNUM │      ID │ NAME                                    │ TYPE               │
├────────┼─────────┼─────────────────────────────────────────┼────────────────────┤
165 │ V$HOME_STAT                             │ Fixed Table (stat)293 │ V$DEMO_STAT                             │ Fixed Table (stat)3227 │ V$SAMPLEBENCH_STAT                      │ Fixed Table (stat)4319 │ V$TAGDATA_STAT                          │ Fixed Table (stat)5382 │ V$EXAMPLE_STAT                          │ Fixed Table (stat)6517 │ V$TAG_STAT                              │ Fixed Table (stat)......

show users

machbase-neo» show users;
┌────────┬───────────┐
│ ROWNUM │ USER_NAME │
├────────┼───────────┤
1 │ SYS       │
└────────┴───────────┘
a row fetched.

show license

 machbase-neo» show license;
┌────────┬──────────┬──────────────┬──────────┬────────────┬──────────────┬─────────────────────┐
│ ROWNUM │ ID       │ TYPE         │ CUSTOMER │ PROJECT    │ COUNTRY_CODE │ INSTALL_DATE        │
├────────┼──────────┼──────────────┼──────────┼────────────┼──────────────┼─────────────────────┤
100000023 │ FOGUNLIMITED │ VUTECH   │ FORESTFIRE │ KR           │ 2024-04-22 15:56:14 │
└────────┴──────────┴──────────────┴──────────┴────────────┴──────────────┴─────────────────────┘
a row fetched.

session list

구문: session list Since v8.0.17

 machbase-neo» session list;
┌────┬───────────┬─────────┬────────────┬─────────┬─────────┬──────────┐
│ ID │ USER_NAME │ USER_ID │ STMT_COUNT │ CREATED │ LAST    │ LAST SQL │
├────┼───────────┼─────────┼────────────┼─────────┼─────────┼──────────┤
25 │ SYS       │ 11 │ 1.667ms │ 1.657ms │ CONNECT  │
└────┴───────────┴─────────┴────────────┴─────────┴─────────┴──────────┘

session kill

구문: session kill <ID> Since v8.0.17

session stat

구문: session stat Since v8.0.17

machbase-neo» session stat;
┌────────────────┬───────┐
│ NAME           │ VALUE │
├────────────────┼───────┤
│ CONNS          │ 1│ CONNS_USED     │ 17│ STMTS          │ 0│ STMTS_USED     │ 20│ APPENDERS      │ 0│ APPENDERS_USED │ 0│ RAW_CONNS      │ 1└────────────────┴───────┘

desc

Syntax desc [-a] <table>

테이블 구조를 확인합니다.

machbase-neo» desc example;
┌────────┬───────┬──────────┬────────┬──────────┐
│ ROWNUM │ NAME  │ TYPE     │ LENGTH │ DESC     │
├────────┼───────┼──────────┼────────┼──────────┤
1 │ NAME  │ varchar  │    100 │ tag name │
2 │ TIME  │ datetime │     31 │ basetime │
3 │ VALUE │ double   │     17 │          │
└────────┴───────┴──────────┴────────┴──────────┘

machbase-neo restore

구문: machbase-neo restore --data <machbase_home_dir> <backup_dir> Since v8.0.17

백업에서 데이터베이스를 복구합니다.

$ machbase-neo restore --data <machbase home dir>  <backup dir>

machbase-neo version

버전 및 엔진 정보를 보여 줍니다.

machbase-neo_version

machbase-neo gen-config

기본 설정 템플릿을 출력합니다.

$ machbase-neo gen-config ↵

define DEF {
    LISTEN_HOST       = flag("--host", "127.0.0.1")
    SHELL_PORT        = flag("--shell-port", "5652")
    MQTT_PORT         = flag("--mqtt-port", "5653")
    HTTP_PORT         = flag("--http-port", "5654")
    GRPC_PORT         = flag("--grpc-port", "5655")
......
최근 업데이트