1. PHP드라이브 


PHP 개발자을 위해 아랑고DB를 컨트롤 할 수 있는 예제를 만들어 보았다. 
그대로 복사 붙혀넣어서 분석하면 가장 빠르겠지만 손으로 직접 쳐보면서 해보자

- arangoDB PHP 드라이브 파일
- 대용량 데이터를 위해 10가지 문자열들 (단순히 include "txt.php" 를 위함)
- 설치방법 :  (/)루트에 arangoDB.7z 해당 파일을 풀고 requeire로 autoload.php를 인트루드 하면 준비 PHP에서 아랑고 디비 쓰기 준비 끝!! 
// - 아랑고 드라이버를 로드한다. //https://www.arangodb.com/arangodb-drivers // 아랑고 디비 드라이브
require_once __DIR__ . '/arangoDB/autoload.php';



2. ArangoDB -> PHP 레퍼런스 

<?php
ini_set('max_execution_time', 3000); //300 seconds = 5 minutes

/*** 0.연결 ***/

// -
아랑고 드라이버를 로드한다. //https://www.arangodb.com/arangodb-drivers // 아랑고 디비 드라이브
require_once __DIR__ . '/arangoDB/autoload.php';

// - 아랑고 함수를 as 합니다. 이름 그대로 쓰면 내장함수랑 구분 가독성이 떨어져 as
use ArangoDBClient\Collection as ArangoCollection;                      // 컬렉션(테이블)
use ArangoDBClient\CollectionHandler as ArangoCollectionHandler;        // 컬렉션 핸들
use ArangoDBClient\Connection as ArangoConnection;                      // 컨넥션
use ArangoDBClient\ConnectionOptions as ArangoConnectionOptions;        // 컨넥션 옵션
use ArangoDBClient\DocumentHandler as ArangoDocumentHandler;            // 도큐먼트(컬럼) 핸들
use ArangoDBClient\Document as ArangoDocument;                          // 데이터 핸들
use ArangoDBClient\Exception as ArangoException;                        // 예외사항 처리
use ArangoDBClient\Export as ArangoExport;                              // 데이터 exort
use ArangoDBClient\ConnectException as ArangoConnectException;          // db연결 예외처리
use ArangoDBClient\ClientException as ArangoClientException;            // 클라이언트 예외처리
use ArangoDBClient\ServerException as ArangoServerException;            // 서버 예외처리
use ArangoDBClient\Statement as ArangoStatement;                        // 컨넥션 메소드 객체생성
use ArangoDBClient\UpdatePolicy as ArangoUpdatePolicy;                  // 업데이트 정책 (,?)

// -
기본 연결 옵션입니다.
$connectionOptions = [
   
ArangoConnectionOptions::OPTION_DATABASE => 'sampledb',             // 데이터 베이스명
   
ArangoConnectionOptions::OPTION_ENDPOINT => 'tcp://127.0.0.1:8529', // 아랑고 IP와 포트
   
ArangoConnectionOptions::OPTION_AUTH_TYPE => 'Basic',               // 아랑고 연결 타입 Basic이 일반적인 연결
   
ArangoConnectionOptions::OPTION_AUTH_USER => 'admin@test',          // 유저 로그인 ID 풀네임이 필요하다
   
ArangoConnectionOptions::OPTION_AUTH_PASSWD => 'test',              // 유저 패스워드
   
ArangoConnectionOptions::OPTION_CONNECTION => 'Keep-Alive',         // 연결을 계속 유지할것인지. != close
   
ArangoConnectionOptions::OPTION_TIMEOUT => 3,                       // 연결 시도 초
   
ArangoConnectionOptions::OPTION_RECONNECT => true,                  // 연결이 시간 초과되었을 때 재연결할지 여부, true ->끝임없이 재접속 시도함
   
ArangoConnectionOptions::OPTION_CREATE => true,                     // 데이터 입력시 새로운 컬렉션(테이블)에 입력한다면
   
ArangoConnectionOptions::OPTION_UPDATE_POLICY => ArangoUpdatePolicy::LAST,
];

