SlideShare a Scribd company logo
1 of 174
Download to read offline
15-415/615 1
Ankur Goyal
3/17/2016
1
Based on a lecture given at Carnegie Mellon University.
(c) Ankur Goyal
Ques%ons We Will Answer
ā€¢ What is an in-memory database?
ā€¢ Why do they ma3er?
ā€¢ How do you build one?
ā€¢ How do people use MemSQL?
(c) Ankur Goyal
Topics
ā€¢ In-Memory Databases
ā€¢ In-Memory Architecture
ā€¢ MemSQL in the Wild
ā€¢ Q/A
(c) Ankur Goyal
Ankur Goyal
ā€¢ CMU SCS (2008-2011), PDL (2010-2011)
ā€¢ Microso7 (2010)
ā€¢ VP of Engineering @ MemSQL (2011-)
ā€¢ I ā¤ databases
(c) Ankur Goyal
Live Demo
(c) Ankur Goyal
What is an in-memory database?
(c) Ankur Goyal
In-Memory Databases...
ā€¢ Use memory instead of disk
(c) Ankur Goyal
In-Memory Databases...
ā€¢ Use memory instead of disk
(c) Ankur Goyal
In-Memory Databases...
ā€¢ Use memory instead of disk
ā€¢ Do not (need to) save data on disk
(c) Ankur Goyal
In-Memory Databases...
ā€¢ Use memory instead of disk
ā€¢ Do not (need to) save data on disk
(c) Ankur Goyal
In-Memory Databases...
ā€¢ Use memory instead of disk
ā€¢ Do not (need to) save data on disk
ā€¢ Put the whole dataset in memory
(c) Ankur Goyal
In-Memory Databases...
ā€¢ Use memory instead of disk
ā€¢ Do not (need to) save data on disk
ā€¢ Put the whole dataset in memory
(c) Ankur Goyal
In-Memory Databases...
ā€¢ Use memory instead of disk
ā€¢ Do not (need to) save data on disk
ā€¢ Put the whole dataset in memory
Well, some)mes...
(c) Ankur Goyal
Wikipedia says...
In-memory databases primarily rely
on main-memory for storage.
(c) Ankur Goyal
In-Memory Databases
ā€¢ Are durable to disk (and respect ACID)
(c) Ankur Goyal
In-Memory Databases
ā€¢ Are durable to disk (and respect ACID)
ā€¢ Can spill on disk or pin data in-memory (and take advantage of it)
(c) Ankur Goyal
In-Memory Databases
ā€¢ Are durable to disk (and respect ACID)
ā€¢ Can spill on disk or pin data in-memory (and take advantage of it)
ā€¢ Tradeoļ¬€s are suited to systems with lots of memory
(c) Ankur Goyal
In-Memory Databases
ā€¢ Are durable to disk (and respect ACID)
ā€¢ Can spill on disk or pin data in-memory (and take advantage of it)
ā€¢ Tradeoļ¬€s are suited to systems with lots of memory
ā€¢ Tend to be distributed systems
(c) Ankur Goyal
In-Memory Databases
ā€¢ Are durable to disk (and respect ACID)
ā€¢ Can spill on disk or pin data in-memory (and take advantage of it)
ā€¢ Tradeoļ¬€s are suited to systems with lots of memory
ā€¢ Tend to be distributed systems
ā€¢ Have a diļ¬€erent set of boClenecks
(c) Ankur Goyal
Bold Claim
(c) Ankur Goyal
All database workloads will be
running on in-memory databases
(c) Ankur Goyal
Why?
ā€¢ Memory is ge,ng cheaper (about 40% every year)
(c) Ankur Goyal
Why?
ā€¢ Memory is ge,ng cheaper (about 40% every year)
ā€¢ Cache is the new RAM (RAM is the new disk, disk is the new
tape, etc)
(c) Ankur Goyal
Why?
ā€¢ Memory is ge,ng cheaper (about 40% every year)
ā€¢ Cache is the new RAM (RAM is the new disk, disk is the new
tape, etc)
ā€¢ In-memory databases leverage SSD (no random writes)
(c) Ankur Goyal
Why?
ā€¢ Memory is ge,ng cheaper (about 40% every year)
ā€¢ Cache is the new RAM (RAM is the new disk, disk is the new
tape, etc)
ā€¢ In-memory databases leverage SSD (no random writes)
ā€¢ NVRAM is coming (and could be cheaper than SSD)
(c) Ankur Goyal
Why?
ā€¢ Memory is ge,ng cheaper (about 40% every year)
ā€¢ Cache is the new RAM (RAM is the new disk, disk is the new
tape, etc)
ā€¢ In-memory databases leverage SSD (no random writes)
ā€¢ NVRAM is coming (and could be cheaper than SSD)
In-memory databases are tuned to
modern hardware and modern workloads
(c) Ankur Goyal
In-Memory Architecture
(c) Ankur Goyal
Architecture Topics
ā€¢ In-Memory Storage
ā€¢ Transac3ons and Concurrency Control
ā€¢ Crash Recovery and Replica3on
ā€¢ Code Genera3on
ā€¢ Distributed Execu3on
(c) Ankur Goyal
In-Memory Storage Mo/va/on
ā€¢ Insanely fast random reads & writes
(c) Ankur Goyal
In-Memory Storage Mo/va/on
ā€¢ Insanely fast random reads & writes
ā€¢ Atomic writes as granular as a byte
(c) Ankur Goyal
In-Memory Storage Mo/va/on
ā€¢ Insanely fast random reads & writes
ā€¢ Atomic writes as granular as a byte
ā€¢ Working space is precious (RAM)
(c) Ankur Goyal
In-Memory Storage Mo/va/on
ā€¢ Insanely fast random reads & writes
ā€¢ Atomic writes as granular as a byte
ā€¢ Working space is precious (RAM)
ā€¢ Very diļ¬€erent for rowstores and columnstores
(c) Ankur Goyal
In-Memory Rowstore
ā€¢ Rowstores have lots of random reads/writes
(c) Ankur Goyal
In-Memory Rowstore
ā€¢ Rowstores have lots of random reads/writes
ā€¢ Datasets are usually small < 10 TB
(c) Ankur Goyal
In-Memory Rowstore
ā€¢ Rowstores have lots of random reads/writes
ā€¢ Datasets are usually small < 10 TB
Solu%on: keep the whole dataset in memory
(c) Ankur Goyal
In-Memory Rowstore
ā€¢ Rowstores have lots of random reads/writes
ā€¢ Datasets are usually small < 10 TB
Solu%on: keep the whole dataset in memory
ā€¢ Use memory op+mized data structures (skip list)
(c) Ankur Goyal
What is a Skip List
ā€¢ Invented in 1989 by William Pugh
(c) Ankur Goyal
What is a Skip List
ā€¢ Invented in 1989 by William Pugh
ā€¢ Expected O(log(n)) lookup, insert, delete
(c) Ankur Goyal
What is a Skip List
ā€¢ Invented in 1989 by William Pugh
ā€¢ Expected O(log(n)) lookup, insert, delete
ā€¢ No pages
(c) Ankur Goyal
(c) Ankur Goyal
Common Concerns
ā€¢ Memory overhead
(c) Ankur Goyal
(c) Ankur Goyal
Skip List Struct Layout
struct Table_Row {
int col_a;
char* col_b;
ā€¦
Tower* idx_1_ptrs;
Tower* idx_2_ptrs;
};
(c) Ankur Goyal
Common Concerns
ā€¢ Memory overhead
ā€¢ Scan performance
(c) Ankur Goyal
(c) Ankur Goyal
Ineļ¬ƒcient Skip List
(c) Ankur Goyal
Eļ¬ƒcient Skip List
(c) Ankur Goyal
Common Concerns
ā€¢ Memory overhead
ā€¢ Scan performance
ā€¢ Reverse Itera6on
(c) Ankur Goyal
Common Concerns
ā€¢ Memory overhead
ā€¢ Scan performance
ā€¢ Reverse Itera6on
(HW Assignment)
(c) Ankur Goyal
Concurrency Control
(c) Ankur Goyal
Concurrency Control
ā€¢ No pages => No latches
(c) Ankur Goyal
Concurrency Control
ā€¢ No pages => No latches
ā€¢ Skip list in MemSQL is lockfree
(c) Ankur Goyal
Concurrency Control
ā€¢ No pages => No latches
ā€¢ Skip list in MemSQL is lockfree
ā€¢ Every node is a lock-free linked list
(c) Ankur Goyal
Concurrency Control
ā€¢ No pages => No latches
ā€¢ Skip list in MemSQL is lockfree
ā€¢ Every node is a lock-free linked list
ā€¢ Row locks are implemented with futexes (4 bytes)
(c) Ankur Goyal
Concurrency Control
ā€¢ No pages => No latches
ā€¢ Skip list in MemSQL is lockfree
ā€¢ Every node is a lock-free linked list
ā€¢ Row locks are implemented with futexes (4 bytes)
ā€¢ Read-commiGed and snapshot isolaHon
(c) Ankur Goyal
In-Memory Columnstore
(c) Ankur Goyal
In-Memory Columnstore
(c) Ankur Goyal
Columnstore Review
ā€¢ Big sequen+al scans and writes
(c) Ankur Goyal
Columnstore Review
ā€¢ Big sequen+al scans and writes
ā€¢ Huge immutable vectors of data
(c) Ankur Goyal
Columnstore Review
ā€¢ Big sequen+al scans and writes
ā€¢ Huge immutable vectors of data
Solu%on: Cache dataset in memory
(c) Ankur Goyal
How do columnstores
beneļ¬t from in-memory?
(c) Ankur Goyal
Have a lock-free skip list handy?
(c) Ankur Goyal
Have a lock-free skip list handy?
ā€¢ Keep metadata in-memory
ā€¢ Use sidecar rowstore for fast small-batch writes
(c) Ankur Goyal
(c) Ankur Goyal
Columnstore LSM
ā€¢ Log-Structured Merge of sorted runs
(c) Ankur Goyal
(c) Ankur Goyal
Columnstore LSM
ā€¢ Log-Structured Merge of sorted runs
ā€¢ Tunable tradeoļ¬€s for read/write ampliļ¬ca=on
(c) Ankur Goyal
Columnstore LSM
ā€¢ Log-Structured Merge of sorted runs
ā€¢ Tunable tradeoļ¬€s for read/write ampliļ¬ca=on
ā€¢ Enables fast writes to a sorted columnstore
(c) Ankur Goyal
Columnstore LSM
ā€¢ Log-Structured Merge of sorted runs
ā€¢ Tunable tradeoļ¬€s for read/write ampliļ¬ca=on
ā€¢ Enables fast writes to a sorted columnstore
ā€¢ Smallest sorted run is a skip list
(c) Ankur Goyal
(c) Ankur Goyal
Crash Recovery
(c) Ankur Goyal
Durability in an In-Memory System?
ā€¢ Memory is not a reliable medium (yet)
(c) Ankur Goyal
Durability in an In-Memory System?
ā€¢ Memory is not a reliable medium (yet)
ā€¢ There is always a hierarchy
(c) Ankur Goyal
Durability in an In-Memory System?
ā€¢ Memory is not a reliable medium (yet)
ā€¢ There is always a hierarchy
ā€¢ E.g. EBS -> S3 -> Glacier
(c) Ankur Goyal
Durability in an In-Memory System?
ā€¢ Memory is not a reliable medium (yet)
ā€¢ There is always a hierarchy
ā€¢ E.g. EBS -> S3 -> Glacier
ā€¢ To operate at in-memory speed, all disk I/O must be sequenHal
(c) Ankur Goyal
Durability in the Rowstore
ā€¢ Indexes are not materialized on disk
(c) Ankur Goyal
Durability in the Rowstore
ā€¢ Indexes are not materialized on disk
ā€¢ Reconstruct indexes on the ļ¬‚y during recovery
(c) Ankur Goyal
Durability in the Rowstore
ā€¢ Indexes are not materialized on disk
ā€¢ Reconstruct indexes on the ļ¬‚y during recovery
ā€¢ Only need to log PK data
(c) Ankur Goyal
Durability in the Rowstore
ā€¢ Indexes are not materialized on disk
ā€¢ Reconstruct indexes on the ļ¬‚y during recovery
ā€¢ Only need to log PK data
ā€¢ Take full database snapshots periodically
(c) Ankur Goyal
Durability in the Rowstore
ā€¢ Indexes are not materialized on disk
ā€¢ Reconstruct indexes on the ļ¬‚y during recovery
ā€¢ Only need to log PK data
ā€¢ Take full database snapshots periodically
ā€¢ Tunable to be sync/async
(c) Ankur Goyal
(c) Ankur Goyal
Durability in the Columnstore
ā€¢ Metadata uses ordinary rowstore mechanism
(c) Ankur Goyal
Durability in the Columnstore
ā€¢ Metadata uses ordinary rowstore mechanism
ā€¢ Segments are huge (several KB or even MB)
(c) Ankur Goyal
Durability in the Columnstore
ā€¢ Metadata uses ordinary rowstore mechanism
ā€¢ Segments are huge (several KB or even MB)
ā€¢ Read/wri=en sequen?ally
(c) Ankur Goyal
Durability in the Columnstore
ā€¢ Metadata uses ordinary rowstore mechanism
ā€¢ Segments are huge (several KB or even MB)
ā€¢ Read/wri=en sequen?ally
ā€¢ Columnstore segments synchronously wri=en to disk
(c) Ankur Goyal
Durability in the Columnstore
ā€¢ Metadata uses ordinary rowstore mechanism
ā€¢ Segments are huge (several KB or even MB)
ā€¢ Read/wri=en sequen?ally
ā€¢ Columnstore segments synchronously wri=en to disk
ā€¢ Memory-speed writes go to sidecar rowstore
(c) Ankur Goyal
Crash Recovery
ā€¢ Replay latest snapshot, and then every log ļ¬le since
(c) Ankur Goyal
Crash Recovery
ā€¢ Replay latest snapshot, and then every log ļ¬le since
ā€¢ No par7ally wri9en state on disk, so no undos
(c) Ankur Goyal
Crash Recovery
ā€¢ Replay latest snapshot, and then every log ļ¬le since
ā€¢ No par7ally wri9en state on disk, so no undos
ā€¢ Columnstore just replays metadata
(c) Ankur Goyal
Crash Recovery
ā€¢ Replay latest snapshot, and then every log ļ¬le since
ā€¢ No par7ally wri9en state on disk, so no undos
ā€¢ Columnstore just replays metadata
ā€¢ Replica7on == Con7nuous replay over the network
(c) Ankur Goyal
Code Genera*on
(c) Ankur Goyal
class Row(object):
def __init__(self, a):
self.a = a
t = [Row(x) for x in range(1000000)]
class State(object):
def __init__(self):
self.agg_sum = 0
def loop(state, row):
state.agg_sum += row.a + 1
def query():
state = State()
for r in t:
loop(state, r)
return state
if __name__ == '__main__':
start = time.time()
state = query()
end = time.time()
print "Answer: %d, Time (s): %g" % (state.agg_sum, (end-start))
(c) Ankur Goyal
struct Row int main(void)
{ {
Row(int a_arg) : a(a_arg) { } std::vector<Row> rows;
int a; for (int i = 0; i < 1000000; i++)
}; {
rows.emplace_back(i);
struct State }
{
State() : agg_sum(0) { } clock_t start = clock();
int64_t agg_sum; State state = query(rows);
}; clock_t end = clock();
inline void loop(State& state, const Row& row) printf("Answer: %lld, Time (s): %gn",
{ state.agg_sum, (end-start) * 1.0 / CLOCKS_PER_SEC);
state.agg_sum += row.a + 1; }
}
inline State query(std::vector<Row>& rows)
{
State s;
for (Row& r : rows)
{
loop(s, r);
}
return s;
}
(c) Ankur Goyal
Comparison
$ python test.py
Answer: 500000500000, Time (s): 0.251049
$ time g++ test.cpp -o test-cpp -std=c++0x
real 0m0.176s
user 0m0.150s
sys 0m0.023s
$ ./test-cpp
Answer: 500000500000, Time (s): 0.006745
(c) Ankur Goyal
Comparison
$ python test.py
Answer: 500000500000, Time (s): 0.251049
$ time g++ test.cpp -o test-cpp -std=c++0x
real 0m0.176s
user 0m0.150s
sys 0m0.023s
$ ./test-cpp
Answer: 500000500000, Time (s): 0.006745
37x diļ¬€erence in execu+on
(c) Ankur Goyal
Comparison
$ python test.py
Answer: 500000500000, Time (s): 0.251049
$ time g++ test.cpp -o test-cpp -std=c++0x
real 0m0.176s
user 0m0.150s
sys 0m0.023s
$ ./test-cpp
Answer: 500000500000, Time (s): 0.006745
37x diļ¬€erence in execu+on
1.37x even with compila+on +me
(c) Ankur Goyal
Code Genera*on
ā€¢ Expression execu.on
(c) Ankur Goyal
Code Genera*on
ā€¢ Expression execu.on
ā€¢ Inline scans
(c) Ankur Goyal
Code Genera*on
ā€¢ Expression execu.on
ā€¢ Inline scans
ā€¢ Need a powerful plan cache
(c) Ankur Goyal
Code Genera*on
ā€¢ Expression execu.on
ā€¢ Inline scans
ā€¢ Need a powerful plan cache
ā€¢ OLTP vs. data explora.on
(c) Ankur Goyal
Plancache Example (1)
SELECT * FROM users WHERE id = 5
SELECT * FROM users WHERE id = 8
=>
SELECT * FROM users WHERE id = @
(c) Ankur Goyal
Plancache Example (2)
SELECT * FROM users WHERE id IN (1,2,3,4,5) OR a IN (3,5,7)
SELECT * FROM users WHERE id IN (20) OR a IN (1,2,3,4)
=>
SELECT * FROM users WHERE id IN (@) OR a IN (@)
(c) Ankur Goyal
Drill Down Example
SELECT SELECT SELECT
region, SUM(price) rep, SUM(price) rep, SUM(price)
FROM sales => FROM sales => FROM sales
GROUP BY region WHERE region="northeast" WHERE region=^
GROUP BY rep; GROUP BY rep;
SELECT SELECT
product, SUM(price) product, SUM(price)
=> FROM sales => FROM sales
WHERE region="northwest" WHERE region=^
GROUP BY product; GROUP BY product;
(c) Ankur Goyal
Drill Down Example
SELECT SELECT SELECT
region, SUM(price) rep, SUM(price) rep, SUM(price)
FROM sales => FROM sales => FROM sales
GROUP BY region WHERE region="northeast" WHERE region=^
GROUP BY rep; GROUP BY rep;
SELECT SELECT
product, SUM(price) product, SUM(price)
=> FROM sales => FROM sales
WHERE region="northwest" WHERE region=^
GROUP BY product; GROUP BY product;
No plancache match !
(c) Ankur Goyal
Let's look at some generated code
(c) Ankur Goyal
Expression Snippet
memsql> select concat("foo", "bar");
+----------------------+
| concat("foo", "bar") |
+----------------------+
| foobar |
+----------------------+
1 row in set (0.81 sec)
memsql> select concat("foo", "bar");
+----------------------+
| concat("foo", "bar") |
+----------------------+
| foobar |
+----------------------+
1 row in set (0.00 sec)
(c) Ankur Goyal
Old Code Genera,on
memsql> select concat("foo", "bar");
+----------------------+
| concat("foo", "bar") |
+----------------------+
| foobar |
+----------------------+
1 row in set (0.81 sec)
bool overflow = false;
VarCharTemp result1("foo", 3, threadId);
VarCharTemp result2("bar", 3, threadId);
opt<TemporaryImmutableString> result3;
op_Concat(result3, result1, result2, overflow, threadId);
(c) Ankur Goyal
Code Genera*on is Hard
ā€¢ Old compilers adage: Pick 2 of 3
(c) Ankur Goyal
Code Genera*on is Hard
ā€¢ Old compilers adage: Pick 2 of 3
ā€¢ Fast execu:on :me
ā€¢ Fast compile :me
ā€¢ Fast development :me
(c) Ankur Goyal
Code Genera*on is Hard
ā€¢ Old compilers adage: Pick 2 of 3
ā€¢ Fast execu:on :me
ā€¢ Fast compile :me
ā€¢ Fast development :me
ā€¢ E.g. Assembly, C++, Python
(c) Ankur Goyal
Code Genera*on is Hard
ā€¢ Old compilers adage: Pick 2 of 3
ā€¢ Fast execu:on :me
ā€¢ Fast compile :me
ā€¢ Fast development :me
ā€¢ E.g. Assembly, C++, Python
ā€¢ JIT compilers turned this on its head
(c) Ankur Goyal
MemSQL Compiler Pipeline
(c) Ankur Goyal
Expression Snippet (MPL)
memsql> select concat("foo", "bar");
+----------------------+
| concat("foo", "bar") |
+----------------------+
| foobar |
+----------------------+
1 row in set (0.81 sec)
declare outRow3 <- OutRowInit()
OutRowString(&outRow3,
&Concat(UpdateCollation(OptString("foo"),2),
UpdateCollation(OptString("bar"),2)))
OutRowSend(&outRow3)
(c) Ankur Goyal
MBC Snippet
OutRowString(&outRow3,
&Concat(UpdateCollation(OptString("foo"),2),
UpdateCollation(OptString("bar"),2)))
0x0048 OutRowInit local=&outRow
0x0050 InitString local=&local_2 data=0 i64=3 coll=unspecified
0x0068 UpdateCollation local=&local_2 coll=utf8_general_ci
0x0074 InitString local=&local_3 data=1 i64=3 coll=unspecified
0x008c UpdateCollation local=&local_3 coll=utf8_general_ci
0x0098 Concat local=&local local=&local_2 local=&local_3
0x00a8 OutRowString local=&outRow local=&local target=0x01ac
0x00b8 OptStringFree local=&local
0x00c0 OptStringFree local=&local_3
0x00c8 OptStringFree local=&local_2
0x00d0 InitString local=&local_5 data=2 i64=3 coll=unspecified
0x00e8 UpdateCollation local=&local_5 coll=utf8_general_ci
0x00f4 InitString local=&local_6 data=3 i64=3 coll=unspecified
0x010c UpdateCollation local=&local_6 coll=utf8_general_ci
0x0118 Concat local=&local_4 local=&local_5 local=&local_6
0x0128 OutRowString local=&outRow local=&local_4 target=0x018c
0x0138 OptStringFree local=&local_4
0x0140 OptStringFree local=&local_6
0x0148 OptStringFree local=&local_5
(c) Ankur Goyal
MBC Snippet
0x0048 OutRowInit local=&outRow
0x0050 InitString local=&local_2 data=0 i64=3 coll=unspecified
0x0068 UpdateCollation local=&local_2 coll=utf8_general_ci
0x0074 InitString local=&local_3 data=1 i64=3 coll=unspecified
0x008c UpdateCollation local=&local_3 coll=utf8_general_ci
0x0098 Concat local=&local local=&local_2 local=&local_3
0x00a8 OutRowString local=&outRow local=&local target=0x01ac
0x00b8 OptStringFree local=&local
0x00c0 OptStringFree local=&local_3
0x00c8 OptStringFree local=&local_2
0x00d0 InitString local=&local_5 data=2 i64=3 coll=unspecified
0x00e8 UpdateCollation local=&local_5 coll=utf8_general_ci
0x00f4 InitString local=&local_6 data=3 i64=3 coll=unspecified
(c) Ankur Goyal
Distributed Query Execu0on
(c) Ankur Goyal
(c) Ankur Goyal
First, some terminology
(c) Ankur Goyal
(c) Ankur Goyal
(c) Ankur Goyal
(c) Ankur Goyal
Much easier to reason in
terms of shipping SQL
(c) Ankur Goyal
(c) Ankur Goyal
(c) Ankur Goyal
SELECTĀ supp_nation,
Ā Ā Ā Ā Ā Ā Ā cust_nation,
Ā Ā Ā Ā Ā Ā Ā l_year,
Ā Ā Ā Ā Ā Ā Ā Sum(volume)Ā ASĀ revenue
FROMĀ Ā Ā (SELECTĀ n1.n_nameĀ ASĀ supp_nation,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā n2.n_nameĀ ASĀ cust_nation,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Extract(yearĀ FROMĀ l_shipdate)Ā ASĀ l_year,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā l_extendedpriceĀ *Ā (Ā 1Ā -
l_discountĀ )Ā ASĀ volume
Ā Ā Ā Ā Ā Ā Ā Ā FROMĀ Ā Ā supplier,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā lineitem,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā orders,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā customer,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā nationĀ n1,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā nationĀ n2,
Ā Ā Ā Ā Ā Ā Ā Ā WHEREĀ Ā s_suppkeyĀ =Ā l_suppkey
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ o_orderkeyĀ =Ā l_orderkey
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ c_custkeyĀ =Ā o_custkey
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ s_nationkeyĀ =Ā n1.n_nationkey
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ c_nationkeyĀ =Ā n2.n_nationkey
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ (Ā (Ā n1.n_nameĀ =Ā 'CANADA'
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ n2.n_nameĀ =Ā 'UNITEDĀ STATES'Ā )
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ORĀ (Ā n1.n_nameĀ =Ā 'RUSSIA'
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ n2.n_nameĀ =Ā 
'UNITEDĀ STATES'Ā )Ā )
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā ANDĀ l_shipdateĀ BETWEENĀ 
Date('1995-01-01')Ā ANDĀ 
Date('1996-12-31'))
Ā Ā Ā Ā Ā Ā Ā AS shipping
GROUPĀ Ā BYĀ supp_nation,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā cust_nation,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā l_year
ORDERĀ Ā BYĀ supp_nation,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā cust_nation,
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā l_year;Ā 
(c) Ankur Goyal
Abstrac(ons
ā€¢ Distributed Query Plan created on aggregator
(c) Ankur Goyal
Abstrac(ons
ā€¢ Distributed Query Plan created on aggregator
ā€¢ Layers of primi9ve opera9ons glued together
(c) Ankur Goyal
Abstrac(ons
ā€¢ Distributed Query Plan created on aggregator
ā€¢ Layers of primi9ve opera9ons glued together
ā€¢ Full SQL on leaves
ā€¢ REMOTE tables
ā€¢ RESULT tables
(c) Ankur Goyal
Primi%ves (SQL)
ā€¢ Queries over physical indexes
(c) Ankur Goyal
Primi%ves (SQL)
ā€¢ Queries over physical indexes
ā€¢ Hook into global transac9onal state
(c) Ankur Goyal
Primi%ves (SQL)
ā€¢ Queries over physical indexes
ā€¢ Hook into global transac9onal state
ā€¢ Full SQL on a single par99on
(c) Ankur Goyal
Primi%ves (SQL)
ā€¢ Queries over physical indexes
ā€¢ Hook into global transac9onal state
ā€¢ Full SQL on a single par99on
ā€¢ Access to rowstores and columnstores
(c) Ankur Goyal
Primi%ves (SQL)
Example query the aggregator can send to the leaf:
SELECT
t.a, t.b, SUM(t.price)
FROM
t -- This will scan a physical table on the leaf
WHERE
t.c = 1000 -- This will use a local index
GROUP BY
t.a, t.b -- This will produce 1 row per group
(c) Ankur Goyal
Primi%ves (Remote Tables)
ā€¢ Address data across leaves
(c) Ankur Goyal
Primi%ves (Remote Tables)
ā€¢ Address data across leaves
ā€¢ SQL interface + custom shard key
(c) Ankur Goyal
Primi%ves (Remote Tables)
ā€¢ Address data across leaves
ā€¢ SQL interface + custom shard key
ā€¢ Parallel execu<on primi<ves
ā€¢ Reshuļ¬„ing
ā€¢ Merging on group keys
ā€¢ Merging data from joins (e.g. leE joins)
(c) Ankur Goyal
Primi%ves (Remote Tables)
SELECT
t.a, SUM(s_net.c)
FROM
-- The row in s where s_net.b = t.a may not
-- be on the same node as the local t. REMOTE(s)
-- addresses the table across the cluster.
t, REMOTE(s) AS s_net
WHERE
t.a = s_net.b
GROUP BY
t.a
(c) Ankur Goyal
Primi%ves (Remote Tables)
SELECT
t.a, SUM(s_net.c)
FROM
-- This is a reshuffle operation. It relies on t
-- being sharded on (t.a) and type(t.a) == type(s.b).
-- It will only pull rows in s.b that match the
-- shard key's local values of (t.a).
t, REMOTE(s) WITH (shard_key=(s.b)) AS s_net
WHERE
t.a = s_net.b
GROUP BY
t.a
(c) Ankur Goyal
Primi%ves (Result Tables)
ā€¢ Shared, cached results of SQL queries
(c) Ankur Goyal
Primi%ves (Result Tables)
ā€¢ Shared, cached results of SQL queries
ā€¢ Shares scans/computa9ons across readers
(c) Ankur Goyal
Primi%ves (Result Tables)
ā€¢ Shared, cached results of SQL queries
ā€¢ Shares scans/computa9ons across readers
ā€¢ Supports streaming seman9cs
(c) Ankur Goyal
Primi%ves (Result Tables)
ā€¢ Shared, cached results of SQL queries
ā€¢ Shares scans/computa9ons across readers
ā€¢ Supports streaming seman9cs
ā€¢ Technically an op9miza9on
(c) Ankur Goyal
Primi%ves (Result Tables)
ā€¢ Shared, cached results of SQL queries
ā€¢ Shares scans/computa9ons across readers
ā€¢ Supports streaming seman9cs
ā€¢ Technically an op9miza9on
ā€¢ Similar to an RDD in Spark
(c) Ankur Goyal
Primi%ves (Result Tables)
CREATE RESULT TABLE
t_reshuffled AS
SELECT
t.a, t.b, SUM(t.price)
FROM
t
GROUP BY
t.a, t.b
SHARD BY
t.a, t.b
(c) Ankur Goyal
Op#miza#ons
ā€¢ Single-machine op0miza0ons
(c) Ankur Goyal
Op#miza#ons
ā€¢ Single-machine op0miza0ons
ā€¢ Index selec0on, Sor0ng/Grouping
(c) Ankur Goyal
Op#miza#ons
ā€¢ Single-machine op0miza0ons
ā€¢ Index selec0on, Sor0ng/Grouping
ā€¢ SQL -> SQL rewrites
(c) Ankur Goyal
Op#miza#ons
ā€¢ Single-machine op0miza0ons
ā€¢ Index selec0on, Sor0ng/Grouping
ā€¢ SQL -> SQL rewrites
ā€¢ Cost-based distributed op0mizer
(c) Ankur Goyal
Op#miza#ons
ā€¢ Single-machine op0miza0ons
ā€¢ Index selec0on, Sor0ng/Grouping
ā€¢ SQL -> SQL rewrites
ā€¢ Cost-based distributed op0mizer
ā€¢ Broadcast vs. Reshuļ¬„ing
(c) Ankur Goyal
Op#miza#ons
ā€¢ Single-machine op0miza0ons
ā€¢ Index selec0on, Sor0ng/Grouping
ā€¢ SQL -> SQL rewrites
ā€¢ Cost-based distributed op0mizer
ā€¢ Broadcast vs. Reshuļ¬„ing
ā€¢ and many, many more
(c) Ankur Goyal
MemSQL in the Wild
(c) Ankur Goyal
Horizontals and Ver/cals
ā€¢ Real-'me data processing is everywhere
(c) Ankur Goyal
Horizontals and Ver/cals
ā€¢ Real-'me data processing is everywhere
ā€¢ Top use-cases:
Real-Time Analy'cs and Large-Scale Applica'ons
(c) Ankur Goyal
Horizontals and Ver/cals
ā€¢ Real-'me data processing is everywhere
ā€¢ Top use-cases:
Real-Time Analy'cs and Large-Scale Applica'ons
ā€¢ Top ver'cals:
Financial Services, Webscale, Telco, Federal, Media
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ High volumes of data, processed in real-8me
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ High volumes of data, processed in real-8me
ā€¢ Fast updates in the rowstore
ā€¢ INSERT ... ON DUPLICATE KEY UPDATE
ā€¢ E.g. 2M update transac8ons/sec on 10 nodes
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ High volumes of data, processed in real-8me
ā€¢ Fast updates in the rowstore
ā€¢ INSERT ... ON DUPLICATE KEY UPDATE
ā€¢ E.g. 2M update transac8ons/sec on 10 nodes
ā€¢ Fast appends, even one row at a 8me, in the columnstore
ā€¢ E.g. 1 GB/s on 16 EC2 nodes
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ Converging with mainline analy2cs
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ Converging with mainline analy2cs
ā€¢ No compromises, e.g. limited SQL, limited windows
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ Converging with mainline analy2cs
ā€¢ No compromises, e.g. limited SQL, limited windows
ā€¢ Real-2me means fast reads as well
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ Converging with mainline analy2cs
ā€¢ No compromises, e.g. limited SQL, limited windows
ā€¢ Real-2me means fast reads as well
ā€¢ Subsecond queries for dashboards
(c) Ankur Goyal
Real-&me Analy&cs
ā€¢ Converging with mainline analy2cs
ā€¢ No compromises, e.g. limited SQL, limited windows
ā€¢ Real-2me means fast reads as well
ā€¢ Subsecond queries for dashboards
ā€¢ Millisecond queries for applica2ons
(c) Ankur Goyal
Large-Scale Applica.ons
ā€¢ Large-scale opera.onal analy.cs and applica.ons
(c) Ankur Goyal
Large-Scale Applica.ons
ā€¢ Large-scale opera.onal analy.cs and applica.ons
ā€¢ Hundreds of nodes for perf and HA
(c) Ankur Goyal
Large-Scale Applica.ons
ā€¢ Large-scale opera.onal analy.cs and applica.ons
ā€¢ Hundreds of nodes for perf and HA
ā€¢ True "produc.on" workloads
(c) Ankur Goyal
Large-Scale Applica.ons
ā€¢ Large-scale opera.onal analy.cs and applica.ons
ā€¢ Hundreds of nodes for perf and HA
ā€¢ True "produc.on" workloads
ā€¢ Exis.ng OLTP databases lack scalability and SQL perf
(c) Ankur Goyal
Large-Scale Applica.ons
ā€¢ Large-scale opera.onal analy.cs and applica.ons
ā€¢ Hundreds of nodes for perf and HA
ā€¢ True "produc.on" workloads
ā€¢ Exis.ng OLTP databases lack scalability and SQL perf
ā€¢ Exis.ng OLAP databases lack opera.onal features
(c) Ankur Goyal
Logos
(c) Ankur Goyal
Take-Aways
ā€¢ In-memory Database != All-memory Database
(c) Ankur Goyal
Take-Aways
ā€¢ In-memory Database != All-memory Database
ā€¢ In-memory Databases are databases built to modern tradeoļ¬€s
(c) Ankur Goyal
Take-Aways
ā€¢ In-memory Database != All-memory Database
ā€¢ In-memory Databases are databases built to modern tradeoļ¬€s
ā€¢ Old problems with new solu<ons
(c) Ankur Goyal
Take-Aways
ā€¢ In-memory Database != All-memory Database
ā€¢ In-memory Databases are databases built to modern tradeoļ¬€s
ā€¢ Old problems with new solu<ons
ā€¢ Real-<me analy<cs and Large-scale applica<ons == New projects
(c) Ankur Goyal
Take-Aways
ā€¢ In-memory Database != All-memory Database
ā€¢ In-memory Databases are databases built to modern tradeoļ¬€s
ā€¢ Old problems with new solu<ons
ā€¢ Real-<me analy<cs and Large-scale applica<ons == New projects
ā€¢ We are hiring and ā¤ Waterloo.
ā€¢ Come visit us in SF: email ankur@memsql.com
(c) Ankur Goyal
Ques%ons
(c) Ankur Goyal

More Related Content

Viewers also liked

Viewers also liked (15)

See who is using MemSQL
See who is using MemSQLSee who is using MemSQL
See who is using MemSQL
Ā 
Change Data Capture using Kafka
Change Data Capture using KafkaChange Data Capture using Kafka
Change Data Capture using Kafka
Ā 
Getting It Right Exactly Once: Principles for Streaming Architectures
Getting It Right Exactly Once: Principles for Streaming ArchitecturesGetting It Right Exactly Once: Principles for Streaming Architectures
Getting It Right Exactly Once: Principles for Streaming Architectures
Ā 
MemSQL
MemSQLMemSQL
MemSQL
Ā 
Real-Time Analytics with MemSQL and Spark
Real-Time Analytics with MemSQL and SparkReal-Time Analytics with MemSQL and Spark
Real-Time Analytics with MemSQL and Spark
Ā 
In-Memory Database Performance on AWS M4 Instances
In-Memory Database Performance on AWS M4 InstancesIn-Memory Database Performance on AWS M4 Instances
In-Memory Database Performance on AWS M4 Instances
Ā 
Case study: Camunda BPM in PwC project
Case study: Camunda BPM in PwC projectCase study: Camunda BPM in PwC project
Case study: Camunda BPM in PwC project
Ā 
CTO View: Driving the On-Demand Economy with Predictive Analytics
CTO View: Driving the On-Demand Economy with Predictive AnalyticsCTO View: Driving the On-Demand Economy with Predictive Analytics
CTO View: Driving the On-Demand Economy with Predictive Analytics
Ā 
Real-Time Analytics with Confluent and MemSQL
Real-Time Analytics with Confluent and MemSQLReal-Time Analytics with Confluent and MemSQL
Real-Time Analytics with Confluent and MemSQL
Ā 
The Fast Path to Building Operational Applications with Spark
The Fast Path to Building Operational Applications with SparkThe Fast Path to Building Operational Applications with Spark
The Fast Path to Building Operational Applications with Spark
Ā 
Real-Time Supply Chain Analytics with Machine Learning, Kafka, and Spark
Real-Time Supply Chain Analytics with Machine Learning, Kafka, and SparkReal-Time Supply Chain Analytics with Machine Learning, Kafka, and Spark
Real-Time Supply Chain Analytics with Machine Learning, Kafka, and Spark
Ā 
Enabling Real-Time Analytics for IoT
Enabling Real-Time Analytics for IoTEnabling Real-Time Analytics for IoT
Enabling Real-Time Analytics for IoT
Ā 
TPC-H Column Store and MPP systems
TPC-H Column Store and MPP systemsTPC-H Column Store and MPP systems
TPC-H Column Store and MPP systems
Ā 
TensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache SparkTensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache Spark
Ā 
Memory Interoperability in Analytics and Machine Learning
Memory Interoperability in Analytics and Machine LearningMemory Interoperability in Analytics and Machine Learning
Memory Interoperability in Analytics and Machine Learning
Ā 

Similar to MemSQL DB Class, Ankur Goyal

IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
In-Memory Computing Summit
Ā 
London devops logging
London devops loggingLondon devops logging
London devops logging
Tomas Doran
Ā 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
Enkitec
Ā 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
Enkitec
Ā 
Colvin exadata mistakes_ioug_2014
Colvin exadata mistakes_ioug_2014Colvin exadata mistakes_ioug_2014
Colvin exadata mistakes_ioug_2014
marvin herrera
Ā 
stackArmor presentation for DevOpsDC ver 4
stackArmor presentation for DevOpsDC ver 4stackArmor presentation for DevOpsDC ver 4
stackArmor presentation for DevOpsDC ver 4
Gaurav "GP" Pal
Ā 

Similar to MemSQL DB Class, Ankur Goyal (20)

IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
Ā 
Disks and Stable Storage.ppt
Disks and Stable Storage.pptDisks and Stable Storage.ppt
Disks and Stable Storage.ppt
Ā 
Caching Strategies for an Erlang Based Web Stack
Caching Strategies for an Erlang Based Web StackCaching Strategies for an Erlang Based Web Stack
Caching Strategies for an Erlang Based Web Stack
Ā 
Cassandra serving netflix @ scale
Cassandra serving netflix @ scaleCassandra serving netflix @ scale
Cassandra serving netflix @ scale
Ā 
London devops logging
London devops loggingLondon devops logging
London devops logging
Ā 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
Ā 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
Ā 
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Ā 
The Impala Cookbook
The Impala CookbookThe Impala Cookbook
The Impala Cookbook
Ā 
Colvin exadata mistakes_ioug_2014
Colvin exadata mistakes_ioug_2014Colvin exadata mistakes_ioug_2014
Colvin exadata mistakes_ioug_2014
Ā 
EuroSec2012 "Effects of Memory Randomization, Sanitization and Page Cache on ...
EuroSec2012 "Effects of Memory Randomization, Sanitization and Page Cache on ...EuroSec2012 "Effects of Memory Randomization, Sanitization and Page Cache on ...
EuroSec2012 "Effects of Memory Randomization, Sanitization and Page Cache on ...
Ā 
Oracle real application_cluster
Oracle real application_clusterOracle real application_cluster
Oracle real application_cluster
Ā 
Responding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in JavaResponding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in Java
Ā 
ScyllaDB: NoSQL at Ludicrous Speed
ScyllaDB: NoSQL at Ludicrous SpeedScyllaDB: NoSQL at Ludicrous Speed
ScyllaDB: NoSQL at Ludicrous Speed
Ā 
DevOps for ETL processing at scale with MongoDB, Solr, AWS and Chef
DevOps for ETL processing at scale with MongoDB, Solr, AWS and ChefDevOps for ETL processing at scale with MongoDB, Solr, AWS and Chef
DevOps for ETL processing at scale with MongoDB, Solr, AWS and Chef
Ā 
stackArmor presentation for DevOpsDC ver 4
stackArmor presentation for DevOpsDC ver 4stackArmor presentation for DevOpsDC ver 4
stackArmor presentation for DevOpsDC ver 4
Ā 
Cassandra Day Atlanta 2015: Recording the Web: High-Fidelity Storage and Play...
Cassandra Day Atlanta 2015: Recording the Web: High-Fidelity Storage and Play...Cassandra Day Atlanta 2015: Recording the Web: High-Fidelity Storage and Play...
Cassandra Day Atlanta 2015: Recording the Web: High-Fidelity Storage and Play...
Ā 
Leveraging MongoDB: An Introductory Case Study
Leveraging MongoDB: An Introductory Case StudyLeveraging MongoDB: An Introductory Case Study
Leveraging MongoDB: An Introductory Case Study
Ā 
VĆ½hody a benefity nasazenĆ­ Oracle Database Appliance
VĆ½hody a benefity nasazenĆ­ Oracle Database ApplianceVĆ½hody a benefity nasazenĆ­ Oracle Database Appliance
VĆ½hody a benefity nasazenĆ­ Oracle Database Appliance
Ā 
Oracle DB
Oracle DBOracle DB
Oracle DB
Ā 

More from SingleStore

More from SingleStore (20)

Five ways database modernization simplifies your data life
Five ways database modernization simplifies your data lifeFive ways database modernization simplifies your data life
Five ways database modernization simplifies your data life
Ā 
How Kafka and Modern Databases Benefit Apps and Analytics
How Kafka and Modern Databases Benefit Apps and AnalyticsHow Kafka and Modern Databases Benefit Apps and Analytics
How Kafka and Modern Databases Benefit Apps and Analytics
Ā 
Architecting Data in the AWS Ecosystem
Architecting Data in the AWS EcosystemArchitecting Data in the AWS Ecosystem
Architecting Data in the AWS Ecosystem
Ā 
Building the Foundation for a Latency-Free Life
Building the Foundation for a Latency-Free LifeBuilding the Foundation for a Latency-Free Life
Building the Foundation for a Latency-Free Life
Ā 
Converging Database Transactions and Analytics
Converging Database Transactions and Analytics Converging Database Transactions and Analytics
Converging Database Transactions and Analytics
Ā 
Building a Machine Learning Recommendation Engine in SQL
Building a Machine Learning Recommendation Engine in SQLBuilding a Machine Learning Recommendation Engine in SQL
Building a Machine Learning Recommendation Engine in SQL
Ā 
MemSQL 201: Advanced Tips and Tricks Webcast
MemSQL 201: Advanced Tips and Tricks WebcastMemSQL 201: Advanced Tips and Tricks Webcast
MemSQL 201: Advanced Tips and Tricks Webcast
Ā 
Introduction to MemSQL
Introduction to MemSQLIntroduction to MemSQL
Introduction to MemSQL
Ā 
An Engineering Approach to Database Evaluations
An Engineering Approach to Database EvaluationsAn Engineering Approach to Database Evaluations
An Engineering Approach to Database Evaluations
Ā 
Building a Fault Tolerant Distributed Architecture
Building a Fault Tolerant Distributed ArchitectureBuilding a Fault Tolerant Distributed Architecture
Building a Fault Tolerant Distributed Architecture
Ā 
Stream Processing with Pipelines and Stored Procedures
Stream Processing with Pipelines  and Stored ProceduresStream Processing with Pipelines  and Stored Procedures
Stream Processing with Pipelines and Stored Procedures
Ā 
Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017
Ā 
Image Recognition on Streaming Data
Image Recognition  on Streaming DataImage Recognition  on Streaming Data
Image Recognition on Streaming Data
Ā 
Spark Summit Dublin 2017 - MemSQL - Real-Time Image Recognition
Spark Summit Dublin 2017 - MemSQL - Real-Time Image RecognitionSpark Summit Dublin 2017 - MemSQL - Real-Time Image Recognition
Spark Summit Dublin 2017 - MemSQL - Real-Time Image Recognition
Ā 
The State of the Data Warehouse in 2017 and Beyond
The State of the Data Warehouse in 2017 and BeyondThe State of the Data Warehouse in 2017 and Beyond
The State of the Data Warehouse in 2017 and Beyond
Ā 
How Database Convergence Impacts the Coming Decades of Data Management
How Database Convergence Impacts the Coming Decades of Data ManagementHow Database Convergence Impacts the Coming Decades of Data Management
How Database Convergence Impacts the Coming Decades of Data Management
Ā 
Teaching Databases to Learn in the World of AI
Teaching Databases to Learn in the World of AITeaching Databases to Learn in the World of AI
Teaching Databases to Learn in the World of AI
Ā 
Gartner Catalyst 2017: The Data Warehouse Blueprint for ML, AI, and Hybrid Cloud
Gartner Catalyst 2017: The Data Warehouse Blueprint for ML, AI, and Hybrid CloudGartner Catalyst 2017: The Data Warehouse Blueprint for ML, AI, and Hybrid Cloud
Gartner Catalyst 2017: The Data Warehouse Blueprint for ML, AI, and Hybrid Cloud
Ā 
Gartner Catalyst 2017: Image Recognition on Streaming Data
Gartner Catalyst 2017: Image Recognition on Streaming DataGartner Catalyst 2017: Image Recognition on Streaming Data
Gartner Catalyst 2017: Image Recognition on Streaming Data
Ā 
Spark Summit West 2017: Real-Time Image Recognition with MemSQL and Spark
Spark Summit West 2017: Real-Time Image Recognition with MemSQL and SparkSpark Summit West 2017: Real-Time Image Recognition with MemSQL and Spark
Spark Summit West 2017: Real-Time Image Recognition with MemSQL and Spark
Ā 

Recently uploaded

Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
Ā 
Gartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptxGartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptx
chadhar227
Ā 
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
kumargunjan9515
Ā 
Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...
nirzagarg
Ā 
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
gajnagarg
Ā 
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
nirzagarg
Ā 
Top Call Girls in Balaghat 9332606886Call Girls Advance Cash On Delivery Ser...
Top Call Girls in Balaghat  9332606886Call Girls Advance Cash On Delivery Ser...Top Call Girls in Balaghat  9332606886Call Girls Advance Cash On Delivery Ser...
Top Call Girls in Balaghat 9332606886Call Girls Advance Cash On Delivery Ser...
kumargunjan9515
Ā 
Abortion pills in Jeddah | +966572737505 | Get Cytotec
Abortion pills in Jeddah | +966572737505 | Get CytotecAbortion pills in Jeddah | +966572737505 | Get Cytotec
Abortion pills in Jeddah | +966572737505 | Get Cytotec
Abortion pills in Riyadh +966572737505 get cytotec
Ā 
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
HyderabadDolls
Ā 
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
nirzagarg
Ā 
Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...
gajnagarg
Ā 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
gajnagarg
Ā 
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Klinik kandungan
Ā 
Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...
nirzagarg
Ā 

Recently uploaded (20)

Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Ā 
Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...
Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...
Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...
Ā 
Gartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptxGartner's Data Analytics Maturity Model.pptx
Gartner's Data Analytics Maturity Model.pptx
Ā 
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptxRESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
Ā 
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
Ā 
Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Begusarai [ 7014168258 ] Call Me For Genuine Models...
Ā 
Aspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - AlmoraAspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - Almora
Ā 
Case Study 4 Where the cry of rebellion happen?
Case Study 4 Where the cry of rebellion happen?Case Study 4 Where the cry of rebellion happen?
Case Study 4 Where the cry of rebellion happen?
Ā 
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Ā 
Vadodara šŸ’‹ Call Girl 7737669865 Call Girls in Vadodara Escort service book now
Vadodara šŸ’‹ Call Girl 7737669865 Call Girls in Vadodara Escort service book nowVadodara šŸ’‹ Call Girl 7737669865 Call Girls in Vadodara Escort service book now
Vadodara šŸ’‹ Call Girl 7737669865 Call Girls in Vadodara Escort service book now
Ā 
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Ā 
Top Call Girls in Balaghat 9332606886Call Girls Advance Cash On Delivery Ser...
Top Call Girls in Balaghat  9332606886Call Girls Advance Cash On Delivery Ser...Top Call Girls in Balaghat  9332606886Call Girls Advance Cash On Delivery Ser...
Top Call Girls in Balaghat 9332606886Call Girls Advance Cash On Delivery Ser...
Ā 
Abortion pills in Jeddah | +966572737505 | Get Cytotec
Abortion pills in Jeddah | +966572737505 | Get CytotecAbortion pills in Jeddah | +966572737505 | Get Cytotec
Abortion pills in Jeddah | +966572737505 | Get Cytotec
Ā 
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Ā 
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Ā 
TrafficWave Generator Will Instantly drive targeted and engaging traffic back...
TrafficWave Generator Will Instantly drive targeted and engaging traffic back...TrafficWave Generator Will Instantly drive targeted and engaging traffic back...
TrafficWave Generator Will Instantly drive targeted and engaging traffic back...
Ā 
Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Nandurbar [ 7014168258 ] Call Me For Genuine Models...
Ā 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Ā 
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Ā 
Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Rohtak [ 7014168258 ] Call Me For Genuine Models We...
Ā 

MemSQL DB Class, Ankur Goyal