빅데이터, IoT, 인공지능과 같은 용어를 요즘은 주변에서 쉽게 볼 수 있다. 데이터베이스 분야도 전통적인 RDBMS뿐만 아니라 NoSQL, 메모리 데이터베이스, 시계열 데이터베이스 또한 관심 분야로 떠오르고 있다. 이제는 단순한 개념적 학습이 아닌 실무에서 방대한 데이터 처리를 실시간으로 처리해야 하는 상황에 직면한 것이다. 참고로 국산 시계열 데이터베이스인 마크베이스(MACHBASE)를 살펴볼 필요가 있는데 초당 104만 건 정도의 데이터를 처리할 수 있다고 한다.
In-Memory OLTP는 SQL Server에서 트랜잭션 처리, 데이터 로드 및 일시적인 데이터 시나리오의 성능 최적화하기 위해 사용할 수 있는 뛰어난 기술이다(In-Memory OLTP is the premier technology available in SQL Server and SQL Database for optimizing performance of transaction processing, data ingestion, data load, and transient data scenarios). 전통 방식인 디스크 테이블보다 실제로 5~30배의 성능 향상이 있다고 한다.
아래의 글은 Channel9에서 동영상 강좌로 소개한 SQL Server 2016 In-Memory OLTP를 정리한 것이다. 여기에 필요한 몇 가지 관련 내용을 추가하였다.
업무용 프로그램을 개발하기 위한(개인 프로젝트, 테스트 용도) 환경 구성 중 하나로 데이터베이스 구성은 VirtualBox에 CentOS + Oracle, SQL Server, MySQL, MongoDB, PostgreSQL를 설치하는 데 이때에 필요한 설치과정을 필수적인 부분만 정리하여 보았다. CentOS 버전은 8.1이며 VirtualBox에 기본값으로 CentOS는 설치가 되었다고 가정한다.
systemctl set-default multi-user.target #runlevel 3
vi /etc/sysconfig/selinux
SELINUX=disabled #enforcing
vi /etc/fstab
tmpfs /dev/shm tmpfs size=6G 0 0 #추가(메모리8G)
firewall-cmd --permanent --add-port=1433/tcp
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
firewall-cmd --list-all
reboot
# 기타
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='xxx.xxx.xxx.xxx/24' reject"
firewall-cmd --permanent --remove-port=27017/tcp
# 데몬설정확인
systemctl list-unit-files | grep -i enabled
systemctl disable(enable) mssql-server.service
netstat -tnlp
Rust에서는 OOP의 특성인 Class 키워드가 없다. 대신에 struct와 impl이 있으므로 이를 혼합하여 사용한다. 다음 예제는 Rust에서 구조적 프로그래밍을 위한 struct, trait, impl 키워드를 살펴볼 것이며 mod 키워드를 통해 다른 rust 파일을 불러와 재사용할 수 있는 모듈(module) 시스템 설명도 포함하였다. 참고로 실행 파일을 static build로 만드는 환경설정은 아래와 같다.
프로젝트 폴더의 Root에 .cargo
폴더를 만들고 이 안에 config
파일을 만든다.
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]