2016년 10월 1일 토요일

카산드라 ON MAC

이스트소프트에서 세미나했던 피드백에 삘 받아서 쓴다. DATASTAX를 이용하여 6 NODES 카산드라를 애저에 설치하고 각 노드끼리 교신하는 방법을 세미나 했었는데, 무진장 쉽고 이렇게 된다는 결과만 보여줬음에도 뒤에 들었던 많은 피드백이 모르겠다. 였다. NoSQL이 뭔지도 모르는 사람들이 많아서 그렇다. 그래서 몇자 적어 본다. 

그동안의 필체와는 사뭇 다른 일기 형식이라 다소 거북하실 수도 있겠으나 항상 그렇듯이 구독자들을 위해 글은 금방 내린다.(공유 많이 된거 빼고) 지식을 배운다기 보다 이런 엔지니어는 이런 생각을 가지고 있구나 라고 보는게 좋겠다.

1. 왜 카산드라인가?
우선 우린 MySQL을 많이 쓰고 배운다. 네이버도 MySQL, PHP로 지식in 만들어서 겁나 떠서 지금의 네이버가 되었다. 지금은 라인이 돈 벌지만. 솔직히 MySQL을 쓰는 이유는 오라클을 쓸 돈이 없어서다. MySQL도 라이센스 어쩌구 해서 마리아 DB나 포스트그레스 큐엘을 쓰기도 한다. 나 역시 프리랜싱할 때 MSSQL은 몇번 안했다. 중소기업인데 800만원 들여서 MSSQL샀던 일신정공...  CPU 라이센스라서 라이센스 파일과 윈도우 레지스트리 찾아서 다 옮긴다고 개고생했었다. 물론, 일급 80만원으로 쳐줘서 좋았다. 3일 작업에 240 ㅡㅡ; 대학생때라 비싼 술집 갔었던 기억이 난다. 트위터도 그렇고 국내 기업들도 모두 카산드라로 갈아 타고 있다. 왜... JOIN에 지쳐서 샤딩이 뭔지 몰라서... RAID까지 끼면 이건 뭐 어떻게 복구해야 하는겨. 걍 데이터 센터 번개 맞아서 죄송합니다. 난 최선을 다해서 돈을 못 물리겠네요. 당신이 더 잘할 수 있으면 잘해보세요. 하다가 분산 시스템 간단하게 가면 되는데 어려웠기 때문에. 카산드라다. JAVA에서 C++로 바꾸는 프로젝트도 있는데 10배 빠르다고 한다.

2. NoSQL의 대표.
Not Only SQL이라고 한다. 아니다 걍 NO SQL 이다. SQL이랑 다르다. 뭐가 다른가? 인터넷에 자료 많다. JOIN없고, 소팅, 그룹등 SQL에서 하는거 없다고 한다. 스케일링이나 데이터 가용성에 집중했다고 한다. 데이터 베이스는 단순한 파일일 뿐이다. 파일이 아니라고 하면 운영체제 없이 구현해야 하고 그럴려면 SSD, 하드디스크 등을 지원하는 자원 관련 메카니즘을 다 짜야 한다(장치 관리, 장치 접근 스케쥴링, 디바이스 드라이버, 파일 시스템, 또 관련 드라이버, 등...) 운영체제 짜기 어렵다. 그래서 오라클이던 MSSQL이던 돈 안드는 데이터베이스던 모두 운영체제 위에 올라간다. 제대로 만들려면 데이터 베이스 만의 펌웨어로 동작시켜야 하겠지만 그 ㅈㄹ 안하려고 운영체제 만든것이다. 자 그럼 NO SQL 인데, 결론만 말하면
SQL 맞다. 카산드라 쿼리 랭귀지인 CQL이 나온지 오래다. 그전에는 이게 없어서 소스코드 짜서 드라이버 이용해서 접근해야 했다. MSSQL Client 없어서 드라이버 쓰는 거랑 같다. 

받아서 압축 풀고, bin 풀더 들어가서 카산드라 실행 시키면 데몬이 뜬다. ./cassandra -f 자바 기반이니 자바 깔려 있으면 된다.
./cqlsh 로 SQL 비스무리한 것을 실행시킨다.

CREATE KEYSPACE tumblbug_user WITH replication = {'class' : 'SimpleStrategy', 'replication_factor' : 3};