//  - 로깅 기능을 킨다. LOG기록이 남겨진다.
ArangoException::enableLogging();

//  - 테스트를 위한 변수
$collectionName = array("argdb", "argdb_addr");                         // 컬렉션 이름을 지정한 변수, 두개 테이블 선언
$dataCnt = 1000;

//  - DB를 연결한다.
$connection = new ArangoConnection($connectionOptions);                 // ArangoConnection을 이용해 설정한 연결을 변수에 담는다.
$collectionHandler = new ArangoCollectionHandler($connection);          // 컨넥션 핸들을 만들어 낸다.


/*** 1.
컬렉션(테이블) 생성 예제 PHP 버전(create,drop) ***/

// -
컬렉션 존재 여부 체크, 삭제
foreach ($collectionName as $value) {                                   // 컬렉션명 배열있는 만큼
   
if ($collectionHandler->has($value)) {                              // 해당 컬렉션 존재 하는지 체크
       
$collectionHandler->drop($value);                               // 컬렉션 삭제
       
//$collectionHandler->getCollectionId($collection);             // 컬렉션 아이디를 가져온다
       
//$collectionHandler->rename($collection, $name);               // 컬렉션 명을 바꾼다.
   
}
}

// - 컬렉션 생성 예제
for($x = 0; $x < count($collectionName); $x++) {                        // 컬렉션 생성 배열
   
$userCollection = new ArangoCollection();                           // 컬렉션 사용준비

   
$userCollection->setName($collectionName[$x]);                      // 생성할 컬렉션 이름을 지정
   
$id = $collectionHandler->create($collectionName[$x]);              // 컬렉션을 생성한다. ID가 반환됨

    // - 컬렉션 인덱스를 생성
    $collectionHandler->createHashIndex($id,array("name"),null,null);   // Hash 인덱스 생성, 컬렉션 ID를 이용해야 한다.
    $collectionHandler->createFulltextIndex($id,array("content"),null); // FulltextIndex 생성
   
//createSkipListIndex, createPersistentIndex 도 같은 방법으로 생성 가능하다.
}


/*** 2. insert documnet(데이터)  PHP 버전 ***/

include "txt.php";
for ($i = 1; $i <= $dataCnt; $i++) {

   
try {

       
$handler = new ArangoDocumentHandler($connection);

       
// - 아랑고 도큐먼트를 가져온다.
       
$user = new ArangoDocument();

       
// - ( , )으로 데이터를 만든다.
       
$user->set('name', 'gv_'.$i);
       
$user->set('age', 26+$i);
       
$user->set('weight', null);
       
$user->set('content',${"str_"."0".substr($i,-1)} );

       
// - 배열데이터를 만든다.
       
$user->favorites = ['drawing', 'cycle', 'one piece'];

       
// - 서버로 데이터를 전송한다.
       
$id = $handler->save($collectionName[0], $user);                //고유 seq값인 _key를 반환한다.

        // -
데이터 입력 됐는지 확인
       
$result = $handler->has($collectionName[0], $id);
       
//var_dump($user->getId());

   
} catch (ArangoConnectException $e) {
       
print 'Connection error: ' . $e->getMessage() . PHP_EOL;
   
} catch (ArangoClientException $e) {
       
print 'Client error: ' . $e->getMessage() . PHP_EOL;
   
} catch (ArangoServerException $e) {
       
print 'Server error: ' . $e->getServerCode() . ':' . $e->getServerMessage() . ' ' . $e->getMessage() . PHP_EOL;
   
}
}


/*** 3. SELECT documnet(데이터)를 선택한다. PHP버전 ***/
$document = $handler->get($collectionName[0], $id);                     // 컬렉션,고유키(_key) document(데이터)를 얻는다. dcument update,delete 가능


/*** 4. UPDATE documnet(데이터)를 수정한다. PHP버전 ***/

