@slamdata @jdegoes
John A. De Goes — CTO SlamData Inc.
“SlamData is my new favorite thing — a game changer!” — SlamData User
@slamdata @jdegoes
@slamdata @jdegoes
Advanced Data Science in the Cloud
@slamdata @jdegoes
@slamdata @jdegoes
SQL Analytics
@slamdata @jdegoes
@slamdata @jdegoes
[This Slide Intentionally Left Blank]
NoSQL Analytics
@slamdata @jdegoes
The
Eight
Deadly
Obstacles
to NoSQL Analytics
@slamdata @jdegoes
CHaracteristics
1. Generic Data Model
@slamdata @jdegoes
CHaracteristics
2 Isomorphic Data Model
Data SQL²
{
"userId": 8927524,
"profile": {
"name": "Mary Jane",
"age": 29,
"gender": "female"
},
"comments": [{
"id": "F2372BAC",
"text": "I concur.",
"replyTo": [9817361, "F8ACD164F"],
"time": "2015-02-03"
}, {
"id": "GH732AFC",
"replyTo": [9654726, "A44124F"],
"time": "2015-03-01"
}]
}
SELECT comments[*].replyTo[*]
FROM data
@slamdata @jdegoes
CHaracteristics
3. Multidimensionality
Data SQL²
{"user_id": 928347234,
"email": null,
"events": [
{"impression":{
"ts": 912348934,
"page": "index.html"}}]}
SELECT user_id,
[events[_] WHERE
events[_].ts < 9347234 ...]
AS events
FROM visitors
@slamdata @jdegoes
CHaracteristics
4. Unified Schema/Data
Data SQL²
{"user_id": "mary@bigco.com",
"band_plays":{
"Squirrel Nut Zippers": 56,
"Red Hot Tomatoes": 19,
"Big Bad Voodoo Daddy": 102}}
SELECT band_plays{*:} AS artistName,
SUM(band_plays{*}) AS votes
FROM music
GROUP BY band_plays{*:}
@slamdata @jdegoes
CHaracteristics
5. Polymorphic Queries
Data SQL²
{"type": "click",
"link": "http://foo.com"
"timestamp": 123987172}
{"type": "impression",
"page": "index.html"
"timestamp": 92372}
SELECT COUNT(*) AS count, timestamp
FROM data
GROUP BY timestamp
@slamdata @jdegoes
CHaracteristics
6. Post-Relational
Data SQL²
{"name": "John Doe",
"blog_posts": [
{"post_id": "89934"},
{"post_id": "92371"}
]}
SELECT authors.name, posts.title
FROM authors
JOIN posts
ON authors.blog_posts[*].post_id =
posts._id
@slamdata @jdegoes
CHaracteristics
7. Runtime Type Id & ConverSION
Data SQL²
{"email": ["joe@gmail.com",
"joe@slamdata.com"]}
{"email": {
"home": "sarah@gmail.com",
"work": "sarah@slamdata.com"}}
SELECT
CASE TYPEOF email
-- old: email stored in 2nd el:
WHEN 'array' THEN email[1]
-- new format:
WHEN 'map' THEN email.work
ELSE email
END AS email
FROM users
@slamdata @jdegoes
CHaracteristics
8. Structural Pattern Matching
Data SQL²
{"user_id": "toby@bing.com",
"events": [{"type": "purchase",
"timestamp": 12392342,
"order_id": "2ffa34aa"},
{"type": "click",
"timestamp": 92327123,
"link": "http://foo.com"}]}
SELECT
CASE user_events
WHEN […, e1, e2, …] THEN
e1.timestamp - e2.timestamp
END AS delta
FROM users
@slamdata @jdegoes
● Open Source, Visual
analytics for NoSQL
● Search, Explore, Refine,
Analyze, and Visualize
● Embed interactive reports
on live MongoDB Data
● Extended SQL support that
runs 100% in-database
Market Response
@slamdata @jdegoes
● Launched version 1 just 13 months ago
● 3,000 Users & Growing Fast
● Many Fortune 500 companies
“Thank you for making such a wonderful product!
SlamData helps us analyze data from our local
database for MongoDB, which consist millions of
records, with thousands of new records added on a
daily basis.”
— SlamData User
Why MongoDB?
@slamdata @jdegoes
1. Modern Data Model
Why MongoDB?
@slamdata @jdegoes
2. Ad Hoc Queries
@slamdata @jdegoes
Why MongoDB?
3. Mainstream NoSQL
@slamdata @jdegoes
Why MongoDB?
4. Open Source
@slamdata @jdegoes
SlamData Open Source Project
http://slamdata.com (website)
http://github.com/slamdata/slamdata (code)
Characteristics of NoSQL Analytics Systems
http://slamdata.com/whitepapers/characteristics-of-nosql-analytics-systems/ (whitepaper)
Quasar NoSQL Analytics Engine
http://quasar-analytics.org (website)
http://github.com/quasar-analytics/quasar (code)
Quasar BI Connector for Tableau, Qlik, Cognos, etc.
http://github.com/quasar-analytics/quasar-fdw (code)
Thank you for listening! Questions?
LIVE DEMO
@slamdata @jdegoes
Appendix A

SlamData - How MongoDB Is Powering a Revolution in Visual Analytics