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
私が trocco を推す理由
__allllllllez__
1
240
競技としてのKaggle、役に立つKaggle
yu4u
3
1.8k
チームでロジカルシンキングに改めて向き合っている話 〜学習環境と実践⽅法〜
sansantech
PRO
3
2.6k
データベース02: データベースの概念
trycycle
0
160
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
1k
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
3
570
オーナーシップを持つ領域を明確にする
konifar
13
3.2k
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
300
Java EE/Jakarta EEの現状と将来―クラウドネイティブ時代にJava EEは対応できるのか?―
takakiyo
1
170
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
780
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
4
440
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
44
9.7k
Teambox: Starting and Learning
jrom
128
8.4k
Automating Front-end Workflow
addyosmani
1356
200k
Infographics Made Easy
chrislema
238
18k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Six Lessons from altMBA
skipperchong
21
3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
659
120k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
40
4.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
For a Future-Friendly Web
brad_frost
172
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