아키텍처

AgensGraph는 PostgreSQL을 기반으로 개발된 멀티 모델 데이터베이스입니다. AgensGraph는 PostgreSQL이 제공하는 모든 기능을 제공하는 동시에 그래프 쿼리 언어인 Cypher를 사용하여 그래프 쿼리를 처리하도록 설계되었습니다. 내부적으로는 크게 PostgreSQL 프로세서와 Graph 프로세서로 나뉘며, 두 프로세서는 캐시 영역과 트랜잭션 영역을 공동으로 사용합니다. 사용자는 하나의 쿼리에서 SQL 쿼리와 Cypher 쿼리를 동시에 수행함으로써 더 나은 성능과 더 편리한 구현이라는 이점을 누릴 수 있습니다.

AgensGraph 아키텍처

프로세스 구조

AgensGraph는 PostgreSQL과 동일한 클라이언트/서버 모델을 사용합니다. 하나의 세션(작업)은 서로 상호 작용하는 다음과 같은 프로세스(프로그램)로 구성됩니다.

  • 서버 프로세스

    • 데이터베이스 파일을 관리하고, 클라이언트 애플리케이션이 서버에 연결하기 위해 보내는 요청을 처리(수락 또는 거부)하며, 클라이언트가 데이터베이스를 사용할 수 있도록 기본 작업을 준비합니다. 이 프로세스의 이름은 postgres입니다.

  • 클라이언트 프로세스

    • 데이터베이스에 접근해야 하는 사용자 측 애플리케이션을 가리킵니다. 클라이언트 애플리케이션은 텍스트 기반 프로그램, 그래픽 애플리케이션, 또는 경우에 따라 웹 서버를 통해 표시될 수 있는 웹 페이지 등 매우 다양합니다. 일부 클라이언트 프로그램은 배포 패키지에 포함되어 있습니다. 이러한 애플리케이션의 대부분은 사용자가 개발합니다.

클라이언트/서버 환경의 프로그램에서 흔히 그러하듯이, AgensGraph 역시 클라이언트와 서버가 서로 다른 호스트일 수 있도록 허용합니다. 이 경우 두 호스트 간의 통신은 대부분 TCP/IP 네트워크 인프라를 통해 이루어집니다. 여기서 한 가지 명확히 이해해야 할 점이 있습니다. 클라이언트와 서버가 서로 다르면 클라이언트는 원하는 데이터베이스 파일에 직접 접근할 수 없습니다. 다시 말해, 클라이언트가 접근할 수 있는 파일은 서버가 실행 중인 호스트의 파일이 아니라 클라이언트가 실행 중인 호스트의 파일입니다.

사용자의 동시 접근을 위해, AgensGraph 서버는 각 연결마다 새로운 프로세스를 생성합니다. 이는 클라이언트와 새로 생성된 서버 프로세스가 통신할 때 postgres(마스터 프로세스)의 개입 없이 통신이 이루어진다는 것을 의미합니다. 간단히 말해, postgres는 클라이언트의 연결 요청을 처리하고 새로운 자식 서버 프로세스를 생성하기 위해 서버 호스트에서 항상 실행되고 있습니다.