데이터 스택스 참고해서 만든다. 전략은 3가지 인데 한개는 레거시고 심플은 단일 노드, 네트웍 전략은 여러 데이터 센터를 연결할 때 쓴다고 한다. 사실 제대로 알려면 어떤 방식으로 데이터가 오가는지 데이터 복제, 이동 타이밍도 설명서가 아닌 소스 코드로 다 봐야 한다.(트랜젝션 없다고 하는데 서버끼리는 트렌젝션 안할리가.) 그래야 RDBMS로 이해하면 안된다고 할 자격이 생긴다. 링 구조니 다르게 이해해야 한다면서 정작 데이터가 여러 갈래로 깨졌을 때 백업만 할게 아니라 완벽히 복구할 복구 메커니즘을 설계할 정도로 다 파악하지 않는다면. 표나 그림도 소용없다.(그래도 한번 봐 두는 것은 좋다)

SQL에서 말하는 데이터 베이스 만들었다.

use tumblbug_user;

네임 스페이스를 바꾼다. 

create table user ( name text, phone text, PRIMARY KEY (phone) );

이렇게 만들고

select * from user;
하면 

 phone | name
-------+------

이렇게 나온다.

자료 넣으려면 INSERT INTO 하면 된다.

이정도 보면 이제 NoSQL 구조가 궁금할 것이다. RDBMS와 용어도 다르도 구현 메카니즘도 완벽하게 다르다. 그러나 그렇게 접근하지 말라고 사람들이 CQL 만든거다. 제대로 보려면 소스 레벨로 봐야 한다.

4. SQL이랑 같다.

물론, 카산드라와 오라클이 같을 수 없다. 그래서 다들 다르다고 포스팅 하더라. 아쉬운 건 어차피 오픈소스인데 소스 레벨로 분석해 주면 더 좋을 것 같다. 
MAC 이랑 LINUX는 다르다. 완벽하게. 그러나 bash shell 로 mac에 쓴 포스팅을 참고로 linux 도 똑같이 실습해 볼 수 있다. windows에도 이제 bash shell 이 들어간다.

이기종으로 쉽게 접근하려면 우선 이런 공통점으로 접근해야 한다. CQL을 만드는 이유도,
비얀 스트라스트럽이 C++을 C with classes로 만들어서 접근을 쉽게 했던 이유도.

모두 창시하는 사람들이 유저를 생각해서 였다.

그러나 DATASTAX 공식 문서가 아닌 포스팅을 보다 보면... 죄다. 다르다는 말은 하는데 소스 코드 한 줄 없다. 물론, 이런 시각 저런 시각도 필요하다.

고급자를 위해서라면. 

고급자를 위한 포스팅 같아 보이진 않아서 몇 자 써봤다. 또한 그런 포스팅으로 미리 공부를 해도 쉬운 내용을 어렵게 받아들이는 학생들을 위해서도.

이 포스팅은 월요일 쯤 삭제 예정이다.

이런 글 휴지통 대용으로 쓰는  블로그로 잠시 올려서 광고 수입도 올리기도 한다.

누군가가 잘 다듬어 주겠지. 쓰는데 20~30분... 제대로 다듬어서 올리는데는 3시간 이상. 쓰는건 정말 쉽지 않다. 그러나 구독자는 위대하다. 물타기 아니고. RDBMS와 NoSQL은 다르다. 그러나 한번 다르게 보면 난 똑같은 리눅스라도 버전만 달라도 완전 다른 프로그램이라고 생각한다.

아마 오래된 개발자는 리눅스 업데이트로 리눅스 다시 인스톨 해야 했던 경험이 많았을 것이다. 나 같은 경우 수십번도 넘게 했었다. 업데이트 안하면 뚫려서 나라에서 연락오지(호스팅 사업 때). 업데이트 하면 풀지 못하게 꼬여버리지.(커널 패닉 어케 고치라고... 노태상씨도 반도 디버깅 못한다고 했었는데)

어디든 SW최고수는 업데이트 시스템을 담당한다. 삼성전자 무선사업부 있을 때도 항상 고수 선배가 FOTA를 담당했다. 

세계 1위 브랜드 가치 애플도 OS 업뎃 잘못해서 모두가 서비스 센터로 가야 한다면? 그리고 그것이 한번이 아니고 두번이나 그래서 일년내내 수리 센터 불난다면. 회사 망하는 거다. 업뎃 2번 실패하면 회사는 망한다. 업데이터 뚫려서 아직도 보안 업계에서 회고되는 국내 회사도 많다.

사족이 참 길었는데 핵심만 말하면 카산드라 깔고 실행해서 SQL처럼 써 보시고 어라? 괜찮네? 쉽네? 라는 느낌이 든다면 많이 참여해서 RDBMS 보고서 나오는 것과 같이 더 쉬운 클라이언트들을 많이 만들어 줬음 해서... 이쪽이 전문 분야가 아니지만 써야 하기에 

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...