C/C++ — dbx-ffi

고성능 임베디드 데이터베이스 DBX의 공식 C/C++ FFI (Foreign Function Interface) 바인딩입니다.

주요 기능

  • 🚀 네이티브 성능: Rust 코어 직접 호출
  • 💾 5-Tier 스토리지: WOS → L0 → L1 → L2 → Cold Storage
  • 🔒 MVCC 트랜잭션: 스냅샷 격리 지원
  • 📊 SQL 지원: DDL + DML 완벽 지원
  • 🔐 암호화: AES-GCM-SIV, ChaCha20-Poly1305
  • 🔧 C89 호환: 모든 C/C++ 컴파일러 지원

빠른 시작

C 예제

#include "dbx.h"
#include <stdio.h>

int main() {
    // 데이터베이스 열기
    DbxDatabase* db = dbx_open_in_memory();
    
    // KV 작업
    const char* key = "user:1";
    const char* value = "Alice";
    dbx_insert(db, "users", (uint8_t*)key, strlen(key), (uint8_t*)value, strlen(value));
    
    // 조회
    uint8_t* result = NULL;
    size_t result_len = 0;
    dbx_get(db, "users", (uint8_t*)key, strlen(key), &result, &result_len);
    
    if (result) {
        printf("Value: %.*s\n", (int)result_len, result);
        dbx_free_bytes(result);
    }
    
    // SQL 작업
    dbx_execute_sql(db, "CREATE TABLE users (id INTEGER, name TEXT)");
    dbx_execute_sql(db, "INSERT INTO users VALUES (1, 'Alice')");
    
    char* sql_result = dbx_execute_sql(db, "SELECT * FROM users");
    printf("SQL Result: %s\n", sql_result);
    dbx_free_string(sql_result);
    
    // 정리
    dbx_close(db);
    return 0;
}

C++ 예제

#include "dbx.hpp"
#include <iostream>
#include <string>

int main() {
    // RAII 래퍼 사용
    dbx::Database db = dbx::Database::openInMemory();
    
    // KV 작업
    db.insert("users", "user:1", "Alice");
    
    auto value = db.get("users", "user:1");
    if (value) {
        std::cout << "Value: " << *value << std::endl;
    }
    
    // SQL 작업
    db.executeSql("CREATE TABLE users (id INTEGER, name TEXT)");
    db.executeSql("INSERT INTO users VALUES (1, 'Alice')");
    
    auto result = db.executeSql("SELECT * FROM users");
    std::cout << "SQL Result: " << result << std::endl;
    
    return 0;
}

문서 구조

버전 정보

  • 현재 버전: 0.0.6-beta
  • C 표준: C89 이상
  • C++ 표준: C++11 이상 (C++ 래퍼)
  • 플랫폼: Windows x64 (Linux/macOS 계획됨)

라이선스

MIT License


Table of contents


Copyright © 2026 ByteLogicCore. MIT OR Apache-2.0 License.

This site uses Just the Docs, a documentation theme for Jekyll.