$document->set("name", "hire");                                         // 먼저 수정하고 싶은 데이터를 READ 한후에 set으로 바꿔주고 그대로 다시 업데이트(입력) 한다.
$handler->update($document);                                            // document 그대로 실행


/*** 5. DELETE documnet(데이터)를 삭제한다. PHP버전 ***/
$documentDelete = $handler->remove($document);                          // 업데이트와 마찬가지로 Read document로 삭제 한다.


/*** 6. insert
예제 AQL버전 ***/
//$query = '   INSERT { name: "raebu", age:13, width:null, favorites:[\'sing\', \'rap\', \'fight\'] } INTO ' . $collectionName; //
한줄 넣기
$query = '   FOR i IN 1..'.$dataCnt;                          /* 반복문 루프될 숫자만 정해주면 된다.*/
$query = $query.'   INSERT {';
$query = $query.'   name: CONCAT("gv_", i),';                 /* CONCAT 문자열 연결 */
$query = $query.'   addr : (i % 2 == 0 ? "강북" : "강남")';    /* 삼항연산 가능 */
$query = $query.'     }';
$query = $query.'       INTO '.$collectionName[1];

$statement = new ArangoStatement(                             /* 컨넥션 메서드를 설정하고  */
   
$connection,
   
array(
       
"query" => $query
   
)
)
;

$statement->execute();                                        /* excute 한다.  */


/*** 7. select , inner join AQL
버전 ***/
$query = '      FOR cur1 IN '.$collectionName[0];
$query = $query.'  FOR cur2 IN '.$collectionName[1];          // join할 테이블
$query = $query.'   FILTER cur1.name == cur2.name       ';    // 여기서 On 을 하면 된다.
$query = $query.'   SORT cur1.age desc                  ';
$query = $query.'       RETURN {                        ';
$query = $query.'           name:cur1.name              ';
$query = $query.'           ,age:cur1.age               ';
$query = $query.'           ,age:cur1.age    ';
$query = $query.'           ,favorites:cur1.favorites   ';
$query = $query.'           ,addr:cur2.addr             ';    // 명명자로 구분해서 노출 TSQL이랑 상당히 흡사
$query = $query.'}';
//echo $query;

$statement = new ArangoStatement(
   
$connection,
   
array(
    
"query"     => $query
   
,"count"     => false
   
,"batchSize" => 1000                                     // 노출 데이터 사이즈 기본이 1000 엘리먼트
   
,"sanitize"  => true
   
,"_flat" => true                                         // 기초적인 데이터만 노출, true를 해야 바로 json_encode로 데이터를 만들수 있다.
   
)
)
;

$cursor = $statement->execute();


/*** 7-1.AQL 실행된걸 JSON으로 노출 ***/
$resultingDocuments = array();

foreach ($cursor as $key => $value) {
   
$resultingDocuments[$key] = $value;
}

//echo json_encode($resultingDocuments);                     // json으로 노출




?>


댓글을 달아 주세요



1. 아랑고 INDEX 종류 




1.1 GEO 인덱스
     - 지리적 위치를 담는 인덱스

1.2 Hash 인덱스
     - 변형된 값을 저장하는 인덱스 이므로 == 동등 비교 조건일때 유리
     - inner join 될 컬럼에 사용

1.3 Presistent 인덱스
     - ???

1.4 FUlltext 인덱스
     - LIKE 검색등에서 속도 향상을 위한 글씨 검색에 사용할 인덱스 
     - 정보,내용등에 like 될 활용될 컬럼에 이용

1.5 Skip-List
     - 정렬을 유지하면서 데이터를 삽입, 삭제, 탐색 할수 있는 데이터 구조 





