Skip to content

kakao/actionbase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

236 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Actionbase

One database for user–user, user–item, and item–item interactions — precomputed at write time, served as simple lookups.
1M+ req/min in production at Kakao. Built on HBase.

CI Release License Docs

Documentation · Open-sourced · Why we built this · Production stories

Why Actionbase

Follows, likes, recent views, related content — they are all interaction data. They look simple, but at scale, real-time counts, toggle consistency, and ordered relationship reads turn into bottlenecks, and teams end up rebuilding caches, indexes, and dual-write pipelines from scratch every time.

Actionbase consolidates these into one database for interactions. Every interaction is expressed in the same model — source → action → target — and the combination of source and target naturally yields three axes:

  • User–User (U2U) — follow/unfollow, follower/following counts, timeline scans
  • User–Item (U2I) — likes/bookmarks, view history, bidirectional counters
  • Item–Item (I2I) — related products, similar-content graphs, and other precomputed item-to-item relations

All three axes have run in production at Kakao at over 1M req/min since 2024.

Quick Start

1. Run

docker run -it ghcr.io/kakao/actionbase:standalone

Runs server (port 8080) in the background, CLI (actionbase>) in the foreground.

2. Load sample data

load preset likes

Loads metadata and 3 edges (a U2I example):

Alice --- likes ----> +--------+
                      | Phone  |
Bob ----- likes ----> +--------+
      |
      |               +--------+
      +-- likes ----> | Laptop |
                      +--------+

3. Query — Precomputed. Just read.

get --source Alice --target Phone                # Alice → Phone
scan --index recent --start Bob --direction OUT  # Bob → Laptop, Bob → Phone
scan --index recent --start Phone --direction IN # Alice → Phone, Bob → Phone
count --start Alice --direction OUT              # 1
count --start Phone --direction IN               # 2
Actionbase Quick Start Demo

See Quick Start for more, or Build Your Social Media App to go deeper.

How It Works

  • At write time: exact counts, consistent toggles, indexes, and aggregations are all precomputed.
  • At read time: precomputed results are read as-is. Read-path cost stays flat under load. Multi-hop traversals are expressed by composing the supported operations.

Supported operations:

  • Edge lookups (GET, multi-get)
  • Edge counts (COUNT)
  • Indexed edge scans (SCAN; multi-start variant is SEEK)
  • Real-time aggregations (AGG)

Planned:

  • Global TopK
  • Per-entity TopK

Architecture

  • HBase — durable storage for interactions; strong durability, horizontal scalability.
  • Kafka — WAL/CDC publication for recovery, replay, and downstream pipelines.
  • JDBC metastore — to be consolidated into HBase.
Client
  │
(REST API)
  │
Actionbase
  ├──> HBase
  │
  ├──> JDBC
  │
  └──> Kafka ──> Downstream Pipelines

Additional storage backends are planned for small to mid-size deployments.

Codebase Overview

  • core — data model, mutation, query, encoding logic (Java, Kotlin)
  • engine — storage and messaging bindings (Kotlin)
  • server — REST API server (Kotlin, Spring WebFlux)
  • pipeline (planned) — bulk loading and CDC processing (Scala, Spark)

When to Use It

  • A single database or cache layer can no longer absorb your U2U/U2I/I2I traffic
  • Multiple teams keep rebuilding the same real-time counters, sync queues, and relationship scans
  • You need predictable read latency without read-time computation

If a single database can handle your workload, that's the better choice.

Current Status

Early open-source phase. The first release focuses on introducing core concepts and hands-on guides. Production installation, operations guides, and additional components will be released over time.

Contribute

We welcome contributions. See our Contributing Guide.

For questions, ideas, or feedback, open an issue.

Learn More

License

This software is licensed under the Apache 2 license.

Copyright 2026 Kakao Corp. http://www.kakaocorp.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

One database for user-user (follows), user-item (likes), and item-item (related items) interactions — precomputed, served in real-time

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors