cubes – pluggable model explained

35
Pluggable Model Cubes Analytical Workspace Redesign data brewery February 2014 Stefan Urbanek – @Stiivi

Upload: stefan-urbanek

Post on 18-Dec-2014

3.594 views

Category:

Technology


1 download

DESCRIPTION

Description of the new pluggable model in Cubes – lightweight Python OLAP framework.

TRANSCRIPT

Page 1: Cubes – pluggable model explained

Pluggable ModelCubes Analytical Workspace Redesign

data brewery

February 2014Stefan Urbanek – @Stiivi

Page 2: Cubes – pluggable model explained

Original CubesCubes before 1.0

Page 3: Cubes – pluggable model explained

Model

■ single JSON or a model bundle

■ contains all model objects

■ full description required

Page 4: Cubes – pluggable model explained

backends

model browser✂

server

http

workspace

formatters

modules

one file or one directory bundle

one per serving:[workspace] backend=sql url=postgresql://localhost/database

Page 5: Cubes – pluggable model explained

Browser

SQL Snowflake Browser

Aggregation Browser

SQL Denormalized Browser MongoDB Browser Some HTTP Data

Service Browser

?

multiple backends available

Page 6: Cubes – pluggable model explained

Backend

■ implemented as python module with an entry point create_workspace()

■ provides Workspace and Browser workspace represents data storage

■ only one Workspace per serving only one kind of storage per serving

Page 7: Cubes – pluggable model explained

Requirements

Page 8: Cubes – pluggable model explained

Model

■ composed of multiple parts

■ external model definition provided from external source, such as analytical service

■ shared dimension descriptions only one dimension description is necessary per composed model

Page 9: Cubes – pluggable model explained

Backend

■ heterogenous storage multiple data stores, different types of data stores

■ different schemas in same store

■ multiple environments dev, test, production, ...

Page 10: Cubes – pluggable model explained

Redesign

Page 11: Cubes – pluggable model explained

Backend

■ “backend” are multiple objects:

!

■ better plug-in system instead of Python module

■ more flexible composition

|Browser

"Store

#Provider

Page 12: Cubes – pluggable model explained

Backend Objects

■ Browser – performs aggregated browsing

■ Store – maintains database connection

■ Model Provider – provides model

Note: not every kind has to be implemented

Page 13: Cubes – pluggable model explained

Logical Physical

physical data store(database or API)

|Browser

"Store

#Provider

∑aggregate

connectcreate model

model

cubes

dimensions

model

backend objects

Page 14: Cubes – pluggable model explained

Browser

Page 15: Cubes – pluggable model explained

Browser

■ depends on the logical model

■ implements aggregation aggregate(), values(), …

■ gets data from associated store

Page 16: Cubes – pluggable model explained

Logical Physical

physical data store(database or API)

|Browser

"Store

∑aggregate

model

browser

Page 17: Cubes – pluggable model explained

Browser Methods

■ features()

■ aggregate()

■ members()

■ facts()

■ fact()

Page 18: Cubes – pluggable model explained

Store

Page 19: Cubes – pluggable model explained

Store

■ provides database or API connection

■ might provide a model

■ slicer tool actions physical mapping validation, model from schema generation, schema from model generation, schema conversions and optimization, ...

*former backend’s “Workspace” object

*

Page 20: Cubes – pluggable model explained

Logical Physical

physical data store(database or API)

|Browser

"Store

connect

store

Page 21: Cubes – pluggable model explained

Store Methods

■ validate(cube) – does logical map to physical?

■ create(object) – create physical structure

Store is not required to implement any methods at this time. Future:

Page 22: Cubes – pluggable model explained

Model Provider

Page 23: Cubes – pluggable model explained

Model Provider

■ creates model from external source

■ might suggest store to be used

Page 24: Cubes – pluggable model explained

Logical

!Provider

create model

model

cubes

dimensions

model

model provider

Page 25: Cubes – pluggable model explained

Provider Methods

■ dimension_metadata(name,temps,locale)

■ cube_metadata(name,locale)

or

■ dimension(name,temps,locale)

■ cube(name,locale)

Page 26: Cubes – pluggable model explained

example backends

SQL Backend Mongo Backend Google Analytics Backend

|Snowflake Browser

"SQL Store

|Mongo Browser

"Mongo Store

|GA Browser

"GA Store

#GA Model Provider

Page 27: Cubes – pluggable model explained

from cubes import | AggregateBrowser, " Store !class " SQLStore(" Store): | default_browser_name = “sql_snowflake” ! def __init__(self, # **options): # initialize the store here ! def validate_cube(self, cube): return True # if valid !!class | SQLSnowflakeBrowser(| Browser): def __init__(self, model, locale): # initialize the browser ! def features(self): # return list of browser features def aggregate(self, cell, ...): # return aggregation of the cell

from slicer.ini

Page 28: Cubes – pluggable model explained

New Workspace

■ global object at library level

■ provides appropriate browser

■ contains run-time configuration

■ might have state persistence

*former backend Workspace is now Store

*

Page 29: Cubes – pluggable model explained

Future Workspace

■ caching

■ cube composition

■ … ?

Page 30: Cubes – pluggable model explained

Workspace Example

Page 31: Cubes – pluggable model explained

heterogenous environment

Workspace

Cubes

Model Providers

Stores

sales churn eventsactivations

Static Model Provider

API Model Provider

BI Data(Postgres)

BI Data 2(Mongo)

Events(API)

Page 32: Cubes – pluggable model explained

Workspace

Cubes

Model Providers

Stores

sales churn eventsactivations

Static Model Provider

BI Data(Postgres)

BI Data 2(Mongo)

crm sales events

[workspace] models_path: /var/lib/cubes/models ![models] crm: crm.cubesmodel sales: sales.cubesmodel events: events.cubesmodel ![datastore_bidata] type: sql url: postgresql://localhost/crm ![datastore_bidata2] type: mongo host: localhost collection: events

Page 33: Cubes – pluggable model explained

Conclusion

Page 34: Cubes – pluggable model explained

Conclusion

■ heterogenous pluggable environment

■ externally provided models

■ easier backend implementation

Page 35: Cubes – pluggable model explained

Cubes Home

cubes.databrewery.org

github

github.com/Stiivi/cubes

Development Documentation

cubes.databrewery.org/dev/doc/for github master HEAD