프린트 하기

내맘대로긍정이 알려주는

Oracle 23ai 신기능
무료 세미나 발표자료

다운로드 trending_flat

OS 환경 : Oracle Linux 8.4 (64bit)

 

DB 환경 : DuckDB

 

방법 : Oracle Linux 8.4에 DuckDB 설치 가이드

본문에서는 오라클 리눅스 8 버전에 DuckDB 를 설치하는 방법을 설명함

 

 

DuckDB 란?

DuckDB는 주로 임베디드 분석 워크로드에 초점을 맞춘 관계형 OLAP(Online Analytical Processing) 데이터베이스 관리 시스템임
DuckDB는 서버리스(serverless) 방식으로 작동하며, 사용자가 별도의 서버를 설정하거나 관리할 필요 없이 애플리케이션 내부에서 데이터베이스를 구동할 수 있음
이로 인해 로컬 환경이나 클라우드 환경 모두에서 매우 편리하게 사용할 수 있음

기능
1. 임베디드 분석
DuckDB는 애플리케이션 내부에서 직접 실행될 수 있음
서버 없이도 데이터베이스 작업을 수행할 수 있으므로, 사용자가 DB 관리 작업을 할 필요가 없음

2. 데이터 분석에 특화
DuckDB는 데이터 분석 작업, 특히 OLAP 쿼리에 최적화되어 있음
CSV, Parquet 등 다양한 형식의 데이터를 바로 쿼리할 수 있으며, 사용자는 별도로 데이터를 로드하지 않고도 필요한 데이터를 분석할 수 있음

3. SQL 쿼리 지원
DuckDB는 SQL 표준을 지원하여 사용자가 익숙한 SQL 구문을 이용해 데이터를 다룰 수 있음
데이터 쿼리와 변환을 위한 다양한 SQL 기능을 제공함

4. 빠른 속도와 효율성
DuckDB는 메모리 내에서 작동하도록 설계되었으며, 대규모 데이터셋을 처리하는데 있어서도 매우 빠른 성능을 보임
임베디드 시스템 환경에서 효율적인 성능을 발휘하도록 설계되어 있음

5. 다양한 통합 지원
DuckDB는 Python, R, C++, JavaScript와 같은 다양한 프로그래밍 언어와 쉽게 통합할 수 있어, 다양한 환경에서 데이터베이스 분석을 할 수 있음
DuckDB의 API를 사용하면 해당 언어에서 직접 데이터베이스 쿼리를 실행하고 결과를 처리할 수 있음

 

 

OS 설치는 아래 게시글 참고

참고 : Oracle Linux 8.4 설치 가이드 ( https://positivemh.tistory.com/761 )

 

 

필수 요구 패키지 설치

1
# dnf install -y git g++ cmake ninja-build openssl-devel

 

 

공식 링크에 방문하여 설치파일 다운로드

나의 경우 1.1.0 버전에 Command line, Linux, Direct download, x86_64를 선택한 뒤 Link 파일을 다운로드 받음 

https://duckdb.org/docs/installation/

 

 

서버에 업로드 후 unzip

1
2
3
# unzip duckdb_cli-linux-amd64.zip
Archive:  duckdb_cli-linux-amd64.zip
  inflating: duckdb

 

 

duckdb 파일 실행 후 버전 확인

1
2
3
4
5
6
7
8
9
10
11
12
# ./duckdb
v1.1.0 fa5c2fe15f
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
select version();
┌─────────────┐
│ "version"() │
│   varchar   │
├─────────────┤
│ v1.1.0      │
└─────────────┘

정상적으로 설치?됨

(설치라기 보단 압축을 풀어서 실행만시켰지만 동작함)

 

 

명령어는 .{명령어} 이렇게 사용가능함

명령어 .help 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
D .help
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.columns                 Column-wise rendering of query results
.constant ?COLOR?        Sets the syntax highlighting color used for constant values
.constantcode ?CODE?     Sets the syntax highlighting terminal code used for constant values
.databases               List names and files of attached databases
.dump ?TABLE?            Render database content as SQL
.echo on|off             Turn command echo on or off
.excel                   Display the output of next command in spreadsheet
.edit                    Opens an external text editor to edit a query.
.exit ?CODE?             Exit this program with return-code CODE
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.highlight [on|off]      Toggle syntax highlighting in the shell on/off
.import FILE TABLE       Import data from FILE into TABLE
.indexes ?TABLE?         Show names of indexes
.keyword ?COLOR?         Sets the syntax highlighting color used for keywords
.keywordcode ?CODE?      Sets the syntax highlighting terminal code used for keywords
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.maxrows COUNT           Sets the maximum number of rows for display (default40). Only for duckbox mode.
.maxwidth COUNT          Sets the maximum width in characters. 0 defaults to terminal width. Only for duckbox mode.
.mode MODE ?TABLE?       Set output mode
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ...       Manage SQL parameter bindings
.print STRING...         Print literal STRING
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.rows                    Row-wise rendering of query results (default)
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.separator COL ?ROW?     Change the column and row separators
.sha3sum ...             Compute a SHA3 hash of database content
.shell CMD ARGS...       Run CMD ARGS... in a system shell
.show                    Show the current values for various settings
.system CMD ARGS...      Run CMD ARGS... in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.timer on|off            Turn SQL timer on or off
.width NUM1 NUM2 ...     Set minimum column widths for columnar output

 

 

duckdb 나가기 .exit 를 입력하면 됨

1
2
3
D .exit
# pwd
/root

 

 

예시 쿼리 csv 파일 직접 읽기

예시 flights.csv 파일 다운로드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ls
duckdb  duckdb_cli-linux-amd64.zip  flights.csv
# ./duckdb
v1.1.0 fa5c2fe15f
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
select * from 'flights.csv';
┌────────────┬───────────────┬────────────────┬─────────────────┐
│ FlightDate │ UniqueCarrier │ OriginCityName │  DestCityName   │
│    date    │    varchar    │    varchar     │     varchar     │
├────────────┼───────────────┼────────────────┼─────────────────┤
│ 1988-01-01 │ AA            │ New York, NY   │ Los Angeles, CA │
│ 1988-01-02 │ AA            │ New York, NY   │ Los Angeles, CA │
│ 1988-01-03 │ AA            │ New York, NY   │ Los Angeles, CA │
└────────────┴───────────────┴────────────────┴─────────────────┘

 

 

참조 : 

https://duckdb.org/docs/dev/building/build_instructions.html

https://duckdb.org/docs/installation/index?version=stable&environment=cli&platform=linux&download_method=direct&architecture=x86_64

https://github.com/duckdb/duckdb

https://duckdb.org/docs/data/csv/overview