150 likes | 259 Views
Swivel is a project aimed at creating a generalized faceted data browser that employs a faceted metadata approach, enhancing the organization and retrieval of information. By using dimensional modeling techniques common in data warehousing, it enables users to navigate data through independent, hierarchical categories. This project integrates technologies like jQuery, AJAX, Pylons, and MySQL, showcasing a logical UI design for seamless accessibility to various databases. With over 16,000 annotated architecture images, Swivel demonstrates an innovative way to visualize and interact with data.
E N D
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
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
Basic Faceted Browser UI Design • Goal: Out-of-box applicability to ANY DB following our generic data model
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.