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
750
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
120
Appbase.io - Investor Deck
siddharthlatest
0
320
Meteor Talk: Building Mitter
siddharthlatest
1
78
Data Streams on ElasticSearch
siddharthlatest
0
150
Building a streaming database service
siddharthlatest
1
210
Scalability Best Practices
siddharthlatest
0
180
Other Decks in Technology
See All in Technology
**強い**エンジニアのなり方 - フィードバックサイクルを勝ち取る / grow one day each day
soudai
61
18k
Databricks:『生成AI World Cup』のご案内
databricksjapan
2
150
ここが嬉しいABAC ここが辛いよABAC #再解説+補足編
masahirokawahara
0
220
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
1
180
疲弊しない!AWSセキュリティ統制の考え方 #devio_osakaday1
masahirokawahara
6
5.9k
入社後初めてのタスクでk8sアップグレードした話.pdf
kkato1
1
380
Oracle Cloud Infrastructure:2024年4月度サービス・アップデート
oracle4engineer
PRO
1
110
TransitGatewayの基礎
toru_kubota
0
230
Hands-on / Kaname Frusawa / Cloud Compare Users Meetup 2024 at University of Tokyo on April 17
paraworld
2
470
アプリがつくるNOT A HOTELブランド
hokuts
1
450
コンテナセキュリティの基本と脅威への対策
kyohmizu
3
700
o11y入門_外形監視を利用したWebアプリケーションへの最適なモニタリング_TechBrew
k5k
3
100
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
The Art of Programming - Codeland 2020
erikaheidi
41
12k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
10 Git Anti Patterns You Should be Aware of
lemiorhan
646
57k
Reflections from 52 weeks, 52 projects
jeffersonlam
344
19k
Build your cross-platform service in a week with App Engine
jlugia
225
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
Rebuilding a faster, lazier Slack
samanthasiow
72
8.2k
Fireside Chat
paigeccino
20
2.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.4k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
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