2. INDEX / GUI를 통한 생성방법


     2.1 메뉴 
          - 컬렉션에서 Indexes라는 메뉴를 클릭한다.
          - shell 에서 커맨드로 가능하지만 AQL상에서는  index 생성이 안되는듯 하다.



     
     2.2 생성 방법
          - Type은 1번에 기록
          - Field에 인덱스를 선언할 컬럼 이름을 쓴다.
          - Unique 고유에 값을 가진 컬럼인지
          - Sparse Index null값이 위주에 데이터인지  하나 이상의 필드에 Null 값을 가진 데이터가 대부분이고 드물게 어떤 데이터를 값을 가지고 있는 경우에 생성하는데 효율적 검색 대상 필드의 값이 전체 컬렉션에서 차지하는 밀도가 낮은 경우에 생성하면 유리한 인덱스 타입







2. INDEX / PHP를 통한 생성방법


 - Collection()를 통하여 다양한 인덱스를 만들어 낼수 있다. 컬렉션을 생성후에 인덱스를 생성할수 있으며
 -  아직 만들어지지 않는 컬럼을 미리 인덱스를 선언할수 있다. (3만개 이상의 데이터를 가진 상태에서 index를 생성하면 다운되고 있음...)
 -  PHP를 통한 아랑고디비 사용법은 다음 강의에 설명하겠습니다. DB상에서 말고 언어상에서 바로 인덱스를 설정할 수 있구나라고만 눈으로 보시면 됩니다.
$collectionHandler = new ArangoCollectionHandler($connection) // 컨넥션 핸들을 만들어 낸다.
$collectionHandler->createHashIndex($id,array("name"),null,null);           //Hash 인덱스 생성, 컬렉션 생성후에 반환된 ID를 이용해야 한다.
$collectionHandler->createFulltextIndex($id,array("content"),null);         //FulltextIndex 생성
    //createSkipListIndex, createPersistentIndex 도 같은 방법으로 생성 가능하다.
}



3. INDEX 테스트


     3.1 INNER JOIN 테스트  
          - 인덱스를 걸기 전 230.613ms
          - 인덱스 이후 13.035ms 
          - 약 20배 가량의 차이가 난다.




댓글을 달아 주세요



1. UPDATE 


1.1 Data update 
     -▼ 데이터 업데이트 방법입니다.
     - update는 _key(고유키)로만 조건을 걸 수 있습니다.
UPDATE { _key: "80118" } /* where 절 _key만 가능 */
  WITH { age: 31 }       /* 업데이트 컬럼절 */
IN col                 


1.2 Collections(Column) update 
     ▼ 컬렉션(컬럼) 업데이트 방법입니다.
     - 새로운 컬럼을 추가하고 그에 해당하는 값을 넣을 수 있습니다.
    
FOR cur IN col
  UPDATE cur                                   /* col 이라 테이블에 UPDATE를 준비한다. */
    WITH {
        height : 165       /* height 라는 컬럼을 추가하고 값을 입력 */
        /*,width : null*/  /* 빈값을 넣을수는 없고 null 을 넣을수 있다. Json 방식이기에 값이 없어도 키는 존재한다. */
    } IN col
 

1.3 Column 추가 하면서 update
     ▼ TSQL 처럼 value 부분에 인라인 쿼리로 계산식을 만들어 넣을 수 있습니다.     
FOR cur IN agecol                 /* agecol이란 나이대가 몇명있을지 저장하는 테이블을 완성, 1~30까지 나이 값만있음   */
   
 UPDATE cur                    /* agecol 테이블 대상으로*/
         
 WITH {                  /* 컬럼을 add 한다. */
           
 agecnt : TO_NUMBER(                 /*TO_NUMBER를 이용하면 카운트된 숫자 그대로 입력, 하지만 변환없이 넣으면 배열 형태로 들어간다 []*/
            
 FOR cur2 IN col                     /* 계산을 위한 AQL 시작 */
               
 FILTER cur2.age == cur.age       /* ALAISE 된 커서로 비교연산자 가능 */
                   
 COLLECT WITH COUNT INTO cnt  /* COLLECT는 계산열을 선언할때  */
                   
 RETURN cnt                   /* 계산된 열은 RETURN 으로 ALAISE를 선언해줘야 한다.*/
           
 )
        } IN agecol                              /* 입력대상 테이블*/




