애플리케이션의 모든 측면과 애플리케이션과 상호 작용하는 사용자에 대한 기가바이트 단위의 정보가 존재하는 빅데이터 세계에서는 이 모든 데이터를 분석하고 통찰력 있는 인텔리전스를 제공하는 것이 무엇보다 중요합니다. 카우치베이스에서는 이러한 데이터를 활용할 수 있는 데이터 관리 플랫폼을 구축하기 위해 노력하고 있습니다. 이러한 데이터는 궁극적으로 다음과 같은 차세대 NoSQL 분석 플랫폼뿐만 아니라 Tableau, QlikView, Microstrategy와 같은 다양한 업계 표준 분석 플랫폼에서 액세스할 수 있게 될 것입니다. Cloud9 그리고 슬램데이터하지만 개발자가 이 데이터를 저장하고 분석하는 시스템에 액세스할 수 있는 API를 보유하는 것도 중요합니다. 이러한 수준의 직접 액세스를 통해 개발자는 간단한 대시보드부터 사용자를 위한 완전한 사용자 지정 보고에 이르기까지 모든 것을 유연하게 구축할 수 있습니다.
Node.js SDK 버전 2.2.4부터 클러스터에 대한 Couchbase Analytics 쿼리 수행을 실험적으로 지원합니다. 이 API는 Node.js SDK에서 N1QL 쿼리를 수행하는 데 사용할 수 있는 기존 API와 매우 유사합니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Connect to the local cluster and enable experimental Couchbase Analytics support. var cluster = new couchbase.Cluster('couchbase://localhost'); cluster.enableCbas(['localhost:8095']); // Perform a simple query, selecting all users with a specific email. var qs = 'SELECT * FROM users WHERE email="tom@example.com"'; var q = couchbase.CbasQuery.fromString(qs); cluster.query(q, function(err, res) { if (err) { throw err; } console.log(res); }); |
아시다시피, N1QL API와 Couchbase Analytics API의 차이점은 Couchbase Analytics에서는 클러스터 수준에서 쿼리를 수행해야 하고 CbasQuery를 사용하여 쿼리 개체를 인스턴스화해야 한다는 점입니다.
또한 이러한 새로운 API를 사용하여 Node.js 세계에서 잘 알려진 몇 가지 라이브러리를 모아 여러분과 동료들에게 유용한 비즈니스 관련 메트릭을 표시할 수 있는 유용한 인터페이스로 전환하는 방법을 보여주는 새로운 대시보드 데모 애플리케이션을 구축했습니다.
대시보드 작동 방식
저희가 만든 대시보드는 두 개의 개별 구성 요소로 이루어져 있습니다. 첫째, 서버 측 컴포넌트로서 Node.js SDK를 실행하고 안정된 인터페이스를 제공합니다. 둘째, 간단한 HTML5 페이지인 클라이언트 측 컴포넌트입니다. 서버 측 컴포넌트는 웹 서비스의 루트에서 클라이언트 측 컴포넌트를 제공하여 작업을 더 쉽게 만듭니다.
애플리케이션의 클라이언트 측에는 일부 매개변수를 지정할 수 있는 작은 양식, Couchbase 분석 클러스터에 대해 실행된 모든 쿼리를 표시하는 큰 텍스트 섹션, 쿼리의 데이터를 표시하는 데 사용되는 3개의 그래프가 포함된 간단한 HTML 및 Javascript 페이지가 있습니다. 페이지가 로드되거나 업데이트 버튼을 클릭하면 여행 샘플 데이터에 대한 다양한 정보를 요청하는 요청을 서버 측 애플리케이션에 전송합니다. 서버에서 응답을 받으면 이 정보를 Chart.js에 전달하여 그래프를 생성합니다.
이를 위한 코드는 매우 간단합니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$.get('/pricestats?' + formData) .done(function(data) { addNarration(data.narration); var info = data.data; config1.data.labels = []; config1.data.datasets[0].data = []; for (var i = 0; i < info.length; ++i) { config1.data.labels.push(info[i].grpdate); config1.data.datasets[0].data.push(info[i].metric); } myChart1.update(); }).fail(function(err) { addNarrationText(err.toString()); }); |
이 애플리케이션의 클라이언트 측 페이지에서 모든 루트 요청에 응답하는 웹 서버를 시작하기 위해 Express를 사용하기만 하면 됩니다. 또한 애플리케이션이 그래프를 업데이트하는 데 사용하는 몇 개의 REST 엔드포인트를 추가로 등록합니다. 이러한 각 REST 엔드포인트는 Couchbase Analytics 클러스터에 대한 SQL++ 쿼리를 프런트엔드한 다음 해당 쿼리의 결과를 그래프화할 애플리케이션의 클라이언트 측으로 다시 반환합니다.
|
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 |
var qs = 'SELECT ' + ' parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") AS grpdate, ' + 'SUM(e.price) AS metric ' + 'FROM users u ' + ' UNNEST u.flights e ' + 'WHERE parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") >= parse_date("2016-10-01", "Y-M-D") ' + ' AND parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") < parse_date("2016-11-01", "Y-M-D") ' + 'GROUP BY grpdate ' + 'ORDER BY grpdate;'; var q = couchbase.CbasQuery.fromString(qs); cluster.query(q, function(err, qres) { if (err) { res.status(400).send(err); return; } res.send({ data: qres, narration: [ ['sql', qs] ] }); }); |
서버 측 애플리케이션에서 제공하는 RESTful 서비스 외에도 여행 샘플에 필요한 Couchbase Analytics 섀도 버킷을 자동으로 생성하고 무작위로 생성된 1000개 항목의 항공권 구매 데이터를 삽입하여 흥미로운 볼거리를 제공했습니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var qs = 'CREATE BUCKET tsBucket WITH {"name":"travel-sample","nodes":"127.0.0.1"};' + 'CREATE SHADOW DATASET airlines ON tsBucket WHERE `type` = "airline";' + 'CREATE SHADOW DATASET airports ON tsBucket WHERE `type` = "airport";' + 'CREATE SHADOW DATASET hotels ON tsBucket WHERE `type` = "hotel";' + 'CREATE SHADOW DATASET landmarks ON tsBucket WHERE `type` = "landmark";' + 'CREATE SHADOW DATASET routes ON tsBucket WHERE `type` = "route";' + 'CREATE SHADOW DATASET users ON tsBucket WHERE `type` = "user";' + 'CONNECT BUCKET tsBucket WITH {"password":""};'; var q = couchbase.CbasQuery.fromString(qs); cluster.query(q, function(err, res) { // We ignore errors here since they are usually just // 'dataset already exists'. callback(null); }); |
대시보드 예시 가져오기
새로운 데모를 시작하려면 다음 주소에 있는 GitHub 리포지토리를 방문하기만 하면 됩니다: https://github.com/couchbaselabs/node-cbasdashdemo 를 클릭하고 포함된 사용 설명서에 있는 시작하기 가이드를 따르세요.
Node.js 릴리스 받기
모든 Node.js 릴리스와 마찬가지로, 이 버전도 NPM에 게시했으며 간단한 npm 호출로 설치할 수 있습니다:
|
1 |
npm install Couchbase@2.2.4 |
또한 npm 릴리스 프로세스의 일부로 사전 빌드된 바이너리를 제공하므로 더 이상의 번거로움 없이 Node.js SDK를 시작할 수 있습니다(Node.js v7.0.0에는 현재 Couchbase 모듈의 사전 빌드된 바이너리가 제공되지 않으며 설치하려면 작동하는 컴파일러가 필요함 참고).