SmartKDB v5 Developer Guide 🛠️

1. ACID Transactions

SmartKDB v5 supports atomic transactions.

tx = db.tx_manager.begin()
try:
    db.get_table("users").insert(data, transaction_id=tx)
    db.get_table("logs").insert(log_entry, transaction_id=tx)
    db.tx_manager.commit(tx)
except Exception as e:
    db.tx_manager.rollback(tx)
    print("Transaction failed:", e)

2. Time-Travel Queries

Access historical data using the Version Manager.

# Get record state at a specific timestamp
past_data = db.version_manager.get_version_at("users", "user_123", timestamp=1678886400)

3. Plugin Development

Create a python file in smartkdb/plugins/my_plugin.py.

def register(db):
    # This function is called on startup
    print("Plugin initialized")
    
    # You can monkey-patch or extend DB functionality
    db.my_custom_method = lambda: "Hello from Plugin"

4. Distributed Mode

Join a cluster:

db.node_manager.join_cluster("http://192.168.1.50:8000")