지난 1학기, 컴퓨터구조 강의를 들으면서 이것저것 논문을 찾아보다가 우연하게 찾은 논문이 하나 있습니다. 딱히 내용이 궁금했던 것은 아닌데, 논문의 저자 중에서 컴퓨터구조 분야에서 정말 많이 보이던 이름을 발견해서 흥미가 생겼습니다. 왜 흥미가 생겼냐면, 논문의 주제가 데이터베이스였기 때문입니다. 아키텍쳐 교수님이 데이터베이스 논문을? 이라는 생각이 들어 흥미롭게 읽었던 논문입니다.
이 논문에서 다루었던 주제가 바로 HTAP 데이터베이스입니다. HTAP 데이터베이스를 처음 접한 논문이었고, 지금 연구실에서 진행하는 프로젝트와 꽤나 연관이 있다고 생각해 HTAP 데이터베이스의 개념에 대해 특히 집중해서 읽었었는데요. 그 논문의 내용을 조금 정리해서 작성하려고 했는데 논문 서치를 조금 해 보니 SIGMOD에 관련된 튜토리얼이 있었습니다. 아무래도 논문의 릴워크에 있는 설명보다는 이 튜토리얼이 HTAP 관련해서 더 충실하게 정리가 되어 있을 것 같아서 이 내용을 정리해보고자 합니다.
HTAP?
HTAP란 Hybrid Transactional Analytical Processing의 약자입니다. 가끔가다가 OLTP, OLAP과 같은 단어를 보셨을 수도 있습니다. 각각 on-line transactional processing, on-line analytical processing의 약자인데요. 간단하게 설명하자면 전자는 빠르게 스트리밍되어 들어오는 데이터를 효율적으로 저장하고 관리하고 싶다!가 주된 목적인 것이고 후자는 그 데이터를 빠르게 분석하고 싶다!가 주된 목적인 것입니다. HTAP은 이름에서 알 수 있듯이 OLTP와 OLAP을 융합하고 동시에 효율적으로 활용해 트랜잭션 관리와 데이터 분석의 두 마리 토끼를 잡는다는 목적을 가지고 있습니다. 빠른 속도를 위해 in-memory 저장소를 활용한다는 것도 틍징입니다.
잠깐동안 우분투를 네이티브로 설치했다가 다시 윈도우로 회귀했습니다. 너무 윈도우가 느려지고 계속 오류가 나서 어차피 컴퓨터에 내용도 별로 없고 중요한 자료는 다 클라우드에 올라가있겠다, 그냥 포맷을 시켜버리기로 마음먹었습니다. 포맷을 시키고 나니 이것저것 설정할 것이 조금 있더군요.
가장 먼저 한 것은 git이나 vscode, Windows Terminal, WSL2 등을 설치한 것이었습니다. 하지만 이 포스팅은 그런 큼직한 내용을 다루기 위한 것이 아닙니다. 정말 사소한, WSL에서 구동하는 우분투 내의 기본 사용자 이름을 바꾸는 것에 관한 것입니다.
우선 WSL을 설치하는 것은 정말 간단합니다. 제가 예전에 할 때는 더 복잡했던 것 같은데, 이제는 PowerShell에 다음 명령어 한 줄만 쳐도 가능합니다.
# PowerShell$ wsl --install
그러면 설정부터 우분투 설치까지 알아서 다 해 줍니다. 그리고 난 뒤, 컴퓨터를 재부팅을 하고 터미널을 키면 우분투 설정을 마무리하게 되죠. 유저명과 비밀번호를 설정하는 것으로 말입니다.
그런데 저는 여기서 정말 멍청한 실수를 했습니다. 아무런 생각 없이 유저명을 user로 해 버린 것입니다. 그래서 너무 늦기 전에 유저명을 바꾸기로 했습니다.
위 링크의 설명을 하나하나 따라가면 쉽습니다. 먼저 임시 유저를 하나 만들고 sudo 권한을 부여합니다. 저는 tempuser라는 유저를 새로 만들었습니다.
# Ubuntu$ sudo adduser tempuser
그러면 여기서 이름이나 부서나 이메일같이 지금 저희에게는 쓸모없는 설정을 마구 물어봅니다. 모두 설정할 필요 없이 엔터키를 눌러 스킵합니다. 그리고 해당 유저에게 sudo 권한을 부여합니다.
# Ubuntu$ sudo usermod -aGsudo tempuser
이 다음에는 새로운 유저인 tempuser로 로그인을 해야 합니다. 저는 WSL에서 우분투를 쓰면서 이 부분이 조금 곤란했습니다. 어떻게 유저를 변경해야 하는지 몰랐기 때문입니다.
Changing Current User
WSL 우분투에서 사용자를 바꾸기 위해서는 다시 윈도우 명령 프롬프트로 들어가야 합니다. 명령 프롬프트에서 다음 명령어를 쳐 봅시다.
# CMD Prompt$ ubuntu config --default-user root
그러면 WSL에서 우분투 터미널을 킬 때 로그인되는 사용자가 root일 것입니다. 여기서 앞서서 tempuser 사용자를 만드는 것이 왜 불필요한 것인지 알 수 있습니다. 어차피 우리가 사용하는 WSL에 대한 루트 권한이 있기 때문에 굳이 별도의 유저를 만들 필요가 없는 것입니다.
Changing Username
그러면 이제 root 사용자로 우분투를 켠 뒤 어떻게 설정하면 되는지 알아보도록 하겠습니다.
가장 먼저 기존 사용자 이름으로 실행되고 있던 프로세스를 죽여야 합니다. 다음 명령어를 통해 현재 실행되고 있는 프로세스를 찾습니다.
# Ubuntu$ ps -ef
그러면 현재 실행되고 있는 프로세스를 실행시킨 사용자 이름(UID)와 프로세스 번호(PID)를 비롯한 정보를 확인할 수 있습니다. 여기서 우리가 바꾸고자 하는 사용자가 실행중인 프로세스 번호를 죽입니다. 다음 명령어를 실행하면 됩니다.
# Ubuntu$ kill <pid>
애초에 우리는 지금 루트 권한으로 로그인한 것이기 때문에 권한을 획득할 필요가 없습니다. 바꾸고자 하는 사용자가 실행중인 프로세스를 위 명령어를 통해 모두 죽여서 해당 사용자가 실행중인 프로세스가 없을 때 비로소 사용자 이름을 바꿀 수 있습니다.
GPUDirect Storage를 사용해보기 위해서는 조건이 몇가지 있습니다. 그 중에서는 NVMe가 사용 가능한 SSD가 필요하다는 조건이 있습니다. 제가 당장 쓸 수 있는 조건을 만족하는 SSD는 제 운영체제가 설치된 SSD 하나밖에 없었습니다. 그래서 남는 용량을 파티션해서 우분투를 설치해 사용하려고 계획했습니다. 유튜브 영상과 블로그를 몇가지 참조했는데, 이전 포스팅과 같이 문제가 잘 풀렸으면 포스팅을 작성하지 않았을 것입니다.
이전 포스팅들에서 GPU에 대해서 다뤘던 적이 꽤 있습니다. GPU를 효율적으로 활용하는 자료구조와 GPU로 직접 데이터를 전송하는 새로운 기술 등을 다뤘습니다. 이번 포스팅은 GPU를 사용한 데이터베이스 연산에 관한 연구들을 다뤄보고자 합니다. 이 포스팅에 모든 내용을 담지는 않고, 일종의 인덱스 포스팅으로 삼으려고 합니다.