2. DELETE(REMOVE)




댓글을 달아 주세요



1. SELECT 구문


1.1 SELECT

     ▼ 아랑고에서는 SQL을 AQL 이라 명명합니다. 사용해본 느낌은 AQL이 더 RDB보다 직관적인 문법이란 생각이 들더군요
     - Filter : where 이며 TSQL과 똑같은 방법으로 비교 연산자가 가능
     - Sort  : 정렬이며 TSQL과 똑같은 방법으로 정렬 가능
     - Limit : Mysql에 Limit와 사용법이 같다. Mysql로 같은 방법에 페이징이 가능 (좋은소식)
     - Return : select 절 Aliases 된 콜렉션을 사용해 컬럼을 지정하는 방식 또한 TSQL과 같습니다.

FOR cur IN col
   FILTER cur.gender == "m"
or cur.gender == "f"   /* where  */
   
SORT cur.age desc, cur.name asc                /* order by  */
   
Limit 1,10                                     /* Limit (Top) , (몇번째부터, 몇개까지)  */
   
RETURN {                                       /* select */
       
name:cur.name,
        gender:cur.gender,
        age:cur.age
}

/* select *  AQL JSON 형태 그대로 노출한다.*/
FOR cur IN col
RETURN cur


     - select 된 데이터 화면은 아래와 같습니다.
     - Json 형식에 데이터와, 테이블 구조의 데이터 두가지 방식으로 볼수 있습니다. 




2. INSERT 구문


2.1 인터페이스에 메뉴 구성

     - COLLECTIONS  메뉴 : 테이블과 같은 역할을 하는 부분
     - QUERIES 메뉴 ;  질의 작성기 부분
     - INSERT를 하기 위해 COLLECTIONS  메뉴에 접근


2.2 COLLECTIONS 생성
     
     ▼ 컬렉션(테이블)을 작성을 해보겠습니다.  name에 원하는 명을 넣고 Type은 document를 설정합니다.
     - 그러면 JSON 형태의 데이터를 저장하는 NO-SQL 콜렉션이 create 됩니다.
     

     ▼ 잠깐 데이터를 생성해보자 컬렉션 상세 페이지에 오른쪽 위에 (+)를 누르면 _key를 입력하는 창이 나옵니다.
     - 해당 키는 자동으로 DB에서 고유한 PK를 생성해주지만 임의적으로 생성할수 있다. 숫자+스트링 조합도 가능합니다.
     - 논클러스터 INDEX 이기도 합니다.



     - 데이터는 이처럼 빈값이더라도 키만 있으면 존재하는 특징이 있습니다. (NO-SQL은 역시)


2.3 INSERT 

     ▼ QUERIES 창을 열어 아래 INSERT 구문 입력 예제를 입력해보자
     - JSON처럼 키와 값으로 입력하는 특징이 보이네요.
/* 여러개의 INSERT Query AQL */
FOR cur IN [    /* "cur" RDB ALIAS(as)와 비슷한 역할을 한다. 추후에 inner join 등에 쓰일때 다시 알아보자 */
            {name: "GV", gender: "m", age: 13}, /* colunm : data 식으로 키와 쌍으로 이루어진 Json 그대로 입력 */
            {name: "HIRE",gender: "f" ,age: 15},
            {name: "RAEBU",gender: "m" ,age: 19}
]
INSERT cur INTO col

/* 한개의 data  INSERT AQL*/
INSERT { name: "GV", gender: "m", age:13 }
INTO col
    

     - 컬렉션에서 Col을 확인해보면 해당처럼 Json 형태로 데이터가 입력되어 있습니다.. 
     - 클릭해보면 데이터의 상세화면이 나오고 -, +를 통해 데이터를 편집할 수 있다.


