728x90
반응형

neo4j-temp-db 시작하기. 다중 DB 기능을 사용하는 유용한 세션 기반, 자체 정리 임시 Neo4j 데이터베이스

모래성 사진:하이메 스패니올 on 언스플래시

소개

이 라이브러리는 원래 그래프 예제 포털과 함께 사용하려고 만들어졌어요. 처음에는 인메모리 Neo4j 데이터베이스 리브라를 사용했었는데, 벌써 7년이나 됐네요. 하지만 Neo4j 4.x에서는 더 이상 불가능하고, 저희 요구 사항에 맞게 확장하기도 어려워요.

그래서 지금은 @neo4j-labs/temp-db 라이브러리를 사용하면 즉시 임시 데이터베이스를 만들 수 있어요.

다중 데이터베이스 기능이 나오면서 Neo4j 데이터베이스를 임시로 빠르게 생성하고 만료할 수 있게 되었어요. 덕분에 가벼운 콘솔 기반 애플리케이션부터 더 효율적인 단위 테스트까지 가능해졌죠.

이 글에서는 @neo4j-labs/temp-dbs 자바스크립트 라이브러리에 대해 알아볼 거예요.

neo4j-contrib/neo4j-temp-db

시작하기 예

Neo4j 데이터베이스가 실행 중인 상태에서 새 디렉터리를 만들어 주세요. 예를 들어 neo4j-temp-db-demo-app 같은 이름으로 만들고, cd 명령어로 해당 디렉터리로 이동하세요 (cd neo4j-temp-db-demo-app).

npm init을 실행해서 시작해볼까요? 기본값을 모두 선택해도 괜찮아요.

필요한 몇 가지 종속성을 추가하고 저장할게요.

npm install express dotenv neo4j-driver ejs — save

JavaScript ES6를 사용할 수 있도록 바벨 종속성도 설치해 볼게요.

npm install @babel/cli @babel/node @babel/cli @babel/core @babel/preset-env nodemon — save-dev

다음으로는 @neo4j-labs/temp-dbs 라이브러리를 설치해야겠죠?

npm install @neo4j-labs/temp-dbs — save

이제 즐겨 사용하는 텍스트 편집기에서 디렉터리를 열어주세요. 시작하려면 다음 세 가지 파일을 만들어 봅시다.

.babelrc 파일에는 바벨 사전 설정을 다음과 같이 넣어주세요.

{ “presets”: [“@babel/preset-env”] }

.env 파일에는 임시 다중 데이터베이스를 호스팅할 Neo4j 데이터베이스에 대한 연결 정보와 함께 환경 변수를 넣어주세요.

NEO4J_URI=”bolt://localhost:7687"
NEO4J_USER=”neo4j”
NEO4J_PASSWORD=”123456"

index.js 파일은 간단한 Express 앱의 인덱스 파일로 사용할 거예요.

import express from “express”;
import dotenv from “dotenv”;

dotenv.config();
const app = express();
const port = process.env.PORT || 3000;

app.listen({ port }, () => {
    console.log(`Ready at https://localhost:${port}`);
});

In index.js, @neo4j-labs/temp-dbs를 인스턴스화하고 .env 파일에서 가져온 환경 변수를 전달해 주세요.

다음 경로를 통과하는 경로를 tempDBName to index.js에 추가하세요.

views/index.ejs 파일을 만들어서 데이터베이스와 상호 작용할 수 있게 해볼게요. 여기에는 두 개의 필드가 필요해요. 하나는 읽기 전용 텍스트 필드인 tempDbName, 다른 하나는 Cypher 쿼리를 입력하는 필드인 cypher입니다.

페이지를 새로 고쳐 보세요! 새로 고칠 때마다 새로운 임시 DB가 생성되는 걸 확인할 수 있을 거예요.

Cypher 쿼리를 실행해 보세요.  tempdb는 동일하게 유지된답니다.

정리

clean-expired-dbs.js 파일을 프로젝트 루트에 만들어 주세요. 데이터베이스를 정리할 기간(초)을 지정할 수 있어요.

package.json 파일의 스크립트 섹션에 다음을 추가해서 터미널에서 호출할 수 있게 해봐요:

“clean-expired-dbs”: “babel-node ./clean-expired-dbs.js”,

이제 발견된 데이터베이스 수와 만료 여부를 반환해 줄 거예요.

예제 앱의 전체 코드는 에서 확인해 보세요.

다음 단계: 단위 테스트용 임시 데이터베이스

단위 테스트를 더 쉽게 하려면 @neo4j-labs/temp-dbs 라이브러리를 사용하는 걸 추천해요. JavaScript 영화 예제의 이 포크에 있는 기본 예를 참고하면 도움이 될 거예요.

자원

  • neo4j-contrib/neo4j-temp-db
  • silverlogic/neo4j-temp-db-demo-app


  • How To
  • Javascript
  • temp
  • Unit Testing

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형

+ Recent posts