Swivel: A Generalized Faceted Data Browser
description
Transcript of Swivel: A Generalized Faceted Data Browser
Swivel: A Generalized Faceted Data Browser
Edward Clarkson
CS 6400 Project, Fall 2008
Introduction: Faceted Metadata
• A Library Science concept for organizing information– Dates from 1950s… but difficult without computers!
• Hierarchies (Dewey Decimal, etc.) are useful, but restrictive.
• Faceted Classification/Metadata: classify a set of items into multiple sets of independent, potentially hierarchical categories
Example
Recent Examples
Faceted Data Model
ENTITY
id
Name
Attr1
Attrn
1 parent
N child
N
M
ENTITY
FACET1
FACET2
FACETC
N
MNN
MM
N
M
ENTITY4
ENTITY1
ENTITY5
ENTITY2
ENTITY3
ENTITY8
ENTITY6 ENTITY7
Connection to Data Warehousing
• Data Warehouses (DWs) aggregate OLTP system data to for decision support, analysis, etc.
• Dimensional Modeling common in DW design.– Central fact table
connected to many dimensional tables
– Star and Snowflake Schemas
– Denormalized!
Sources: http://upload.wikimedia.org/wikipedia/en/f/fe/Star-schema-example.png http://upload.wikimedia.org/wikipedia/en/7/73/Snowflake-schema-example.png
Faceted Data Model ~ Dimensional Model?
ENTITY4
ENTITY1
ENTITY5
ENTITY2
ENTITY3
ENTITY8
ENTITY6 ENTITY7
Faceted Data Model ~ Dimensional Model?
ENTITY4
ENTITY1
ENTITY5
ENTITY2
ENTITY3
ENTITY8
ENTITY6 ENTITY7
Faceted Data Model ~ Dimensional Model?
ENTITY4
ENTITY1
ENTITY5
ENTITY2
ENTITY3
ENTITY8
ENTITY6 ENTITY7
Basic Faceted Browser UI Design
Focus Area
Facet Area
.·˙
FACET1
FACETN
.·˙
FOCUS
• Goal: Out-of-box applicability to ANY DB following our generic data model
Faceted UI Extensions
FACET1
FACETN
.·˙
FOCUS ?
FACET1,1
FACET1,M
FACETM,1
FACETM,N
Swivel
• Technologies– jQuery AJAX library > Pylons > MySQL
• 16,000+ annotated architecture images as test data
Logical Independence
• Need some mechanism for application to discover and use DB arrangement– ORM component: a bit cumbersome
– Foreign Key constraints
Minimizing Query Load
• Controller queries for all necessary data, passes it to templates
• Per-HTTP-request demands:– 2 queries for item list
• 1 LIMIT query for items (n-way JOIN based on selections)• 1 GROUP BY aggregation of n-way JOIN for item count
– 1 query per facet• 1 GROUP BY aggregation of n-way JOIN for facet values
and counts.
Demo