2.4 INSERT SELECT 

     ▼ AQL은 셀렉트 인설트롤 지원합니다. 기존 return 자리에 insert를 넣으면 select insert 문이 됩니다.
     - 고유 PK (_key)값도 같이 복사되기 때문에 반복 입력하게 되면 unique constraint violated 오류가 발생합니다.
FOR cur IN col
  FILTER
( cur.gender == "m" or cur.age > 10 ) and  /* TSQL과 같은 비교 연산자 가능 */
           cur.name like "G%"                       /* LIKE 방식으로 사용 */
/*   RETURN cur    리턴 자리에 insert into를 쓰면  insert select */
INSERT cur INTO backup /* col as cur에 데이터를 backup에 넣는다. */
 

     
2.5 변수를 활용한 루프 INSERT

     ▼ For문으로 반복하여 insert 하는 방법을 기술 했습니다.
     - 기존 TSQL에서 쓰던 함수인 FOR을 사용 가능하네요
     - concat : 문자열을 합치는 함수다.
     - 삼항연산이 가능하다. 
     - CEIL : 올림 함수 소수점 상관없이 무조건 올림
     - RAND() : 랜덤함수로 숫자를 무작위로 추출한다.      
FOR i IN 1..1000  /* 반복문 루프될 숫자만 정해주면 된다.*/
 
INSERT {
   
name: CONCAT("name_", i),         /* CONCAT 문자열 연결 */
    gender: (i % 2 == 0 ? "f" : "m"), /* 삼항연산 가능 */
    age : CEIL(RAND() * 30)          /* 랜덤으로 1~30까지 */
  }
  INTO col




3. INNER JOIN


1-1. Inner join 문 
     - TSQL과 마찬가지로 테이블에 관계 있는 컬럼과 컬럼으로 컬렉션과 inner join 할 수 있습니다. 
     - 간단하고 익숙한 방법으로 noSQL 에 inner join을 제공됩니다.


FOR cur1 IN argdb
 
FOR cur2 IN argdb_addr            /* join할 테이블*/
  
FILTER cur1.name == cur2.name    /* 여기서 On 을 하면 된다. */
  
SORT cur1.age desc               /* 여기서 부터 기존과 똑같은 select 방법으로  */
      
RETURN {   
          
name:cur1.name 
           ,age:cur1.age   
           ,age:cur1.age   
           ,favorites:cur1.favorites
           ,addr:cur2.addr          
/* 명명자로 구분해서 TSQL이랑 상당히 흡사 */
}





마무리

욕심이 과했는지 이번 강의에 많은걸 담아 냈습니다. 매력 넘치는 AQL문에 빠져보시죠


댓글을 달아 주세요



1. 유저 및 DB 생성


1.1 접속

 ▼  해당 아이콘을 눌러 실행시킨다. 설치시 입력한 암호로 로그인 (tiger)

 


1.2 유저 생성
     ▼ 쉘에서 해당 명령어를 쳐보자 한줄 치고 엔터 눌러 개행이 되어도 세미콜론(;)을 만날때 까지 명령어 입력이 가능하다.
var users = require("@arangodb/users") //유저를 생성할 준비 명령어
users.save("admin@test","test");       //유저 생성 어드민 계정에 test라는 아이디 그리고 비번은 test

      명령 성공시에 화면 


      이제 쉘에서 유저에게 DB권한을 부여해보자.
users.grantDatabase("admin@test","sampledb"); //해당 유저에게 sampledb에 권한을 부여한다. db가 아직 생성안되어 있어도 부여가능
 
1.3 DB생성
     ▼ 이번엔 데이터 베이스를 생성해보자
db._createDatabase("sampledb");//데이터베이스를 생성한다

     ▼ 성공시화면




2. 웹 인터페이스 접속 

2.1 접속
     -  해당 아이콘을 클릭 
     
▼ 아이디는 [권한]@[아이디]을 입력한다. 선행했던 거처럼 우리의 아이디는 admin@test 비밀번호는 tiger         



     ▼ 접속이 완료되면 유저에게 권한이 주어진 DB가 보여진다. 앞서서 sampledb에 권한을 부여했다.



