One database for user-user (follows), user-item (likes), and item-item (related items) interactions — precomputed at write time, served as simple lookups
227
stars
304
commits
Kotlin
primary language
Sep 1, 2026
updated
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.
Documentation · Path to open source · Why we built this · Production stories
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:
All three axes have run in production at Kakao at over 1M req/min since 2024.
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
See Quick Start for more, or Build Your Social Media App to go deeper.
Supported operations:
Planned:
Client
│
(REST API)
│
Actionbase
├──> HBase
│
├──> JDBC
│
└──> Kafka ──> Downstream Pipelines
Additional storage backends are planned for small to mid-size deployments.
If a single database can handle your workload, that's the better choice.
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.
We welcome contributions. See our Contributing Guide.
For questions, ideas, or feedback, open an issue.
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.
Kotlin
63.8%
Java
28.8%
Go
4.6%
Scala
2.5%
One database for user-user (follows), user-item (likes), and item-item (related items) interactions — precomputed at write time, served as simple lookups
227
stars
304
commits
Kotlin
primary language
Sep 1, 2026
updated
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.
Documentation · Path to open source · Why we built this · Production stories
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:
All three axes have run in production at Kakao at over 1M req/min since 2024.
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
See Quick Start for more, or Build Your Social Media App to go deeper.
Supported operations:
Planned:
Client
│
(REST API)
│
Actionbase
├──> HBase
│
├──> JDBC
│
└──> Kafka ──> Downstream Pipelines
Additional storage backends are planned for small to mid-size deployments.
If a single database can handle your workload, that's the better choice.
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.
We welcome contributions. See our Contributing Guide.
For questions, ideas, or feedback, open an issue.
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.
Kotlin
63.8%
Java
28.8%
Go
4.6%
Scala
2.5%