푸터 콘텐츠로 바로가기
PYTHON 도움말

Grakn Python (작동 방식: 개발자 가이드)

오늘날의 코딩 세계에서 데이터베이스는 새로운 애플리케이션의 요구 사항에 맞춰 진화하고 있습니다. 전통적인 관계형 데이터베이스가 여전히 사용되고 있지만, 이제는 객체 관계형 매핑(ORM)과 같은 발전된 기술 덕분에 개발자들이 SQL에만 의존하는 대신 더 높은 수준의 프로그래밍 추상화를 사용하여 데이터베이스와 상호 작용할 수 있게 되었습니다. 이러한 접근 방식은 데이터 관리를 간소화하고 코드 구성을 더욱 깔끔하게 만들어 줍니다. 또한 NoSQL 데이터베이스는 특히 빅데이터 애플리케이션 및 실시간 분석에서 비정형 데이터를 처리하는 데 유용한 도구로 부상했습니다.

클라우드 네이티브 데이터베이스 또한 확장 가능하고 안정적이며 관리형 서비스를 제공하여 기본 인프라 유지 관리 부담을 줄여주므로 상당한 영향을 미치고 있습니다. 또한 NewSQL과 그래프 데이터베이스는 SQL과 NoSQL의 장점을 결합하여 관계형 데이터베이스의 안정성과 NoSQL의 유연성을 제공합니다. 이러한 혼합 특성 덕분에 이 소재는 다양한 현대적 용도에 적합합니다. 다양한 데이터베이스 유형을 혁신적인 프로그래밍 패러다임과 통합함으로써, 오늘날 데이터 중심적인 요구 사항에 부합하는 확장 가능하고 적응력 있는 솔루션을 만들 수 있습니다. 현재 TypeDB로 알려진 Grakn은 지식 그래프 관리 및 쿼리를 지원함으로써 이러한 추세를 잘 보여주는 사례입니다. 이 글에서는 Grakn(TypeDB)과 PDF를 프로그래밍 방식으로 생성하고 조작하는 데 필수적인 도구인 IronPDF 의 통합에 대해 살펴보겠습니다.

Grakn이란 무엇인가요?

Grakn(현재 TypeDB )은 Grakn Labs에서 개발한 지식 그래프 데이터베이스로, 복잡한 데이터 네트워크를 관리하고 분석하기 위해 설계되었습니다. 이 프로그램은 기존 데이터 세트 내의 복잡한 관계를 모델링하는 데 탁월하며 저장된 데이터에 대한 강력한 추론 기능을 제공합니다. Grakn의 쿼리 언어인 Graql은 정밀한 데이터 조작 및 쿼리를 가능하게 하여 복잡한 데이터 세트에서 가치 있는 통찰력을 추출할 수 있는 지능형 시스템 개발을 지원합니다. Grakn의 핵심 기능을 활용하면 조직은 강력하고 지능적인 지식 표현을 통해 데이터 구조를 관리할 수 있습니다.

Grakn Python (작동 방식: 개발자를 위한 가이드): 그림 1 - TypeDB 웹페이지

Grakn의 쿼리 언어인 Graql은 Grakn 지식 그래프 모델과 효과적으로 상호 작용하도록 특별히 설계되어 상세하고 미묘한 데이터 변환을 가능하게 합니다. TypeDB는 수평적 확장성과 대규모 데이터셋 처리 능력 덕분에 복잡한 그래프 구조를 이해하고 관리하는 것이 중요한 금융, 의료, 신약 개발, 사이버 보안과 같은 분야에 매우 적합합니다.

Python을 이용한 Grakn 설치 및 구성

Grakn 설치 중

Grakn (TypeDB)를 사용하려는 Python 개발자에게 typedb-driver 라이브러리 설치는 필수적입니다. 이 공식 클라이언트는 TypeDB와의 상호 작용을 용이하게 합니다. 다음 pip 명령어를 사용하여 이 라이브러리를 설치하세요.

pip install typedb-driver
pip install typedb-driver
SHELL

TypeDB 서버 설정하기

코드를 작성하기 전에 TypeDB 서버가 실행 중인지 확인하십시오. TypeDB 웹사이트에서 제공하는 운영 체제에 맞는 설치 및 설정 지침을 따르십시오. 설치가 완료되면 다음 명령어를 사용하여 TypeDB 서버를 시작할 수 있습니다.

./typedb server
./typedb server
SHELL

Python에서 Grakn 사용하기