1.3 쿼리창 사용방법

     ▼ 쿼리 편집기와 같은 방법으로 사용합니다.
     - Remove all results  : 결과 삭제
     - explain : 쿼리 플랜 (조금 오류가 있는듯 합니다. 가끔 무한 로딩이..)
     - excute : 쿼리실행
     - 실행 단축키 : ctr + space + enter 부분 실행, 즉 드래그한 부분만 실행합니다. 

    

     ▼ 그리고 코드 어시던트를 제공합니다. 좋은 웹 GUI네요.
     - 쿼리창에서  ctr+space 를 누르면 아래 같은 창이 뜨고 자동완성 기능이 제공 됩니다. 초기에는 굉장히 도움이 되니 자주 애용합시다.





마무리

 웹 GUI가 직관성이 편하게 되어 있어서 마음에 듭니다. 아랑고쉘도 자바스크립트 같은 느낌이어 사용하기 편하네요. 하지만 오류가 종종 보이는거 보니 안정성은 아직이란 생각이 듭니다. 
     


댓글을 달아 주세요




0. ArangoDB란

   IT 는 점점 RDB 에서 NoSQL로 나아가는 추세입니다. 하지만 각 기업에서는 NoSQL이 스키마가 없는 관계로 사용을 고려하거나 특정 데이터(Json)를 노출해주는 방식으로 사용하고 있을 것 입니다. 이에 단점을 보완한 아랑고디비가 나왔지만 아직 스타트업에 불과한 DB이지만 새로운 가능성이 보여 리뷰를 진행 하게 되었습니다. 이외에도 IT 경력자로 그동안 에버노트에 쌓아 놓았던 정보들을 정리하여 업로드 할 예정입니다.

     - NoSQL 이지만 inner join이 가능하다.  
     - 차세대 빅데이터 DB로 떠오르고 있다. 



1. ArangoDB 설치파일 


아래에 링크에서 다운로드 받자
https://www.arangodb.com/download-major/windows/



1.1 파일 ArangoDB3-3.1.22-1_win64.exe 를 설치한다.

     - ​설치 파일을 업로드 할려고 하니 10mb가 최대 용량이라 링크를 남깁니다. 파일이 필요하시면 댓글로 이메일 주소를 남기시면 보내드리겠습니다.
     - Community Edition 버전은 무료평가판, 비상업, 학습자 용입니다.
     - 회사 이메일 주소를 남기고 받을 수 있는 Enterprise Edition 버전은 SmartGraphs, SSL 암호화 기능들이 포함되어 있습니다. 저흰 학습용이기에 커뮤니티 버전으로 진행하겠습니다.
     

1.2 설치시 Root 계정 비밀번호를 입력

     - 설치는 단순히 다음 다음만 입력하면 완료 된다.
     - 중간에 root 계정에 비밀번호 입력 부분이 나온다. 고민된다면 그냥 만능 비번 tiger를 입력하자





2. ArangoDB 설치후 아이콘 

     - 설치 후 두개의 아이콘이 바탕화면에 보이네요.


2.1 Arango Shell

     - Shell 입력 커맨드 창
     - 여기서 관리자 접속과 각정 커맨드로 명령을 내릴 수 있습니다.

2.2 Arango Management Interface
     


     - Arango Web interface 
     - WEB으로 아랑고를 컨트롤 할수 있습니다. 웹으로 된 GUI 툴입니다.
     - 접속을 위해서는 shell 에서 사용자와 권한 그리고 DB를 추가해줘야 한다.
     - 해당 클릭시 연결되는 인터페이스 기본 주소



3. 마무리

     - windows 설치 과정은 최신 DB 답게 단순한 설치로 완료로 GUI까지 설치가 완료 되었습니다.
     - 다음편에서는 유저와 DB 생성 과정을 설명하겠습니다.



댓글을 달아 주세요