226 lines
7.5 KiB
HTML
226 lines
7.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
|
|
<title>Just-in-Time Data Structures</title>
|
|
|
|
<meta name="description" content="Small Data">
|
|
<meta name="author" content="Oliver Kennedy">
|
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
|
|
|
|
<link rel="stylesheet" href="../reveal.js-3.1.0/css/reveal.css">
|
|
<link rel="stylesheet" href="ubodin.css" id="theme">
|
|
|
|
<!-- Code syntax highlighting -->
|
|
<link rel="stylesheet" href="../reveal.js-3.1.0/lib/css/zenburn.css">
|
|
|
|
|
|
<style>
|
|
table.panelists td.name {
|
|
text-align: right;
|
|
}
|
|
table.panelists td.affiliation {
|
|
font-size: smaller;
|
|
text-decoration: italic;
|
|
text-align: left;
|
|
}
|
|
</style>
|
|
|
|
<!-- Printing and PDF exports -->
|
|
<script>
|
|
var link = document.createElement( 'link' );
|
|
link.rel = 'stylesheet';
|
|
link.type = 'text/css';
|
|
link.href = window.location.search.match( /print-pdf/gi ) ? '../reveal.js-3.1.0/css/print/pdf.css' : '../reveal.js-3.1.0/css/print/paper.css';
|
|
document.getElementsByTagName( 'head' )[0].appendChild( link );
|
|
</script>
|
|
|
|
<!--[if lt IE 9]>
|
|
<script src="../reveal.js-3.1.0/lib/js/html5shiv.js"></script>
|
|
<![endif]-->
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div class="reveal">
|
|
|
|
<div class="header">
|
|
<!-- Any Talk-Specific Header Content Goes Here -->
|
|
<center>
|
|
<a href="http://www.buffalo.edu" target="_blank">
|
|
<img src="../graphics/logos/ub-1line-ro-white.png" height="20"/>
|
|
</a>
|
|
</center>
|
|
</div>
|
|
<div class="footer">
|
|
<!-- Any Talk-Specific Footer Content Goes Here -->
|
|
<div style="float: left; margin-top: 15px; ">
|
|
Exploring <u><b>O</b></u>nline <u><b>D</b></u>ata <u><b>In</b></u>teractions
|
|
</div>
|
|
<a href="https://odin.cse.buffalo.edu" target="_blank">
|
|
<img src="../graphics/logos/odin-1line-white.png" height="40" style="float: right;"/>
|
|
</a>
|
|
</div>
|
|
|
|
<div class="slides">
|
|
<!-- Any section element inside of this container is displayed as a slide -->
|
|
|
|
<section>
|
|
<!-- Credits... introduce everyone, etc... -->
|
|
<section>
|
|
<h2>Just-in-Time Data Structures</h2>
|
|
<h4>Oliver Kennedy</h4>
|
|
<h4><a href="mailto:okennedy@buffalo.edu">okennedy@buffalo.edu</a></h4>
|
|
</section>
|
|
|
|
<section>
|
|
<table>
|
|
<tr>
|
|
<td width="150px"><img src="graphics/saurav.jpg" height="150px"/></td>
|
|
<td width="150px"><img src="graphics/darshana.jpg" height="150px"/></td>
|
|
<td width="150px"><img src="graphics/hank.jpg" height="150px"/></td>
|
|
<td width="150px"><img src="graphics/ankur.jpg" height="150px"/></td>
|
|
<td width="150px"><img src="graphics/luke.png" height="150px"/></td>
|
|
</tr>
|
|
<tr style="font-size: smaller;">
|
|
<td>Saurav Singhi</td>
|
|
<td>Darshana Balakrishnan<br/</td>
|
|
<td>Hank Lin</td>
|
|
<td>Ankur Upadhyay</td>
|
|
<td>Lukasz Ziarek</td>
|
|
</tr>
|
|
<tr style="font-size: small;">
|
|
<td>(PhD In Progress)</td>
|
|
<td>(MS In Progress)</td>
|
|
<td>(BS 2017)</td>
|
|
<td>(MS 2014)</td>
|
|
<td>(Asst. Prof @ UB)</td>
|
|
</tr>
|
|
</table>
|
|
</section>
|
|
</section>
|
|
|
|
<section>
|
|
<!-- Establish the setting:
|
|
- Data Structures are a game of trade-offs.
|
|
- Which structure is best? Well, it depends!
|
|
- Specific data structures lock you in to a specific set of tradeoffs:
|
|
- Read vs Write
|
|
- Batch vs Individual Updates
|
|
- Scan vs Lookup vs Range Queries
|
|
-->
|
|
</section>
|
|
|
|
<section>
|
|
<!-- Get deeper in to the problem:
|
|
- Dynamic workloads: (E.g., Data Loading -> Data access || Regional Differences in Access Patterns)
|
|
- State of the art:
|
|
- Option 1: Trash the old data structure and build a new one (and you're left twiddling your thumbs while you wait)
|
|
- Option 2: Design a data structure *specifically* for your transitional needs (e.g., LSM trees)
|
|
- What would it take to allow a data structure to incrementally transition from one set of tradeoffs to another one?
|
|
- Challenge: We have no way to work with, or even to describe such an "intermediate" data structure in the middle of transitioning
|
|
- Talk outline:
|
|
- A Universal Data Structure Instance description language
|
|
- Accessing and Modifying Static Data Structures
|
|
- Optimizing Static Data Structures
|
|
- Dynamic Data
|
|
- Policy Discovery and Optimization
|
|
-->
|
|
</section>
|
|
|
|
<section>
|
|
<!-- A Universal Data Structure Instance description language
|
|
- Initial goal: Describing an instance of a data structure at one specific point in time.
|
|
- Approach: Commonalities between different data structures... standard patterns
|
|
- Records
|
|
- Pointers (to a address of a physical entity that describes a collection of records)
|
|
- Semantics (explicit or implicit properties of the physical layout that can improve queries over the ds)
|
|
- Specifics: Specific building blocks
|
|
- [X] U [Y]
|
|
- Record
|
|
- Generalizations:
|
|
- Repetition (requires array notation)
|
|
- Semantic Extensions (Binary Tree, Hash Table, Sorted Array)
|
|
- Language (CFG for data structure instances)
|
|
- Examples (borrow from paper?)
|
|
-->
|
|
</section>
|
|
|
|
<section>
|
|
<!-- Accessing Static Data Structures
|
|
- Queries as morphisms on the language
|
|
- Enumeration + Pop
|
|
- Lookups
|
|
- Scans
|
|
-->
|
|
<!-- Dynamic Data
|
|
- Do the minimum work possible: Linked List
|
|
-->
|
|
</section>
|
|
|
|
<section>
|
|
<!-- Optimizing Static Data Structures
|
|
- Pattern + Replacement Language
|
|
- Events
|
|
- Examples
|
|
- Cracker Index
|
|
- Splay Tree
|
|
- Lazy BTree
|
|
-->
|
|
</section>
|
|
|
|
<section>
|
|
<!-- Policy Discovery and Optimization
|
|
- Purely Heuristic Design: Cracker Index / Transition Policy / Splay Trees
|
|
- Assisted Discovery: Parameterized Search Space + Cost Model
|
|
- Autonomous Discovery:
|
|
- Simulation-Based
|
|
- (Likely Expensive) Chase-style
|
|
-->
|
|
</section>
|
|
|
|
|
|
</div></div>
|
|
|
|
<script src="../reveal.js-3.1.0/lib/js/head.min.js"></script>
|
|
<script src="../reveal.js-3.1.0/js/reveal.js"></script>
|
|
|
|
<script>
|
|
|
|
// Full list of configuration options available at:
|
|
// https://github.com/hakimel/../reveal.js#configuration
|
|
Reveal.initialize({
|
|
controls: false,
|
|
progress: true,
|
|
history: true,
|
|
center: true,
|
|
slideNumber: true,
|
|
|
|
transition: 'fade', // none/fade/slide/convex/concave/zoom
|
|
|
|
// Optional ../reveal.js plugins
|
|
dependencies: [
|
|
{ src: '../reveal.js-3.1.0/lib/js/classList.js', condition: function() { return !document.body.classList; } },
|
|
{ src: '../reveal.js-3.1.0/plugin/math/math.js',
|
|
condition: function() { return true; },
|
|
mathjax: '../reveal.js-3.1.0/js/MathJax.js'
|
|
},
|
|
{ src: '../reveal.js-3.1.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
|
{ src: '../reveal.js-3.1.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
|
{ src: '../reveal.js-3.1.0/plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
|
|
{ src: '../reveal.js-3.1.0/plugin/zoom-js/zoom.js', async: true },
|
|
{ src: '../reveal.js-3.1.0/plugin/notes/notes.js', async: true }
|
|
]
|
|
});
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|