Molham Aref
LogicBloX
Platform and Language: a Tutorial
Todd ¡J. ¡Green ¡
Molham ¡Aref ¡ ¡ ¡Shan ¡Shan ¡Huang ¡ Grigoris ¡Karvounarakis ¡ ¡Todd ¡Veldhuizen ¡
Datalog ¡2.0 ¡Vienna ¡ September ¡12, ¡2012 ¡
LogicBloX P lat f o r m and L anguage : a T uto r ial Todd J. - - PowerPoint PPT Presentation
LogicBloX P lat f o r m and L anguage : a T uto r ial Todd J. Green Molham Aref Shan Shan Huang Grigoris Karvounarakis Todd Veldhuizen Datalog 2.0 Vienna September
Molham Aref
Platform and Language: a Tutorial
Todd ¡J. ¡Green ¡
Molham ¡Aref ¡ ¡ ¡Shan ¡Shan ¡Huang ¡ Grigoris ¡Karvounarakis ¡ ¡Todd ¡Veldhuizen ¡
Datalog ¡2.0 ¡Vienna ¡ September ¡12, ¡2012 ¡
en•ter•prise soft•ware
\ˈen-tə(r)-ˌprīz ˈsȯft-ˌwer\
¡
– AccounHng, ¡sales, ¡supply-‑chain, ¡customer-‑relaHonship ¡ management, ¡etc... ¡
– $244B ¡(’10) ¡-‑> ¡$267B ¡(’11) ¡-‑> ¡$288B ¡(’12) ¡
– Most ¡enterprise ¡decisions ¡sHll ¡made ¡with ¡Excel ¡
3Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡
4Bookkeeping ¡ BI ¡ Planning ¡ App ¡ View ¡ Data ¡
BI ¡ App ¡ Bookkeeping ¡ Planning ¡ View ¡ Data ¡
Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡
5BI ¡ App ¡ BI ¡App ¡ Server ¡ Bookkeeping ¡ Planning ¡ View ¡ Data ¡ OLTP ¡ ¡ Database ¡ Applica.on ¡ Server ¡ User ¡ ¡ Interface ¡ OLAP ¡ Database ¡ User ¡ ¡ Interface ¡ Planning ¡ Database ¡ User ¡ ¡ Interface ¡
Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡
6BI ¡ App ¡ BI ¡App ¡ Server ¡ Bookkeeping ¡ Planning ¡ View ¡ Data ¡ OLTP ¡ ¡ Database ¡ Applica.on ¡ Server ¡ User ¡ ¡ Interface ¡ OLAP ¡ Database ¡ User ¡ ¡ Interface ¡ Planning ¡ Database ¡ User ¡ ¡ Interface ¡
Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡
7ETL ETL
IT ¡Landscape ¡– ¡Supply ¡Chain ¡(2% ¡of ¡footprint) ¡
<Current> Retek RMS (v9) <Current> I01 - Receiving <Current> I03 - RTV <Current> I02 - Transfer <Current> I04 – Home Delivery <Current> I05 – Inventory <Current> Allocator <Current> Anti-Dealer <Current> Cambell- Staffworks <Current> Cambell Time & Attendance <Current> Dynamic Backstock- tool <Current> E3 <Current> Ladder <Current> I06 WMS <Current> I09 – Cycle Counts <Current> I10 – Cycle Physical Inventory <Current> I13 – Auto Replenishment <Current> I35 – Early Warning System <Current> Star-In-Home <Current> Star Repair Transfer Shipment Manifest Inventory Adjustment PO Receipts Transfer Receipts Cycle Counts Transfer ASN Inventory Availability Inventory Adjustment Optimized Delivery Route Inventory Adjustments Transfer RTV Request Transfer RTV Errors Transfer Receipts PO Receipts <Current> AAS Transfer Receipts Shipment Manifest Cycle Counts Transfer ASN PO Receipts Transfer <Current> I07 – Purchase Orders Inventory Adjustments Inventory Adjustments Purchase Orders RMS <Current> <Current> I01 - Scheduling PO Dates Purchase Orders Receipt Schedule Receipt Schedule PO Receipts Allocations Store Transfers Purchase Orders Yantra OMS <Target> D W <Current> VPM Purchase Orders PO Receipts Shipment Manifest Inventory Adjustment Transfers Location & SKU Location & SKU RTV Transfers Store to DC Inventory On-Hand Inventory Purchase Orders Forecast Active SKUs Active Assortment Vendors Purchase Orders PO Acknowledgement <Current> Customer Order Mgmt (CO server) Transfer Customer Order Forecast <Current> Dataflex PO and PO Receipts <Current> Mainframe Inventory Inventory ASN <Target> EXETER <Target> i2 TMS <Target> Texlon Delivery Schedule Intl Shipment Status ASN Receipts Schedules ASN’s Receipts PO’s Analytics <Target> RSS <Target> Rapistan Shipment Scan Information <Target> VST <Target> RIMMS <Current> Bridgepoint <Current> Auto Destination <Current> Electronic Subscription Capture Fulfill Demand Current Information Exchange Genco Portal <Current> i2 SCEM <Current> DDS Franklin(Not ¡that ¡we ¡advocate ¡overthrowing ¡capitalist ¡states ¡and ¡ replacing ¡them ¡with ¡Stalinist ¡regimes, ¡but…) ¡
9“If ¡you ¡tremble ¡with ¡indignaHon ¡at ¡ every ¡injusHce, ¡then ¡you ¡are ¡a ¡ comrade ¡of ¡mine.” ¡ Che ¡Guevara ¡
The ¡LogicBlox ¡Vision ¡
– Unify ¡the ¡programming ¡model ¡and ¡ ¡ – Unify ¡the ¡execuHon ¡environment ¡ – Simplify ¡aggressively ¡
Bookkeeping ¡ BI ¡ Planning ¡ App ¡ View ¡ Data ¡ OLTP ¡ ¡ Database ¡ ApplicaHon ¡ Server ¡ User ¡ ¡ Interface ¡ OLAP ¡ Database ¡ BI ¡App ¡ Server ¡ User ¡ ¡ Interface ¡
The ¡LogicBlox ¡Vision ¡
11Planning ¡ Database ¡ Planning ¡App ¡ Server ¡ User ¡ ¡ Interface ¡
Bookkeeping ¡ BI ¡ Planning ¡ App ¡ View ¡ Data ¡ OLAP ¡ Database ¡ BI ¡App ¡ Server ¡ User ¡ ¡ Interface ¡
The ¡LogicBlox ¡Vision ¡
12Planning ¡ Database ¡ Planning ¡App ¡ Server ¡ User ¡ ¡ Interface ¡ LogicBlox ¡ language ¡ ¡ runHme ¡
Bookkeeping ¡ BI ¡ Planning ¡ App ¡ View ¡ Data ¡
The ¡LogicBlox ¡Vision ¡
13Planning ¡ Database ¡ Planning ¡App ¡ Server ¡ User ¡ ¡ Interface ¡ LogicBlox ¡ language ¡ ¡ runHme ¡ LogicBlox ¡ language ¡ ¡ runHme ¡
Bookkeeping ¡ BI ¡ Planning ¡ App ¡ View ¡ Data ¡
The ¡LogicBlox ¡Vision ¡
14LogicBlox ¡ language ¡ ¡ runHme ¡ LogicBlox ¡ language ¡ ¡ runHme ¡ LogicBlox ¡ language ¡ ¡ runHme ¡
BI ¡ View ¡ App ¡ Data ¡ Bookkeeping ¡ Planning ¡
The ¡LogicBlox ¡Vision ¡
15LogicBlox ¡ language ¡ ¡ runHme ¡ Rendering ¡
are you
(naive? delusional?)
Some ¡Clients ¡
Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡ Client ¡Logo ¡
“The ¡more ¡ambiHous ¡plan ¡may ¡have ¡ more ¡chances ¡of ¡success...” ¡ ¡ George ¡Pólya ¡
Why ¡Datalog? ¡ ¡No ¡a ¡Priori ¡Bias ¡
– DeclaraHve ¡and ¡disorderly ¡ – Skinnable ¡– ¡give ¡people ¡the ¡syntax ¡they ¡like ¡
– Well-‑understood ¡expressivity ¡with ¡“controllable” ¡power ¡
– Turing-‑completeness ¡considered ¡harmful ¡ – ACID ¡transacHons ¡with ¡full ¡serializability ¡
– AutomaHc ¡opHmizaHon, ¡incremental ¡evaluaHon, ¡parallelizaHon ¡
– SQL ¡lexer+parser: ¡>14,000 ¡LOC; ¡Blox ¡lexer+parser: ¡< ¡1000 ¡LOC ¡
Core ¡Blox ¡Language: ¡ ¡ StaHcally-‑Typed, ¡StraHfied ¡Datalog¬
21/* ¡EDB ¡predicates ¡and ¡facts ¡*/ ¡ a(X) ¡-‑> ¡string(X). ¡ b(X,Y) ¡-‑> ¡string(X), ¡string(Y). ¡ a(“apple”). ¡ b(“apple”, ¡“banana”). ¡ ¡ /* ¡IDB ¡predicates ¡*/ ¡ c(X) ¡<-‑ ¡a(X). ¡ c(Y) ¡<-‑ ¡b(X,Y), ¡c(X), ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡!b(Y,X). ¡ int[8], ¡ uint[32], ¡ float[64], ¡ decimal[128], ¡ boolean, ¡ datetime, ¡ etc ¡
Blox: ¡Integrity ¡Constraints ¡
22/* ¡An ¡EDB ¡predicate ¡foo ¡*/ ¡ foo(X,Y) ¡-‑> ¡int[64](X), ¡datetime(Y). ¡ ¡ /* ¡A ¡constraint ¡stating ¡that ¡foo ¡is ¡
enforced ¡at ¡runtime.) ¡*/ ¡ foo(X,Y), ¡foo(X,Z) ¡-‑> ¡Y=Z. ¡ ¡ /* ¡Equivalent ¡sugared ¡declaration ¡*/ ¡ foo[X]=Y ¡-‑> ¡int[64](X), ¡datetime(Y). ¡ ¡
Blox: ¡Facts ¡and ¡Updates ¡
23/* ¡EDB ¡facts, ¡static ¡declaration ¡*/ ¡ a(“apple”). ¡ b(“apple”, ¡“banana”). ¡ ¡ /* ¡EDB ¡facts, ¡dynamic ¡insertion/retraction*/ ¡ +c(“hello, ¡world”). ¡
Blox: ¡Procedural ¡and ¡Temporal ¡Aspects ¡
24/* ¡Increment ¡g[X] ¡whenever ¡event(X) ¡occurs ¡*/ ¡ ^g[X]=Y+1 ¡<-‑ ¡+event(X), ¡g@prev[X]=Y. ¡
states ¡[MotakisZaniolo95,Ludäscher98] ¡
time
g[1]=2 ¡ g[1]=3 ¡ +event(1) ¡
Blox: ¡EnHty ¡Types ¡
/* ¡Entities: ¡“pure” ¡keys, ¡opaque ¡and ¡unordered ¡*/ ¡ emp_id(Id) ¡-‑> ¡. ¡ ¡ /* ¡Typical ¡usage: ¡associate ¡entities ¡with ¡ attributes ¡via ¡functional ¡predicates ¡*/ ¡ emp_name[Id]=Name ¡-‑> ¡ ¡ ¡ ¡ ¡emp_id(Id), ¡string(Name). ¡
¡
emp_addr[Id]=Addr ¡-‑> ¡ ¡ ¡ ¡ ¡emp_id(Id), ¡string(Addr). ¡ ¡ ¡
Blox: ¡Value ¡InvenHon ¡and ¡Data ¡Exchange ¡
26/* ¡Data ¡in ¡external ¡format, ¡must ¡restructure ¡*/ ¡ emps(Name,Addr) ¡-‑> ¡string(Name), ¡string(Addr). ¡ ¡ /* ¡Declare ¡a ¡constructor ¡for ¡emp_id’s ¡*/ ¡ cons_id[Name,Addr]=Id ¡-‑> ¡ ¡ ¡string(Name), ¡string(Addr), ¡emp_id(Id). ¡ lang:constructor(`cons_id). ¡ ¡ /* ¡Exchange ¡emps ¡data ¡to ¡emp_name, ¡emp_addr ¡*/ ¡ cons_id[Name,Addr]=Id, ¡emp_name[Id]=Name, ¡ emp_addr[Id]=Addr ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡<-‑ ¡emps(Name,Addr). ¡ ¡
Blox: ¡A ¡Simple ¡ApplicaHon ¡
– Sales ¡data ¡
– Data ¡access ¡permissions ¡
– Compute ¡the ¡data ¡shown ¡on ¡the ¡UI ¡ – Handle ¡UI ¡events ¡
27A ¡Simple ¡ApplicaHon: ¡Data ¡Tier ¡
28/* ¡Partial ¡schema ¡(item, ¡day, ¡store, ¡employee ¡ are ¡entities ¡defined ¡elsewhere) ¡*/ ¡ sales[Prod, ¡Day, ¡Store] ¡= ¡Sales ¡-‑> ¡ ¡ ¡ ¡ ¡item(Prod), ¡day(Day), ¡store(Store), ¡ ¡ ¡ ¡decimal[64](Sales). ¡ ¡ sold_in(Prod, ¡Store) ¡-‑> ¡ ¡ ¡ ¡ ¡item(Prod), ¡store(Store). ¡ ¡ manager(Store, ¡Manager) ¡-‑> ¡ ¡ ¡ ¡ ¡store(Store), ¡employee(Manager). ¡ ¡
A ¡Simple ¡ApplicaHon: ¡App ¡Tier ¡
29/* ¡managers ¡can ¡modify ¡products ¡sold ¡in ¡their ¡ store ¡*/ ¡ modifiable_by(Prod, ¡Mgr) ¡<-‑ ¡ ¡ ¡ ¡ ¡sold_in(Prod, ¡Store), ¡manager(Store, ¡Mgr). ¡ ¡
Simple ¡ApplicaHon: ¡UI ¡Layout ¡
30sales_entry_form(Form) ¡-‑> ¡form(Form). ¡ ¡ form_title[Form] ¡= ¡“Sales ¡Data ¡Entry” ¡ ¡ ¡ ¡<-‑ ¡sales_entry_form(Form). ¡ ¡ component[Form] ¡= ¡Items, ¡ ¡ dropdown[Items] ¡= ¡Item, ¡ ¡ component[Item] ¡= ¡“item” ¡ ¡ ¡ ¡ ¡<-‑ ¡sales_entry_form(Form). ¡ ¡ submit_button[Form] ¡= ¡Submit, ¡ ¡ label[Submit] ¡= ¡“submit” ¡ ¡ ¡ ¡ ¡<-‑ ¡sales_entry_form(Form). ¡ ¡ ¡
UI ¡View ¡is ¡a ¡Database ¡View ¡
32dropdown_values(Items, ¡Item) ¡<-‑ ¡ ¡ ¡ ¡ ¡ ¡ ¡component[Form] ¡= ¡Items, ¡ ¡ ¡ ¡sales_entry_form_user(Form, ¡User), ¡ ¡ ¡ ¡ ¡ ¡ ¡modifiable_by(Item, ¡User). ¡ ¡ ¡
UI ¡Event ¡Handling ¡
33^sales[Prod, ¡Date, ¡Store] ¡= ¡Val ¡<-‑ ¡ ¡ ¡ ¡ ¡ ¡ ¡+button_clicked(Form, ¡Submit), ¡ ¡ ¡ ¡ ¡ ¡ ¡sales_entry_form_user(Form, ¡User), ¡ ¡ ¡ ¡ ¡ ¡ ¡dropdown_selected[Form] ¡= ¡Prod, ¡ ¡ ¡ ¡ ¡date_f_value[Form, ¡Date_f] ¡= ¡Date, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡num_f_value[Form, ¡Val_f] ¡= ¡Val, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡manager(Store, ¡User). ¡ ¡ ¡
Blox: ¡StraHficaHon ¡Revisited ¡
pracHce ¡(esp. ¡wrt. ¡aggregaHon) ¡
– AggregaHons ¡on ¡lavce-‑structured ¡OLAP ¡cubes, ¡prewy-‑prinHng ¡ASTs, ¡ Hme-‑series ¡simulaHons, ¡… ¡
via ¡staged ¡par-al ¡fixpoint ¡semanHcs ¡
– ConservaHve ¡extension ¡of ¡straHfied ¡semanHcs ¡ – Can ¡guarantee ¡(PTIME) ¡terminaHon ¡for ¡commonly ¡occurring ¡pawerns ¡
classical ¡problems ¡too ¡
– company-‑controls, ¡parts-‑subparts, ¡shortest ¡paths, ¡… ¡
34Blox: ¡Staged ¡ParHal ¡Fixpoint ¡SemanHcs ¡
35p q r s
`
agg, ¬, etc ¡okay ¡
Dependency ¡graph ¡ Evalua.on ¡stages ¡ ( ¡0. ¡EDB ¡predicate ¡p ¡) ¡
Other ¡Features ¡of ¡Blox ¡
– Aggregate ¡funcHons ¡ – IntegraHon ¡with ¡solvers ¡for ¡opHmizaHon ¡ – Machine ¡learning ¡algorithms ¡
¡
– cf. ¡Shan ¡Shan ¡Huang’s ¡talk ¡on ¡MoReBlox ¡at ¡Datalog ¡2.0 ¡1.0 ¡
LogicBlox ¡RunHme ¡
efficient ¡incremental ¡maintenance, ¡ACID ¡semanHcs, ¡failure ¡ recovery, ¡etc. ¡
concurrency, ¡semi-‑naïve ¡evaluaHon, ¡DRed ¡for ¡maintenance ¡
– “She’s ¡old, ¡but ¡she’ll ¡hold!” ¡
many ¡architectural ¡fundamentals ¡
– Clean ¡design, ¡sophisHcated ¡data ¡structures ¡and ¡algorithms, ¡self-‑tuning, ¡ very ¡high ¡performance ¡
Veldhuizen ¡(runHme ¡architect) ¡
38Concurrent ¡TransacHons ¡in ¡v4.0 ¡
uses ¡(compromised) ¡isolaHon ¡levels ¡like ¡REPEATABLE ¡READ ¡to ¡ provide ¡reasonable ¡throughput ¡
– Locks ¡are ¡a ¡woefully ¡inadequate, ¡stone-‑age ¡technology ¡ – IsolaHon ¡levels ¡like ¡REPEATABLE ¡READ ¡are ¡semanHcally ¡ unsound, ¡dangerous, ¡and ¡ulHmately ¡inexcusable ¡
– Use ¡versioned ¡data ¡structures ¡(≠ ¡MVCC!) ¡for ¡concurrency ¡ – Provide ¡fully ¡ACID, ¡fully ¡serializable ¡transacHons ¡with ¡high ¡ throughput ¡
39Storage ¡and ¡Indexing ¡in ¡v4.0 ¡
workloads: ¡ – OLTP ¡=> ¡row ¡store ¡ ¡ – OLAP ¡=> ¡column ¡store ¡ – mixed ¡=> ¡? ¡
– A ¡predicate ¡p[X,Y]=Z ¡stored ¡in ¡paged, ¡cache-‑aware ¡data ¡ structure ¡based ¡on ¡(cascading ¡collecHons ¡of) ¡trees ¡ – Light ¡compression ¡for ¡cachelines ¡and ¡in-‑memory ¡pages, ¡ heavier ¡compression ¡for ¡on-‑disk ¡pages ¡
40Storage ¡and ¡Indexing ¡
relaHonal ¡predicates ¡are ¡modeled ¡as ¡nullary ¡funcHons ¡
the ¡opHmizer) ¡which ¡project ¡and ¡reorder ¡awributes ¡ ¡f_31(Z,X) ¡<-‑ ¡f[X,Y] ¡= ¡Z. ¡
41TradiHonal ¡B-‑Trees ¡and ¡Cache ¡Hierarchy ¡
Problem: ¡Binary ¡search ¡performs ¡dreadfully ¡on ¡modern ¡
Binary ¡Search ¡
43Cacheline ¡Trees ¡in ¡v4.0 ¡
44Cacheline ¡Tree ¡Performance ¡
45Trie ¡Model ¡in ¡v4.0 ¡
stores, ¡we’ve ¡rethought ¡the ¡basics ¡of ¡how ¡queries ¡should ¡be ¡
¡
Leapfrog ¡Joins ¡
47algorithm, ¡based ¡on ¡binding ¡tries ¡
joins ¡such ¡as ¡A(x,y,z),B(x,z),C(y). ¡
join, ¡rather ¡than ¡joining ¡pairwise ¡and ¡generaHng ¡intermediate ¡
sense ¡of ¡[Ngo+ ¡PODS ¡12] ¡
Maintenance ¡in ¡v4.0 ¡
to ¡inputs ¡
1. Large ¡volume ¡of ¡installed ¡logic ¡that ¡needs ¡to ¡be ¡maintained ¡for ¡ transacHons ¡(e.g. ¡live ¡analyHcs)-‑-‑-‑up ¡to ¡100,000 ¡rules ¡and ¡predicates ¡ in ¡current ¡LB ¡apps ¡
for ¡in-‑memory ¡databases ¡
– E.g. ¡64Gb ¡of ¡data ¡è ¡typical ¡main ¡memory ¡bandwidth ¡3Gb/s ¡è ¡21 ¡ seconds ¡just ¡to ¡stream ¡the ¡data ¡through ¡CPUs ¡
48Maintenance ¡(Incremental ¡EvaluaHon) ¡
change, ¡how ¡to ¡efficiently ¡update ¡the ¡outputs? ¡
naive ¡evaluaHon ¡and ¡DRed, ¡are ¡based ¡on ¡logical ¡ rewriHngs ¡and ¡are ¡oblivious ¡to ¡the ¡underlying ¡query ¡ evaluaHon ¡mechanisms ¡
maintenance ¡method, ¡which ¡draws ¡on ¡standard ¡PL ¡ techniques ¡and ¡extends ¡them ¡with ¡some ¡database-‑ specific ¡innovaHons ¡
49Background: ¡Trace ¡of ¡a ¡ComputaHon ¡
scratch; ¡instead ¡just ¡revisit ¡those ¡steps ¡that ¡need ¡maintaining: ¡
(1+2)*(4+5) ¡
¡ (1+ )*(4+5) ¡
¡ ¡
Maintenance ¡AspiraHon ¡
maintain ¡the ¡query ¡output ¡in ¡response ¡to ¡changes ¡in ¡input ¡ predicates ¡
and ¡aIer ¡changes, ¡and ¡measure ¡the ¡minimal ¡number ¡of ¡edits ¡ required ¡to ¡transform ¡the ¡“before” ¡trace ¡into ¡the ¡“aIer” ¡trace ¡
Maintaining ¡AggregaHons ¡in ¡v4.0 ¡
maintain ¡aggregaHons ¡such ¡as: ¡
¡¡TopSkuSales[dept]=topsales ¡<-‑ ¡
¡ ¡ ¡ ¡agg<<topsales=max(sales)>> ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡SalesBySku[sku]=sales, ¡ ¡ ¡ ¡ ¡SkuDept[sku]=dept. ¡
log ¡N), ¡where ¡N ¡is ¡the ¡total ¡number ¡of ¡records ¡
records ¡touched ¡by ¡the ¡query ¡
52MulHthreaded ¡ExecuHon ¡in ¡v4.0 ¡
53MulHthreaded ¡ExecuHon: ¡TPC-‑H ¡Q1 ¡
54MulHthreaded ¡ExecuHon: ¡TPC-‑H ¡
55MulHthreaded ¡ExecuHon: ¡TPC-‑H ¡Q6 ¡
56more ¡recent ¡builds) ¡
Other ¡Features ¡of ¡Interest ¡in ¡v4.0 ¡RunHme ¡
Conclusion ¡
dramaHcally ¡simplify ¡enterprise ¡applicaHon ¡development ¡
language ¡(types, ¡constructors, ¡updates, ¡aggregaHon, ¡Hme, ¡…) ¡
– Database ¡theory ¡literature ¡has ¡been ¡a ¡frui€ul ¡source ¡of ¡inspiraHon ¡
(twice!) ¡has ¡allowed ¡us ¡to ¡revisit ¡basic ¡architectural ¡ fundamentals, ¡and ¡find ¡creaHve ¡new ¡approaches ¡that ¡ advance ¡the ¡state-‑of-‑the-‑art ¡
58Thanks, ¡and ¡come ¡visit ¡us ¡in ¡Atlanta! ¡
it ¡oIen ¡
¡– Ideal ¡profile: ¡PhD ¡with ¡strong ¡engineering ¡skills ¡who ¡is ¡also ¡ comfortable ¡with ¡formal ¡methods ¡ – ExperHse ¡in ¡database ¡systems, ¡database ¡theory, ¡distributed ¡systems, ¡ programming ¡languages, ¡logic ¡programming, ¡machine ¡learning, ¡or ¡