Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Appbase - A realtime events-based document store
Search
Siddharth Kothari
March 05, 2015
Technology
1
800
Appbase - A realtime events-based document store
Redisconf '15 talk: Using Redis to build a document store with a streaming events server.
Siddharth Kothari
March 05, 2015
Tweet
Share
More Decks by Siddharth Kothari
See All by Siddharth Kothari
Data Streams with Elasticsearch
siddharthlatest
0
130
Appbase.io - Customer Deck
siddharthlatest
0
140
Appbase.io - Investor Deck
siddharthlatest
0
330
Meteor Talk: Building Mitter
siddharthlatest
1
99
Data Streams on ElasticSearch
siddharthlatest
0
160
Building a streaming database service
siddharthlatest
1
220
Scalability Best Practices
siddharthlatest
0
180
Other Decks in Technology
See All in Technology
AIでテストプロセス自動化に挑戦する
sakatakazunori
1
530
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
13k
助けて! XからWaylandに移行しないと新しいGNOMEが使えなくなっちゃう 2025-07-12
nobutomurata
2
200
AI エージェントと考え直すデータ基盤
na0
20
7.9k
ソフトウェアQAがハードウェアの人になったの
mineo_matsuya
3
210
アクセスピークを制するオートスケール再設計: 障害を乗り越えKEDAで実現したリソース管理の最適化
myamashii
1
670
CDK Vibe Coding Fes
tomoki10
1
630
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
39k
How Do I Contact Jetblue Airlines® Reservation Number: Fast Support Guide
thejetblueairhelpsupport
0
150
QuickSight SPICE の効果的な運用戦略~S3 + Athena 構成での実践ノウハウ~/quicksight-spice-s3-athena-best-practices
emiki
0
290
Four Keysから始める信頼性の改善 - SRE NEXT 2025
ozakikota
0
420
Talk to Someone At Delta Airlines™️ USA Contact Numbers
travelcarecenter
0
160
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Faster Mobile Websites
deanohume
308
31k
Statistics for Hackers
jakevdp
799
220k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Transcript
Appbase: A Realtime events-based document index store - Siddharth Kothari
@siddharthlatest
Javascript foobar, Database enthusiast I know R+L = J CEO
at appbase.io
Why?
Why? relational data vs linked data.
Imagine…
Imagine… 1) Document store schema
Imagine… 1) Document store schema 2) Dynamic References
Imagine… 1) Document store schema 2) Dynamic References 3) All
JSON
Hint: Is this MongoDB?
Hint: It’s not MongoDB. This is Redis!
Appbase: A Realtime events-based document index store
Appbase: A Realtime events-based document index store 1) Document store
schema 2) Dynamic References 3) All JSON
Appbase: A Realtime events-based document index store 1) Document store
schema 2) Dynamic References 3) All JSON 4) Realtime events - Subscribe to updates
Pulling a Mongo! Here’s how: Document store schema Collection
Pulling a Mongo! Here’s how: Document store schema { “item”:
“pencil”, “qty”: 500, “type”: “no.3”} Collection Document
Pulling a Mongo! Here’s how: Embedded Documents { “item”: “pencil”,
“qty”: 500, “type”: “no.3”, “foo”: { “embedded_foo”: “bar” } } Embedded Property
Pulling a Mongo! Here’s how: Adding References { “item”: “pencil”,
“qty”: 500, “type”: “no.3”, “foo”: { “embedded_foo”: “bar” }, “/ref1”: “user/item#3” } Reference user item#3
Pulling a Mongo! Here’s how: Adding References { “item”: “pencil”,
…, …, “/ref1”: { “_collection”: “user”, “_id”: “item#3”, “ref_prop#1”: “something” } } Reference Adding the doc directly
Beyond Document Store! Introducing Paths { “_id”: “pencil”, “_collection”: “stationary”,
“foo”: { “embedded_foo”: “bar” }, “/ref1”: “user/item#3” } Reference user item#3
Beyond Document Store! Introducing Paths { “_id”: “pencil”, “_collection”: “stnry”,
“foo”: { “embedded_foo”: “bar” }, “/ref1”: “user/item#3” } Reference user item#3 Two paths: 1. /user/item#3 2. /stnry/pencil/ref1
Beyond Document Store! Introducing Paths Two paths: 1. /user/item#3 2.
/stnry/pencil/ref1
Beyond Document Store! Introducing Paths a b c d 1.
a/b/c/d, 2. z/b/c/d, 3. q/w/d 4. … z q w
So far… Document store with true references a b c
d z q w { “_id”: “d”, “_collection”: “alpha”, “depth”: “4” }
Taking advantage of true referencing Event subscriptions:
{ “_id”: “d”, “_collection”: “alpha”, “depth”: “4” } Taking advantage
of true referencing a b z Event subscriptions: 1.Property updates
{ “_id”: “d”, “_collection”: “alpha”, “depth”: “4” } Taking advantage
of true referencing a b z c d q w Event subscriptions: 1.Property updates 2.Reference updates
Open Source
Open Source License: Apache 2 v0.1 - Brave Souls
Open Source appbaseio.github.io/appbase-redis License: Apache 2 v0.1 - Brave Souls
Live Demo
Live Demo /users/user_542 Create a new document
Live Demo /users/user_542 Create a new document Assign some properties
Live Demo /users/user_542 Create a new document Assign some properties
{ “em”: “
[email protected]
”, “points”: 5321, “/friends”: … }
Live Demo /users/user_542 Create a new document Assign some properties
{ “em”: “
[email protected]
”, “points”: 5321, “/friends”: … } Watch it Stream
API Spec Comes with a HTTP API server
API Spec Comes with a HTTP API server PATCH /{collection}/{document}/[path]
GET /{collection}/{document}/[path] ?stream=true
API Spec Comes with a HTTP API server PATCH GET
https://github.com/appbaseio/ appbase-redis/ blob/master/ index.js Entire Spec
API Spec Request Body
Roadmap to v1.0 1. Battle Testing Unit Tests, Better Code
Perf Tests
Roadmap to v1.0 1. Battle Testing Unit Tests, Better Code
Perf Tests 2. Scaling Use Pushpin = Message Queue + Streaming
Roadmap to v1.0 1. Battle Testing Unit Tests, Better Code
Perf Tests 2. Scaling Use Pushpin = Message Queue + Streaming 3. Rich Querying More filters, aggregation queries
Thank you! Questions? @siddharthlatest