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_pandas | Pandas (opens in a new tab)로 결과를 리턴 | bool | None |
to_polars | Polars (opens in a new tab)로 결과를 리턴 | bool | None |
to_arrow | Arrow (opens in a new tab)로 결과를 리턴 | bool | None |
enable_profile | Profile 결과를 함께 리턴 | bool | None |
dtypes
검색 결과의 타입을 정의합니다, 다음은 입력 가능한 타입의 리스트입니다.
bool
int32
int64
float32
float64
string
string[pyarrow]
string[python]
datetime64[ms]
categorical
다음은 검색 결과 중 float_field
만 int64
로 변환하는 예시입니다. 정의되지 않은 칼럼은 내부에서 저장된 형식으로 반환됩니다.
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]]
)
인자 | 설명 | 타입 |
---|---|---|
requests | Request의 리스트 | list[DocumentDB.Request] |
to_pandas | Pandas (opens in a new tab)로 결과를 리턴 | bool | None |
to_polars | Polars (opens in a new tab)로 결과를 리턴 | bool | None |
to_arrow | Arrow (opens in a new tab)로 결과를 리턴 | bool | None |
enable_profile | Profile 결과를 함께 리턴 | 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 |