DocumentDB

DocumentDB

JSON 형식의 데이터를 저장하고 조회할 수 있도록 구현된 데이터베이스를 다루기 위한 클래스 입니다.

다음은 API 코드 설명에 사용할 라이브러리의 별명입니다.

import pandas as pd
import polars as pl
import pyarrow as pa
import pyarrow.parquet as pq

생성자

Aeca와 통신을 위한 Channel 객체가 필수적으로 요구됩니다.

DocumentDB(
    channel: Channel, timeout: int | None = None
)
인자설명타입
channel채널Channel
timeout만료 시간int

find

DocumentDB에서 검색합니다.

DocumentDB.find(
    collection: str,
    query: dict | list[dict],
    limit: int | None = None,
    index_columns: list[str] | None = None,
    columns: list[str] | None = None,
    dtypes: dict[str, str] | None = None,
    to_pandas: bool = True,
    to_polars: bool = False,
    to_arrow: bool = False,
    enable_profile: bool = False,
) -> (
    pd.DataFrame
    | pl.DataFrame | pa.Table
    | tuple[pd.DataFrame | pl.DataFrame | pa.Table, dict]
)
인자설명타입
collection컬렉션 이름str
query검색 쿼리dict | list[dict]
limit검색 결과의 수int | None
index_columns색인으로 지정할 칼럼의 리스트list[str] | None
columns검색 결과의 칼럼의 리스트list[str] | None
dtypes검색 결과의 타입 정의dict[str, str] | None
to_pandasPandas (opens in a new tab)로 결과를 리턴bool | None
to_polarsPolars (opens in a new tab)로 결과를 리턴bool | None
to_arrowArrow (opens in a new tab)로 결과를 리턴bool | None
enable_profileProfile 결과를 함께 리턴bool | None

dtypes

검색 결과의 타입을 정의합니다, 다음은 입력 가능한 타입의 리스트입니다.

  • bool
  • int32
  • int64
  • float32
  • float64
  • string
  • string[pyarrow]
  • string[python]
  • datetime64[ms]
  • categorical

다음은 검색 결과 중 float_fieldint64로 변환하는 예시입니다. 정의되지 않은 칼럼은 내부에서 저장된 형식으로 반환됩니다.

doc_db.find(name, query, dtypes={"float_field": "int64"})

find_batch

find 함수와 동일하나 하나 이상의 요청을 한번에 보낼 수 있습니다.

DocumentDB.find_batch(
    requests: list[Request],
    to_pandas: bool = True,
    to_polars: bool = False,
    to_arrow: bool = False,
    enable_profile: bool = False,
) -> (
    list[pd.DataFrame]
    | list[pa.Table]
    | tuple[list[pd.DataFrame] | list[pa.Table], list[dict]]
)
인자설명타입
requestsRequest의 리스트list[DocumentDB.Request]
to_pandasPandas (opens in a new tab)로 결과를 리턴bool | None
to_polarsPolars (opens in a new tab)로 결과를 리턴bool | None
to_arrowArrow (opens in a new tab)로 결과를 리턴bool | None
enable_profileProfile 결과를 함께 리턴bool | None

insert

데이터를 입력합니다.

DocumentDB.insert(
    collection: str, docs: dict | list[dict]
) -> None
인자설명타입
collection컬렉션 이름str
docs데이터dict | list[dict]

update

데이터를 수정합니다.

DocumentDB.update(
    collection: str,
    filter_: dict | list[dict],
    updates: dict | list[dict],
) -> None
인자설명타입
collection컬렉션 이름str
filter_데이터 선택을 위한 쿼리dict | list[dict]
updates수정할 데이터dict | list[dict]

remove

데이터를 삭제합니다.

DocumentDB.remove(
    collection: str, docs: dict | list[dict]
) -> None
인자설명타입
collection컬렉션 이름str
docs데이터 선택을 위한 쿼리dict | list[dict]

get_collection

컬렉션 정보(색인, 통계)를 조회합니다.

DocumentDB.get_collection(
    collection: str
) -> None
인자설명타입
collection컬렉션 이름str

get_collections

하나 이상의 컬렉션들의 정보(색인, 통계)를 조회합니다.

DocumentDB.get_collections(
    collections: list[str]
) -> dict[str, any]
인자설명타입
collections컬렉션 리스트list[str]

rename_collection

컬렉션의 이름을 변경합니다.

DocumentDB.rename_collection(
    old_name:str, new_name: str
) -> dict[str, any]
인자설명타입
old_name기존 이름str
new_name변경할 이름str

list_collections

컬렉션 리스트를 조회합니다.

DocumentDB.list_collections() -> list[str]

create_collection

컬렉션을 생성합니다.

DocumentDB.create_collection(
    collection: str, indexes: list[dict[str, object]]
) -> None
인자설명타입
collection컬렉션 이름str
indexes색인 리스트list[dict]

drop_collection

컬렉션을 삭제합니다.

DocumentDB.drop_collection(
    collection: str
) -> None
인자설명타입
collection컬렉션 이름str

create_index

색인을 생성합니다.

DocumentDB.create_index(
    collection: str,
    index_name: str,
    fields: list[str],
    unique: bool,
    index_type: str,
    options: dict | None = None,
) -> None
인자설명타입
collection컬렉션 이름str
index_name색인 이름str
fields색인 생성할 칼럼 리스트list[str]
unique유일성 제약bool
index_type색인 타입str
options색인 상세 옵션dict | None

drop_index

색인을 삭제합니다.

DocumentDB.drop_index(
    collection: str, index_name: str
) -> None
인자설명타입
collection컬렉션 이름str
index_name색인 이름str

get_index

색인 정보를 조회합니다.

DocumentDB.get_index(
    collection: str, index_name: str
) -> None
인자설명타입
collection컬렉션 이름str
index_name색인 이름str

rename_index

색인의 이름을 변경합니다.

DocumentDB.rename_index(
    collection: str, old_name: str, new_name: str
) -> dict[str, any]
인자설명타입
collection컬렉션 이름str
old_name기존 이름str
new_name변경할 이름str

empty

컬렉션에 데이터가 비어있는지 확인합니다.

DocumentDB.empty(
    collection: str,
    query: dict | list[dict],
    dtypes: dict[str, str] | None = None,
) -> bool
인자설명타입
collection컬렉션 이름str
query검색 쿼리dict | list[dict]
dtypes검색 결과의 타입dict[str, str] | None

Request

find_batch에서 쿼리 정보를 전달하기 위한 data class

DocumentDB.Request(
    collection: str,
    query: dict | list[dict],
    index_columns: list[str] | None = None,
    columns: list[str] | None = None,
    dtypes: dict[str, str] | None = None,
    limit: int | None = None,
)
인자설명타입
collection컬렉션 이름str
query검색 쿼리dict | list[dict]
index_columns색인으로 지정할 칼럼의 리스트list[str] | None
columns검색 결과의 칼럼의 리스트list[str] | None
dtypes검색 결과의 타입dict[str, str] | None
limit검색 결과의 수int | None