Dbm (discuter | contributions) (→SQLfast) |
Dbm (discuter | contributions) (→SQLfast) |
||
Ligne 198 : | Ligne 198 : | ||
<br> | <br> | ||
− | :*<font color="black"><b>Four hours to save the library</b>, draft version, <i>June 10, 2017.</i></font>[https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Case01-Small-library.pdf [full text]] | + | :*<font color="black"><b>Case 1. Four hours to save the library</b>, draft version, <i>June 10, 2017.</i></font>[https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Case01-Small-library.pdf [full text]] |
::''Summary'': This case study describes the emergency writing of a small application that was to implement the core functions of the management of a small library. The challenge was to replace the current software, lost in a recent crash of the server. All that was left after the accident was the last backup of the database, unfortunately in an unknown format. | ::''Summary'': This case study describes the emergency writing of a small application that was to implement the core functions of the management of a small library. The challenge was to replace the current software, lost in a recent crash of the server. All that was left after the accident was the last backup of the database, unfortunately in an unknown format. | ||
::''Chapter contents'': An emergency situation. First mission: recovering the data. The basic functions. Conclusion. | ::''Chapter contents'': An emergency situation. First mission: recovering the data. The basic functions. Conclusion. | ||
− | :*<b>Schema-less databases (1)</b>, draft version, April 6, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto39-Schemaless-DB(1).pdf [full text]] | + | :*<b>Case 4. Schema-less databases (1)</b>, draft version, April 6, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto39-Schemaless-DB(1).pdf [full text]] |
::''Chapter contents'': Introduction. The Universal table model. Column-oriented data model. | ::''Chapter contents'': Introduction. The Universal table model. Column-oriented data model. | ||
− | :*<b>Schema-less databases (2)</b>, draft version, February 13, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto40-Schemaless-DB(2).pdf [full text]] | + | :*<b>Case 5. Schema-less databases (2)</b>, draft version, February 13, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto40-Schemaless-DB(2).pdf [full text]] |
::''Chapter contents'': The Key-Value model - Version 1. The Key-Value model - Version 2. Generation of generators. | ::''Chapter contents'': The Key-Value model - Version 1. The Key-Value model - Version 2. Generation of generators. | ||
− | :*<b>Schema-less databases (3)</b>, draft version, April 6, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto41-Schemaless-DB(3).pdf [full text]] | + | :*<b>Case 6. Schema-less databases (3)</b>, draft version, April 6, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto41-Schemaless-DB(3).pdf [full text]] |
::''Chapter contents'': Object-oriented view of Key-Value data. Objects with complex properties. Indexing objects. Comparison of the data models. | ::''Chapter contents'': Object-oriented view of Key-Value data. Objects with complex properties. Indexing objects. Comparison of the data models. | ||
− | :*<b>The book of which you are the hero</b>, draft version, June 2, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto44-Game-Books.pdf [full text]] | + | :*<b>Case 14. The book of which you are the hero</b>, draft version, June 2, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto44-Game-Books.pdf [full text]] |
::''Chapter contents'': Interactive adventure books and computer games. Choosing a sample game book. Designing a text-based interactive adventure game. Story telling. Structure of a game. Analyzing a game. Counting the number of paths. Merging episodes. Toward a better game engine. | ::''Chapter contents'': Interactive adventure books and computer games. Choosing a sample game book. Designing a text-based interactive adventure game. Story telling. Structure of a game. Analyzing a game. Counting the number of paths. Merging episodes. Toward a better game engine. | ||
− | :*<font color="black"><b>Directory management</b>, draft version. March 5, 2017. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto48-Directory-Management.pdf [full text]]</font>. | + | :*<font color="black"><b>Case 15. Directory management</b>, draft version. March 5, 2017. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto48-Directory-Management.pdf [full text]]</font>. |
::''Chapter contents'': File and directory management. File and directory hierarchy representation. Tree processing. Recursive queries. Hierarchy evolution. Hierarchy comparison. Searching for file clones. | ::''Chapter contents'': File and directory management. File and directory hierarchy representation. Tree processing. Recursive queries. Hierarchy evolution. Hierarchy comparison. Searching for file clones. | ||
− | :*<b>Test Database Generation</b>, draft version, December 4, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto46-Test-databases.pdf [full text]] | + | :*<b>Case 21. Test Database Generation</b>, draft version, December 4, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto46-Test-databases.pdf [full text]] |
::''Chapter contents'': Database performance evaluation. Generating high volume of synthetic data. Integrating heterogeneous data sources. Data cleaning. Data anonymization. Random data extraction. Executing very large scripts. Query performance. | ::''Chapter contents'': Database performance evaluation. Generating high volume of synthetic data. Integrating heterogeneous data sources. Data cleaning. Data anonymization. Random data extraction. Executing very large scripts. Query performance. | ||
− | :*<b>Kings of France - Part 1</b>, draft version, October 1, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto35-Kings-of-France.pdf [full text]] | + | :*<b>Case 24. Kings of France - Part 1</b>, draft version, October 1, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto35-Kings-of-France.pdf [full text]] |
::''Chapter contents'': Introduction. Data structures. Warming up: some easy queries. Rebuilding royal families. King succession. Seeking missing kings. Royal conflicts. | ::''Chapter contents'': Introduction. Data structures. Warming up: some easy queries. Rebuilding royal families. King succession. Seeking missing kings. Royal conflicts. | ||
− | :*<b>Kings of France - Part 2</b>, draft version, October 1, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto36-Kings-of-France(2).pdf [full text]] | + | :*<b>Case 25. Kings of France - Part 2</b>, draft version, October 1, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto36-Kings-of-France(2).pdf [full text]] |
::''Chapter contents'': The ancestor/descendant relationships. Counting descendants. The descendants of a member. Graphical representation of king genealogy - version 1. Graphical representation of king genealogy - version 2. Recovering the source data from their closure. Extracting the hierarchy of kings. | ::''Chapter contents'': The ancestor/descendant relationships. Counting descendants. The descendants of a member. Graphical representation of king genealogy - version 1. Graphical representation of king genealogy - version 2. Recovering the source data from their closure. Extracting the hierarchy of kings. | ||
− | :*<b>Conway's Game of Life</b>, draft version, June 2, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto32-Life-Game.pdf [full text]] | + | :*<b>Case 27. Conway's Game of Life</b>, draft version, June 2, 2014. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto32-Life-Game.pdf [full text]] |
::''Chapter contents'': Introduction. World and automata representation. Computing the next state. Graphical display of automaton evolution. Generation of SQLdraw scripts. Packaging the LIFE application. First performance analysis. Optimization 1: indexing tables. Optimization 2: windowing table access. Optimization 3: building a cheap world. A last, desperate, and (fortunately) unsuccessful optimization. Putting things together. Some representative automata. Family life. Conclusion. | ::''Chapter contents'': Introduction. World and automata representation. Computing the next state. Graphical display of automaton evolution. Generation of SQLdraw scripts. Packaging the LIFE application. First performance analysis. Optimization 1: indexing tables. Optimization 2: windowing table access. Optimization 3: building a cheap world. A last, desperate, and (fortunately) unsuccessful optimization. Putting things together. Some representative automata. Family life. Conclusion. | ||
− | :*<font color="black"><b>From data bulk loading to database book writing</b>, draft version, <i>January 10, 2017.</i></font>[https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto31-Topo-sort.pdf [full text]] | + | :*<font color="black"><b>Case 28. From data bulk loading to database book writing</b>, draft version, <i>January 10, 2017.</i></font>[https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto31-Topo-sort.pdf [full text]] |
::''Chapter contents'': Introduction. The database loading problem. Representing the table graph of a database. Topological sorting of the table graph. Coping with non acyclic graphs. Cyclic vs hard cyclic kernel of a table graph. Contracting the circuits of the hard kernel. Finding the independent circuits of a graph. Finding the super circuits of a graph. Building the final acyclic graph. Optimizing the final acyclic graph. Loading data: a complex abstract example. The complete data loading generation procedure. Loading the data of a super circuit. Loading data: a real example. Brute force data loading technique. Performance. Complement: extracting the table graph of a database. Topological sorting: application to book development. Other applications. | ::''Chapter contents'': Introduction. The database loading problem. Representing the table graph of a database. Topological sorting of the table graph. Coping with non acyclic graphs. Cyclic vs hard cyclic kernel of a table graph. Contracting the circuits of the hard kernel. Finding the independent circuits of a graph. Finding the super circuits of a graph. Building the final acyclic graph. Optimizing the final acyclic graph. Loading data: a complex abstract example. The complete data loading generation procedure. Loading the data of a super circuit. Loading data: a real example. Brute force data loading technique. Performance. Complement: extracting the table graph of a database. Topological sorting: application to book development. Other applications. | ||
− | :*<font color="black"><b>Path finders, rovers and Ariadne's thread</b>, draft version. December 5, 2016. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto52-Shortest-path.pdf [full text]]</font>. | + | :*<font color="black"><b>Case 31. Path finders, rovers and Ariadne's thread</b>, draft version. December 5, 2016. [https://staff.info.unamur.be/dbm/Documents/Tutorials/SQLfast/SQLfast-Tuto52-Shortest-path.pdf [full text]]</font>. |
::''Chapter contents'': Shortest paths between two cities. Dijkstra’s Algorithm. Representation of the graph. Computing the shortest paths from a starting city. Building a general purpose shortest path engine. Ariadne’s thread: solving mazes. Exploring a planet. Performance and optimization. | ::''Chapter contents'': Shortest paths between two cities. Dijkstra’s Algorithm. Representation of the graph. Computing the shortest paths from a starting city. Building a general purpose shortest path engine. Ariadne’s thread: solving mazes. Exploring a planet. Performance and optimization. | ||
<br> | <br> | ||
Ligne 239 : | Ligne 239 : | ||
<br> | <br> | ||
<!-- ------------------------------------------------------------------------------ --> | <!-- ------------------------------------------------------------------------------ --> | ||
− | :*<b>The human factor (Managing a small library)</b>, writing in progress. | + | :*<b>Case 2. The human factor (Managing a small library)</b>, writing in progress. |
<!-- ::''Chapter contents'': . --> | <!-- ::''Chapter contents'': . --> | ||
− | :*<b>Interactive SQLfast interpreters (incl. Self-assessment SQL training tutor)</b>, writing in progress. | + | :*<b>Case 2. Interactive SQLfast interpreters (incl. Self-assessment SQL training tutor)</b>, writing in progress. |
− | :*<b>Schema-driven code generation</b>, writing in progress. | + | :*<b>Case 7. Schema-driven code generation</b>, writing in progress. |
− | :*<b>Active databases</b>, writing in progress. | + | :*<b>Case 8. Active databases</b>, writing in progress. |
− | :*<b>Temporal databases - Part 1: Representation, management and simple queries</b>, writing in progress. | + | :*<b>Case 9. Temporal databases - Part 1: Representation, management and simple queries</b>, writing in progress. |
− | :*<b>Temporal databases - Part 2: Join, projection and grouping</b>, writing in progress. | + | :*<b>Case 10. Temporal databases - Part 2: Join, projection and grouping</b>, writing in progress. |
− | :*<b>Pivot tables: from columns to rows</b>, writing in progress. | + | :*<b>Case 11. Pivot tables: from columns to rows</b>, writing in progress. |
− | :*<b>Geographic information systems</b>, writing in progress. | + | :*<b>Case 12. Geographic information systems</b>, writing in progress. |
− | :*<b>Database security</b>, writing in progress. | + | :*<b>Case 13. Database security</b>, writing in progress. |
− | :*<b>Lies, damned lies, and statistics</b>, writing in progress. | + | :*<b>Case 16. Lies, damned lies, and statistics</b>, writing in progress. |
− | :*<b>Bis repetita non (always) placent (Detecting and controlling redundancies)</b>, writing in progress. | + | :*<b>Case 17. Bis repetita non (always) placent (Detecting and controlling redundancies)</b>, writing in progress. |
− | :*<b>Data analysis and cleaning</b>, writing in progress. | + | :*<b>Case 18. Data analysis and cleaning</b>, writing in progress. |
− | :*<b>Database reverse engineering</b>, writing in progress. | + | :*<b>Case 19. Database reverse engineering</b>, writing in progress. |
− | :*<b>Database prototyping</b>, writing in progress. | + | :*<b>Case 20. Database prototyping</b>, writing in progress. |
− | :*<b>Database Performance</b>, writing in progress. | + | :*<b>Case 22. Database Performance</b>, writing in progress. |
<!-- ::''Chapter contents'': Database performance tuning. Index types. The roles of cache memories. Performance evaluation pitfalls. Optimizing select queries. Optimizing data modification queries. Optimizing group by and order by queries. --> | <!-- ::''Chapter contents'': Database performance tuning. Index types. The roles of cache memories. Performance evaluation pitfalls. Optimizing select queries. Optimizing data modification queries. Optimizing group by and order by queries. --> | ||
− | :*<b>Object/Relational mapping <i>vs</i> Active database</b>, writing in progress. | + | :*<b>Case 23. Object/Relational mapping <i>vs</i> Active database</b>, writing in progress. |
− | :*<b>Text processing</b>, writing in progress | + | :*<b>Case 26. Text processing</b>, writing in progress |
− | :*<b>Bill of material</b>, rewriting in progress. | + | :*<b>Case 29. Bill of material</b>, rewriting in progress. |
<!-- ::''Chapter contents'': Introduction. The BOM database. The part list of a part. Closure of a BOM. A Tale of Two Worlds. Computing the unit cost of all parts. Updating a BOM. Simulating recursive queries through SQLfast. --> | <!-- ::''Chapter contents'': Introduction. The BOM database. The part list of a part. Closure of a BOM. A Tale of Two Worlds. Computing the unit cost of all parts. Updating a BOM. Simulating recursive queries through SQLfast. --> | ||
− | :*<b>Classification (Formal Concept Analysis)</b>, writing in progress. | + | :*<b>Case 30. Classification (Formal Concept Analysis)</b>, writing in progress. |
− | :*<b>Databases and the internet</b>, writing in progress. | + | :*<b>Case 32. Databases and the internet</b>, writing in progress. |
− | :*<b> | + | :*<b>Case 33. Worflow management - Building a workflow engine</b>, writing in progress. |
<br> | <br> | ||
<Retour à la page d'accueil / Back>
Sommaire |
Case studies in preparation