TypeDB와 상호 작용하는 Python 코드

이 섹션에서는 TypeDB 서버와의 연결 설정, 데이터베이스 스키마 구성, 데이터 삽입 및 검색과 같은 기본 작업 수행 방법을 설명합니다.

데이터베이스 스키마 생성

다음 코드 블록에서는 두 가지 속성인 nameage을(를) 가지고 있는 person이라는 타입을 생성하여 데이터베이스 구조를 정의합니다. 구조적 수정이 가능한 SCHEMA 모드로 세션을 엽니다. 스키마가 정의되고 확정되는 방식은 다음과 같습니다.

from typedb.driver import TypeDB, SessionType, TransactionType

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Create a database (if not already created)
database_name = "example_db"
if not client.databases().contains(database_name):
    client.databases().create(database_name)

with client.session(database_name, SessionType.SCHEMA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        transaction.query().define("""
        define
        person sub entity, owns name, owns age;
        name sub attribute, value string;
        age sub attribute, value long;
        """)
        transaction.commit()
from typedb.driver import TypeDB, SessionType, TransactionType

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Create a database (if not already created)
database_name = "example_db"
if not client.databases().contains(database_name):
    client.databases().create(database_name)

with client.session(database_name, SessionType.SCHEMA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        transaction.query().define("""
        define
        person sub entity, owns name, owns age;
        name sub attribute, value string;
        age sub attribute, value long;
        """)
        transaction.commit()
PYTHON

데이터 삽입

스키마를 설정한 후 스크립트는 데이터베이스에 데이터를 삽입합니다. 데이터 작업에 적합한 DATA 모드에서 세션을 열고, 이름이 'Alice'이고 나이가 30인 새로운 person 엔티티를 추가하는 삽입 쿼리를 실행합니다:

# Insert data into the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        # Create a person entity
        transaction.query().insert("""
        insert $p isa person, has name "Alice", has age 30;
        """)
        transaction.commit()
# Insert data into the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.WRITE) as transaction:
        # Create a person entity
        transaction.query().insert("""
        insert $p isa person, has name "Alice", has age 30;
        """)
        transaction.commit()
PYTHON

데이터 조회

마지막으로, 이름이 'Alice'인 엔티티를 조회하여 데이터베이스에서 정보를 검색합니다. DATA 모드에서 새로운 세션을 열고 TransactionType.READ을(를) 사용하여 읽기 트랜잭션을 시작합니다. 검색 결과는 이름과 나이를 추출하여 표시하도록 처리됩니다.

# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Query entities where the person has the name 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            print(f"Person Name: {person_name}, Age: {person_age}")
# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Query entities where the person has the name 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            print(f"Person Name: {person_name}, Age: {person_age}")
PYTHON

출력

Grakn Python (작동 방식: 개발자를 위한 가이드): 그림 2 - 데이터베이스 쿼리의 콘솔 출력

클라이언트 연결 종료

TypeDB 서버와의 추가 상호작용을 방지하고 자원을 올바르게 해제하기 위해 client.close()을 사용하여 클라이언트 연결을 닫습니다:

# Close the client connection
client.close()
# Close the client connection
client.close()
PYTHON

IronPDF 소개합니다

Grakn Python (작동 방식: 개발자를 위한 가이드): 그림 3 - IronPDF for Python 웹페이지

IronPDF for Python은 PDF 파일을 프로그래밍 방식으로 생성하고 조작할 수 있는 강력한 라이브러리입니다. 이 프로그램은 HTML에서 PDF를 생성하고, PDF 파일을 병합하고, 기존 PDF 문서에 주석을 다는 등 포괄적인 기능을 제공합니다. IronPDF HTML 또는 웹 콘텐츠를 고품질 PDF로 변환할 수 있으므로 보고서, 송장 및 기타 고정 레이아웃 문서를 생성하는 데 이상적인 선택입니다.

이 라이브러리는 콘텐츠 추출, 문서 암호화, 페이지 레이아웃 사용자 지정과 같은 고급 기능을 제공합니다. IronPDF Python 애플리케이션에 통합함으로써 개발자는 문서 생성 워크플로를 자동화하고 PDF 처리 기능을 전반적으로 향상시킬 수 있습니다.

IronPDF 라이브러리 설치

Python에서 IronPDF 기능을 사용하려면 pip를 사용하여 라이브러리를 설치하십시오.

pip install ironpdf
pip install ironpdf
SHELL

Grakn TypeDB와 IronPDF 통합

Python 환경에서 TypeDB와 IronPDF 결합하면 개발자는 Grakn(TypeDB) 데이터베이스에 저장된 복잡한 구조의 데이터를 기반으로 PDF 문서를 효율적으로 생성하고 관리할 수 있습니다. 다음은 통합 예시입니다.

from typedb.driver import TypeDB, SessionType, TransactionType
from ironpdf import *
import warnings

# Suppress potential warnings
warnings.filterwarnings('ignore')

# Replace with your own license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Initialize data list
data = []

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Fetch details of persons named 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            data.append({"name": person_name, "age": person_age})

# Close the client connection
client.close()

# Create a PDF from HTML content
html_to_pdf = ChromePdfRenderer()
content = "<h1>Person Report</h1>"
for item in data:
    content += f"<p>Name: {item['name']}, Age: {item['age']}</p>"

# Render the HTML content as a PDF
pdf_document = html_to_pdf.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf_document.SaveAs("output.pdf")
from typedb.driver import TypeDB, SessionType, TransactionType
from ironpdf import *
import warnings

# Suppress potential warnings
warnings.filterwarnings('ignore')

# Replace with your own license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Initialize data list
data = []

# Connect to TypeDB server
client = TypeDB.core_driver("localhost:1729")

# Query the data from the database
with client.session(database_name, SessionType.DATA) as session:
    with session.transaction(TransactionType.READ) as transaction:
        # Fetch details of persons named 'Alice'
        results = transaction.query().match("""
        match 
        $p isa person, has name "Alice";
        $p has name $n, has age $a;
        get;
        """)
        for result in results:
            person_name = result.get("n").get_value()
            person_age = result.get("a").get_value()
            data.append({"name": person_name, "age": person_age})

# Close the client connection
client.close()

# Create a PDF from HTML content
html_to_pdf = ChromePdfRenderer()
content = "<h1>Person Report</h1>"
for item in data:
    content += f"<p>Name: {item['name']}, Age: {item['age']}</p>"

# Render the HTML content as a PDF
pdf_document = html_to_pdf.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf_document.SaveAs("output.pdf")
PYTHON

이 코드는 Python에서 TypeDB와 IronPDF 사용하여 TypeDB 데이터베이스에서 데이터를 추출하고 PDF 보고서를 생성하는 방법을 보여줍니다. 이 코드는 로컬 TypeDB 서버에 연결하여 "앨리스"라는 이름의 엔티티를 가져오고 해당 엔티티의 이름과 나이를 검색합니다. 결과를 사용하여 HTML 콘텐츠를 구축한 다음, 이를 IronPDF의 ChromePdfRenderer을 사용하여 PDF 문서로 변환하고 'output.pdf'로 저장합니다.

출력

Grakn Python (작동 방식: 개발자를 위한 가이드): 그림 4 - 이전 코드에서 출력된 PDF

라이선스

생성된 PDF에서 워터마크를 제거하려면 라이선스 키가 필요합니다. 이 링크 에서 무료 체험판에 등록하실 수 있습니다. 참고로, 등록 시 신용카드는 필요하지 않습니다. 무료 체험판에는 이메일 주소만 있으면 됩니다.

Grakn Python (작동 방식: 개발자를 위한 가이드): 그림 5 - IronPDF 라이선스 계획

결론

Grakn(현재 TypeDB)은 IronPDF 와 통합되어 PDF 문서에서 대량의 데이터를 관리하고 분석하는 강력한 솔루션을 제공합니다. IronPDF의 데이터 추출 및 조작 기능과 Grakn의 복잡한 관계 모델링 및 추론 능력을 활용하면 비정형 문서 데이터를 구조화되고 검색 가능한 정보로 변환할 수 있습니다.

이 통합을 통해 PDF에서 유용한 정보를 추출하는 과정이 간소화되고, 쿼리 및 분석 기능이 향상되어 정확도가 높아집니다. Grakn의 고급 데이터 관리 기능과 IronPDF의 PDF 처리 기능을 결합하면 정보를 보다 효율적으로 처리하여 더 나은 의사 결정을 내리고 복잡한 데이터 세트를 더 깊이 이해할 수 있습니다. IronSoftware는 Windows, Android, macOS, Linux 등을 포함한 다양한 운영 체제 및 플랫폼에서 애플리케이션 개발을 용이하게 하는 다양한 라이브러리도 제공합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해