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 ¡12, ¡2012 ¡ Molham Aref
1. Vision ¡ 2. Language ¡ 3. RunHme ¡
en • ter • prise soft • ware \ ˈ en-t ə (r)- ˌ pr ī z ˈ s ȯ ft- ˌ wer\ ¡ • SoIware ¡somebody ¡pays ¡you ¡to ¡use ¡ – AccounHng, ¡sales, ¡supply-‑chain, ¡customer-‑relaHonship ¡ management, ¡etc... ¡ • Expensive ¡ ¡ ¡ – $244B ¡(’10) ¡-‑> ¡$267B ¡(’11) ¡-‑> ¡$288B ¡(’12) ¡ • Doesn’t ¡work ¡ – Most ¡enterprise ¡decisions ¡sHll ¡made ¡with ¡Excel ¡ 3
Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡ Bookkeeping ¡ BI ¡ Planning ¡ View ¡ PRESENT FUTURE PAST App ¡ Data ¡ 4
Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡ Bookkeeping ¡ BI ¡ Planning ¡ View ¡ App ¡ Data ¡ 5
Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡ Bookkeeping ¡ BI ¡ Planning ¡ User ¡ ¡ User ¡ ¡ User ¡ ¡ View ¡ Interface ¡ Interface ¡ Interface ¡ BI ¡App ¡ Applica.on ¡ App ¡ Server ¡ Server ¡ Planning ¡ Database ¡ Data ¡ OLTP ¡ ¡ OLAP ¡ Database ¡ Database ¡ 6
Enterprise ¡Decision ¡AutomaHon ¡Nightmare ¡ Bookkeeping ¡ BI ¡ Planning ¡ User ¡ ¡ User ¡ ¡ User ¡ ¡ View ¡ Interface ¡ Interface ¡ Interface ¡ BI ¡App ¡ Applica.on ¡ App ¡ Server ¡ Server ¡ Planning ¡ Database ¡ Data ¡ OLTP ¡ ¡ OLAP ¡ Database ¡ Database ¡ ETL ETL 7
IT ¡Landscape ¡– ¡Supply ¡Chain ¡(2% ¡of ¡footprint) ¡ Fulfill Demand Current Information Exchange Auto Receipt Schedule Shipment Manifest Destination PO Receipts DDS Franklin EXETER ASN Anti-Dealer ASN <Current> Receipts Shipment <Current> Transfer Scan Information <Target> <Current> Schedules Transfer On-Hand Inventory Transfer I01 - ASN RTV Transfers Purchase Orders Active SKUs Scheduling Store to DC Forecast PO Dates i2 TMS <Current> PO Receipts RTV Errors E3 Shipment Manifest <Target> Transfer Receipts Rapistan Genco Portal Inventory Adjustment Yantra AAS <Current> Receipts <Target> PO Receipts Active Assortment OMS Cycle Counts Intl Shipment i2 SCEM Allocations Forecast <Current> Status <Target> Inventory Adjustment <Current> Bridgepoint Delivery Schedule ASN’s <Current> Ladder PO’s Inventory Availability <Current> Receipt Schedule Cycle Counts Purchase Orders Transfer Cambell- I06 WMS Shipment Manifest Allocator Purchase Orders PO Receipts PO Receipts Staffworks Transfers Transfer Transfer Receipts I01 - Store Transfers <Current> Inventory Adjustment Retek RMS <Current> <Current> Receiving Location & SKU (v9) <Current> Location & SKU Star Repair Cambell Time & Attendance Transfer Receipts <Current> Inventory Adjustments <Current> <Current> Purchase Orders Purchase Orders PO and PO Receipts Inventory I02 - Transfer I07 – Dataflex Purchase RSS Star-In-Home <Current> Inventory Transfer Orders RMS I05 – <Current> RTV Request <Current> <Target> Inventory <Current> Dynamic <Current> Analytics Inventory Backstock- <Current> Mainframe I03 - RTV tool I35 – Early Inventory Adjustments <Current> ASN Warning <Current> System <Current> D <Current> W VPM Transfer <Current> VST Inventory Adjustments I04 – Home Delivery <Target> I10 – Cycle <Current> I09 – Cycle Physical I13 – Auto Counts Customer Order Optimized Delivery Route Inventory Replenishment <Current> Purchase Orders <Current> <Current> Texlon Customer PO Acknowledgement Order Mgmt <Target> Electronic (CO server) RIMMS Subscription Vendors Capture <Current> <Target> <Current>
(Not ¡that ¡we ¡advocate ¡overthrowing ¡capitalist ¡states ¡and ¡ replacing ¡them ¡with ¡Stalinist ¡regimes, ¡but…) ¡ “If ¡you ¡tremble ¡with ¡indignaHon ¡at ¡ every ¡injusHce, ¡then ¡you ¡are ¡a ¡ comrade ¡of ¡mine.” ¡ Che ¡Guevara ¡ 9
The ¡LogicBlox ¡Vision ¡ • Forget ¡the ¡hairball. ¡ ¡The ¡hairball ¡is ¡dumb. ¡ • Minimize ¡moving ¡parts, ¡minimize ¡glue ¡ – Unify ¡the ¡programming ¡model ¡and ¡ ¡ – Unify ¡the ¡execuHon ¡environment ¡ – Simplify ¡aggressively ¡ • FoundaHon: ¡(extended) ¡Datalog ¡ 10
The ¡LogicBlox ¡Vision ¡ Bookkeeping ¡ BI ¡ Planning ¡ User ¡ ¡ User ¡ ¡ User ¡ ¡ View ¡ Interface ¡ Interface ¡ Interface ¡ BI ¡App ¡ Planning ¡App ¡ ApplicaHon ¡ App ¡ Server ¡ Server ¡ Server ¡ Data ¡ Planning ¡ OLTP ¡ ¡ OLAP ¡ Database ¡ Database ¡ Database ¡ 11
The ¡LogicBlox ¡Vision ¡ Bookkeeping ¡ BI ¡ Planning ¡ User ¡ ¡ User ¡ ¡ View ¡ Interface ¡ Interface ¡ LogicBlox ¡ BI ¡App ¡ Planning ¡App ¡ App ¡ language ¡ ¡ Server ¡ Server ¡ runHme ¡ Data ¡ Planning ¡ OLAP ¡ Database ¡ Database ¡ 12
The ¡LogicBlox ¡Vision ¡ Bookkeeping ¡ BI ¡ Planning ¡ User ¡ ¡ View ¡ Interface ¡ LogicBlox ¡ LogicBlox ¡ Planning ¡App ¡ App ¡ language ¡ ¡ language ¡ ¡ Server ¡ runHme ¡ runHme ¡ Data ¡ Planning ¡ Database ¡ 13
The ¡LogicBlox ¡Vision ¡ Bookkeeping ¡ BI ¡ Planning ¡ View ¡ LogicBlox ¡ LogicBlox ¡ LogicBlox ¡ App ¡ language ¡ ¡ language ¡ ¡ language ¡ ¡ runHme ¡ runHme ¡ runHme ¡ Data ¡ 14
The ¡LogicBlox ¡Vision ¡ Bookkeeping ¡ BI ¡ Planning ¡ Rendering ¡ View ¡ LogicBlox ¡ App ¡ language ¡ ¡ runHme ¡ Data ¡ 15
a r e you CRAZY?!? ( nai v e ? delusional ?) 16
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 ¡ 18
1. Vision ¡ 2. Language ¡ 3. RunHme ¡
Why ¡Datalog? ¡ ¡No ¡ a ¡Priori ¡Bias ¡ • Usability ¡ – DeclaraHve ¡and ¡disorderly ¡ – Skinnable ¡– ¡give ¡people ¡the ¡syntax ¡they ¡like ¡ • Expressivity ¡ – Well-‑understood ¡expressivity ¡with ¡ “ controllable ” ¡power ¡ • Safety ¡ – Turing-‑completeness ¡considered ¡harmful ¡ – ACID ¡transacHons ¡with ¡full ¡serializability ¡ • Performance ¡ – AutomaHc ¡opHmizaHon, ¡incremental ¡evaluaHon, ¡parallelizaHon ¡ • Elegance ¡ – SQL ¡lexer+parser: ¡>14,000 ¡LOC; ¡Blox ¡lexer+parser: ¡< ¡1000 ¡LOC ¡ • Very ¡large ¡body ¡of ¡mostly ¡un-‑commercialized ¡research ¡
Core ¡Blox ¡Language: ¡ ¡ StaHcally-‑Typed, ¡StraHfied ¡Datalog ¬ /* ¡EDB ¡predicates ¡and ¡facts ¡*/ ¡ a(X) ¡-‑> ¡string(X). ¡ b(X,Y) ¡-‑> ¡string(X), ¡string(Y). ¡ a(“apple”). ¡ int[8], ¡ b(“apple”, ¡“banana”). ¡ uint[32], ¡ ¡ float[64], ¡ /* ¡IDB ¡predicates ¡*/ ¡ decimal[128], ¡ c(X) ¡<-‑ ¡a(X). ¡ boolean, ¡ c(Y) ¡<-‑ ¡b(X,Y), ¡c(X), ¡ ¡ datetime, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡!b(Y,X). ¡ etc ¡ 21
Blox: ¡Integrity ¡Constraints ¡ /* ¡An ¡EDB ¡predicate ¡foo ¡*/ ¡ foo(X,Y) ¡-‑> ¡int[64](X), ¡datetime(Y). ¡ ¡ /* ¡A ¡constraint ¡stating ¡that ¡foo ¡is ¡ functional. ¡ ¡(Unlike ¡types, ¡constraints ¡are ¡ enforced ¡at ¡runtime.) ¡*/ ¡ foo(X,Y), ¡foo(X,Z) ¡-‑> ¡Y=Z. ¡ ¡ /* ¡Equivalent ¡sugared ¡declaration ¡*/ ¡ foo[X]=Y ¡-‑> ¡int[64](X), ¡datetime(Y). ¡ ¡ 22
Blox: ¡Facts ¡and ¡Updates ¡ /* ¡EDB ¡facts, ¡static ¡declaration ¡*/ ¡ a(“apple”). ¡ b(“apple”, ¡“banana”). ¡ ¡ /* ¡EDB ¡facts, ¡dynamic ¡insertion/retraction*/ ¡ +c(“hello, ¡world”). ¡ -‑d[1234] ¡= ¡true. ¡ 23
Recommend
More recommend