SlideShare a Scribd company logo
1 of 21
April 20, 2011 Qt SQL module SAINT adaptations & workarounds André Somers  |  1
André Somers  |  2  |  SAINT database layer : Design and Rationale Database use case Situation: All data stored in Relational Database, one database foreachstudy OriginallyusingMS Access Making database independent; first target MySql Problem:  SQL dialects Different names and limitationsfor data types Solution:  No actual SQL code in code Query textsgeneratedby (extended) SQL driverforQt
André Somers  |  3  |  SAINT database layer : Design and Rationale Qt & Databases Qt drivers do not support DDL by default No way to generate SQL to manipulate data structures Solution: custom extension to Qt SQL driver model Qt SQL drivers are plugins New drivers subclassed from standard driver (so they can still be used where you’d otherwise use other drivers), but have an extended base to allow for more functionality.
André Somers  |  4  |  SAINT database layer : Design and Rationale SAINT extended Qt DB drivers Standard Qt SAINT extended drivers QSqlDriver SqlDriverExt QODBCDriver AccessDriver QMySqlDriver MySqlDriver Other driver Future other drivers
André Somers  |  5  |  SAINT database layer : Design and Rationale SAINT extended Qt DB drivers 2 //createtable (simplified) QSqlRecordrecord; foreach (QSqlField field, table->fieldList) { record.append(field); } foreach(QStringrelationName, table->fkRelations) { Relation* rel = m_relations.value(relationName); QSqlFieldfkField(QString("%1_%2")        .arg(tableName(rel->tableOne)) 	       .arg(rel->fieldOne), QVariant::UInt); fkField.setLength(30); record.append(fkField); } sql= m_sqlDriver->sqlStatement(SqlDriverExt::CreateTableStatement,  table->name, record); QSqlQueryquery(sql, m_db); Construct object-based representation of the desired table structure SqlDriverExt instance One of the new sqlStatement types Use representation to create SQL
New DDL statement types CreateTableStatement AlterTableAddFieldStatement AlterTableDropFieldStatement AlterTableModifyFieldStatement DropTableStatement CreateViewStatement DropViewStatement CreateIndexStatement DropDatabaseStatement
Other added features Create-if-not-exists Use database templates List databases on a server RAII class for transactions Return information on installed drivers: Human readable name Icon Server or file based Default settings for UI (like standard port number) Workarounds for some smaller Qt SQL issues
Unifying the UI Goals: Unified way to select a database independent of the type Keep history of recently used databases for easy re-selecting Re-usable components for selection for integration in all tools Treat all the information on a database as a single unit of information Avoid special-casing for different types of databases
Resulting UI André Somers  |  9  | SAINT database layer: design and rationale Drop-down box for easy re-selecting recently used databases Access to more databases List is provided by proxy on custom model Icons representing database type Unique alias for each used database
Resulting UI (cont) André Somers  |  10  | SAINT database layer: design and rationale Tabs to switch between already used databases and other databases Sortable Filter on alias  Human-readable dates and times of last use
Resulting UI (cont) André Somers  |  11  | SAINT database layer: design and rationale Drop down with discovered database drivers File selector dialog Recently used files Database alias (auto suggested)
Resulting UI (cont) André Somers  |  12  | SAINT database layer: design and rationale Existing databases on selected server
DatabaseDescription class Properties QString driverName QString fileName QString host QString hostAlias int port  QString user QString password QString databaseName QString alias QDateTime lastAccess Methods bool exists() bool isValid() State state() QSqlDatabase sqlDatabase(const Qstring&) SqlDriverExt::DriverInfo driverInfo() bool dropDatabase() Operators QDataStream& operator<<(QDataStream&, const DatabaseDescription&) QDataStream& operator>>(QDataStream&, DatabaseDescription&)
Transactions Perfect candidate for RAII Creating an instance on a QSqlDatabase begins a transaction Explicitly call commit() method to mark successful end of transaction If goes out of scope before commit is called, it tries a roll-back. André Somers  |  14  | SAINT database layer: design and rationale
Transaction RAII class classSqltransaction { public: explicitSqlTransaction(QSqlDriver* driver);     ~SqlTransaction(); QSqlDriver* driver() {return m_driver;} inlineboolinTransaction() {return m_inTransaction;} inlineboolactive() {return m_inTransaction;} boolrollBack(); boolcommit(); boolcommitOrRollBack(); boolsupported(); private:     //... }; André Somers  |  15  | SAINT database layer: design and rationale
Succes? Almost all database-dependent code has been removed from the code that is not part of the database layer presented. Still some pieces of code like this: Separate database template files are still needed All in all: pretty good, and certainly workable André Somers  |  16  | SAINT database layer: design and rationale
Remaining problems Documentation in Qt is lacking on this Approach is quite low-level. Higher level would be nice Query construction primitives are very basic: No sorting Only = operator in WHERE statements No limiting Not async André Somers  |  17  | SAINT database layer: design and rationale
Thanks Thank you for your attention. Questions & Discussion: What issues remain for you? André Somers  |  18  | SAINT database layer: design and rationale
André Somers  |  19  | SAINT database layer: design and rationale
André Somers  |  20  | SAINT database layer: design and rationale
Bio-energy, 2008-2009, 8414 publications, approx. 187400 links, in Gephi using Force Atlas. Image: E. Horlings.

More Related Content

What's hot

Comparison of dbms
Comparison of dbmsComparison of dbms
Comparison of dbms
Tech_MX
 

What's hot (20)

Using extended events for troubleshooting sql server
Using extended events for troubleshooting sql serverUsing extended events for troubleshooting sql server
Using extended events for troubleshooting sql server
 
Higher Productivity With Ase
Higher Productivity With AseHigher Productivity With Ase
Higher Productivity With Ase
 
SQL Server 2019 ctp2.2
SQL Server 2019 ctp2.2SQL Server 2019 ctp2.2
SQL Server 2019 ctp2.2
 
Microsoft's Hadoop Story
Microsoft's Hadoop StoryMicrosoft's Hadoop Story
Microsoft's Hadoop Story
 
Taming the Data Science Monster with A New ‘Sword’ – U-SQL
Taming the Data Science Monster with A New ‘Sword’ – U-SQLTaming the Data Science Monster with A New ‘Sword’ – U-SQL
Taming the Data Science Monster with A New ‘Sword’ – U-SQL
 
Comparison of dbms
Comparison of dbmsComparison of dbms
Comparison of dbms
 
Introducing U-SQL (SQLPASS 2016)
Introducing U-SQL (SQLPASS 2016)Introducing U-SQL (SQLPASS 2016)
Introducing U-SQL (SQLPASS 2016)
 
Introduction to datomic
Introduction to datomicIntroduction to datomic
Introduction to datomic
 
U-SQL Intro (SQLBits 2016)
U-SQL Intro (SQLBits 2016)U-SQL Intro (SQLBits 2016)
U-SQL Intro (SQLBits 2016)
 
U-SQL Meta Data Catalog (SQLBits 2016)
U-SQL Meta Data Catalog (SQLBits 2016)U-SQL Meta Data Catalog (SQLBits 2016)
U-SQL Meta Data Catalog (SQLBits 2016)
 
U-SQL User-Defined Operators (UDOs) (SQLBits 2016)
U-SQL User-Defined Operators (UDOs) (SQLBits 2016)U-SQL User-Defined Operators (UDOs) (SQLBits 2016)
U-SQL User-Defined Operators (UDOs) (SQLBits 2016)
 
Spring Data Cassandra
Spring Data CassandraSpring Data Cassandra
Spring Data Cassandra
 
Ssis 2008
Ssis 2008Ssis 2008
Ssis 2008
 
Oracle OpenWo2014 review part 03 three_paa_s_database
Oracle OpenWo2014 review part 03 three_paa_s_databaseOracle OpenWo2014 review part 03 three_paa_s_database
Oracle OpenWo2014 review part 03 three_paa_s_database
 
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
 
No sql
No sqlNo sql
No sql
 
1\9.SSIS 2008R2_Training - Introduction to SSIS
1\9.SSIS 2008R2_Training - Introduction to SSIS1\9.SSIS 2008R2_Training - Introduction to SSIS
1\9.SSIS 2008R2_Training - Introduction to SSIS
 
MOUG17: How to Build Multi-Client APEX Applications
MOUG17: How to Build Multi-Client APEX ApplicationsMOUG17: How to Build Multi-Client APEX Applications
MOUG17: How to Build Multi-Client APEX Applications
 
Cloud architectural patterns and Microsoft Azure tools
Cloud architectural patterns and Microsoft Azure toolsCloud architectural patterns and Microsoft Azure tools
Cloud architectural patterns and Microsoft Azure tools
 
05 entity framework
05 entity framework05 entity framework
05 entity framework
 

Viewers also liked

Viewers also liked (8)

Data in a Cloud - Introduction to Qt Cloud Services
Data in a Cloud - Introduction to Qt Cloud ServicesData in a Cloud - Introduction to Qt Cloud Services
Data in a Cloud - Introduction to Qt Cloud Services
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applications
 
CapSite 2011 U.S. HIE Study
CapSite 2011 U.S. HIE StudyCapSite 2011 U.S. HIE Study
CapSite 2011 U.S. HIE Study
 
Usage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on LinuxUsage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on Linux
 
Databases in Qt
Databases in QtDatabases in Qt
Databases in Qt
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 

Similar to Sql session qt cs

Data Handning with Sqlite for Android
Data Handning with Sqlite for AndroidData Handning with Sqlite for Android
Data Handning with Sqlite for Android
Jakir Hossain
 
android sqlite
android sqliteandroid sqlite
android sqlite
Deepa Rani
 

Similar to Sql session qt cs (20)

Sql server basics
Sql server basicsSql server basics
Sql server basics
 
SQL Azure the database in the cloud
SQL Azure the database in the cloud SQL Azure the database in the cloud
SQL Azure the database in the cloud
 
Data Handning with Sqlite for Android
Data Handning with Sqlite for AndroidData Handning with Sqlite for Android
Data Handning with Sqlite for Android
 
SQL Server 2008 for Developers
SQL Server 2008 for DevelopersSQL Server 2008 for Developers
SQL Server 2008 for Developers
 
SQLSaturday#290_Kiev_WindowsAzureDatabaseForBeginners
SQLSaturday#290_Kiev_WindowsAzureDatabaseForBeginnersSQLSaturday#290_Kiev_WindowsAzureDatabaseForBeginners
SQLSaturday#290_Kiev_WindowsAzureDatabaseForBeginners
 
android sqlite
android sqliteandroid sqlite
android sqlite
 
PASS Summit - SQL Server 2017 Deep Dive
PASS Summit - SQL Server 2017 Deep DivePASS Summit - SQL Server 2017 Deep Dive
PASS Summit - SQL Server 2017 Deep Dive
 
Azure for ug
Azure for ugAzure for ug
Azure for ug
 
Sql Sever Presentation.pptx
Sql Sever Presentation.pptxSql Sever Presentation.pptx
Sql Sever Presentation.pptx
 
KoprowskiT_SQLSat230_Rheinland_SQLAzure-fromPlantoBackuptoCloud
KoprowskiT_SQLSat230_Rheinland_SQLAzure-fromPlantoBackuptoCloudKoprowskiT_SQLSat230_Rheinland_SQLAzure-fromPlantoBackuptoCloud
KoprowskiT_SQLSat230_Rheinland_SQLAzure-fromPlantoBackuptoCloud
 
Sql azure dec_2010 Lynn & Ike
Sql azure dec_2010 Lynn & IkeSql azure dec_2010 Lynn & Ike
Sql azure dec_2010 Lynn & Ike
 
What’s new in SQL Server 2017
What’s new in SQL Server 2017What’s new in SQL Server 2017
What’s new in SQL Server 2017
 
Brk2051 sql server on linux and docker
Brk2051 sql server on linux and dockerBrk2051 sql server on linux and docker
Brk2051 sql server on linux and docker
 
Day2
Day2Day2
Day2
 
Microsoft SQL server 2017 Level 300 technical deck
Microsoft SQL server 2017 Level 300 technical deckMicrosoft SQL server 2017 Level 300 technical deck
Microsoft SQL server 2017 Level 300 technical deck
 
SQLSaturday#290_Kiev_AdHocMaintenancePlansForBeginners
SQLSaturday#290_Kiev_AdHocMaintenancePlansForBeginnersSQLSaturday#290_Kiev_AdHocMaintenancePlansForBeginners
SQLSaturday#290_Kiev_AdHocMaintenancePlansForBeginners
 
Serverless Data Platform
Serverless Data PlatformServerless Data Platform
Serverless Data Platform
 
Database programming
Database programmingDatabase programming
Database programming
 
Chapter_2_Network_Operating_System_NOS_and_Windows_Network_Concepts.pptx
Chapter_2_Network_Operating_System_NOS_and_Windows_Network_Concepts.pptxChapter_2_Network_Operating_System_NOS_and_Windows_Network_Concepts.pptx
Chapter_2_Network_Operating_System_NOS_and_Windows_Network_Concepts.pptx
 
Sky High With Azure
Sky High With AzureSky High With Azure
Sky High With Azure
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Sql session qt cs

  • 1. April 20, 2011 Qt SQL module SAINT adaptations & workarounds André Somers | 1
  • 2. André Somers | 2 | SAINT database layer : Design and Rationale Database use case Situation: All data stored in Relational Database, one database foreachstudy OriginallyusingMS Access Making database independent; first target MySql Problem: SQL dialects Different names and limitationsfor data types Solution: No actual SQL code in code Query textsgeneratedby (extended) SQL driverforQt
  • 3. André Somers | 3 | SAINT database layer : Design and Rationale Qt & Databases Qt drivers do not support DDL by default No way to generate SQL to manipulate data structures Solution: custom extension to Qt SQL driver model Qt SQL drivers are plugins New drivers subclassed from standard driver (so they can still be used where you’d otherwise use other drivers), but have an extended base to allow for more functionality.
  • 4. André Somers | 4 | SAINT database layer : Design and Rationale SAINT extended Qt DB drivers Standard Qt SAINT extended drivers QSqlDriver SqlDriverExt QODBCDriver AccessDriver QMySqlDriver MySqlDriver Other driver Future other drivers
  • 5. André Somers | 5 | SAINT database layer : Design and Rationale SAINT extended Qt DB drivers 2 //createtable (simplified) QSqlRecordrecord; foreach (QSqlField field, table->fieldList) { record.append(field); } foreach(QStringrelationName, table->fkRelations) { Relation* rel = m_relations.value(relationName); QSqlFieldfkField(QString("%1_%2") .arg(tableName(rel->tableOne)) .arg(rel->fieldOne), QVariant::UInt); fkField.setLength(30); record.append(fkField); } sql= m_sqlDriver->sqlStatement(SqlDriverExt::CreateTableStatement, table->name, record); QSqlQueryquery(sql, m_db); Construct object-based representation of the desired table structure SqlDriverExt instance One of the new sqlStatement types Use representation to create SQL
  • 6. New DDL statement types CreateTableStatement AlterTableAddFieldStatement AlterTableDropFieldStatement AlterTableModifyFieldStatement DropTableStatement CreateViewStatement DropViewStatement CreateIndexStatement DropDatabaseStatement
  • 7. Other added features Create-if-not-exists Use database templates List databases on a server RAII class for transactions Return information on installed drivers: Human readable name Icon Server or file based Default settings for UI (like standard port number) Workarounds for some smaller Qt SQL issues
  • 8. Unifying the UI Goals: Unified way to select a database independent of the type Keep history of recently used databases for easy re-selecting Re-usable components for selection for integration in all tools Treat all the information on a database as a single unit of information Avoid special-casing for different types of databases
  • 9. Resulting UI André Somers | 9 | SAINT database layer: design and rationale Drop-down box for easy re-selecting recently used databases Access to more databases List is provided by proxy on custom model Icons representing database type Unique alias for each used database
  • 10. Resulting UI (cont) André Somers | 10 | SAINT database layer: design and rationale Tabs to switch between already used databases and other databases Sortable Filter on alias Human-readable dates and times of last use
  • 11. Resulting UI (cont) André Somers | 11 | SAINT database layer: design and rationale Drop down with discovered database drivers File selector dialog Recently used files Database alias (auto suggested)
  • 12. Resulting UI (cont) André Somers | 12 | SAINT database layer: design and rationale Existing databases on selected server
  • 13. DatabaseDescription class Properties QString driverName QString fileName QString host QString hostAlias int port QString user QString password QString databaseName QString alias QDateTime lastAccess Methods bool exists() bool isValid() State state() QSqlDatabase sqlDatabase(const Qstring&) SqlDriverExt::DriverInfo driverInfo() bool dropDatabase() Operators QDataStream& operator<<(QDataStream&, const DatabaseDescription&) QDataStream& operator>>(QDataStream&, DatabaseDescription&)
  • 14. Transactions Perfect candidate for RAII Creating an instance on a QSqlDatabase begins a transaction Explicitly call commit() method to mark successful end of transaction If goes out of scope before commit is called, it tries a roll-back. André Somers | 14 | SAINT database layer: design and rationale
  • 15. Transaction RAII class classSqltransaction { public: explicitSqlTransaction(QSqlDriver* driver); ~SqlTransaction(); QSqlDriver* driver() {return m_driver;} inlineboolinTransaction() {return m_inTransaction;} inlineboolactive() {return m_inTransaction;} boolrollBack(); boolcommit(); boolcommitOrRollBack(); boolsupported(); private: //... }; André Somers | 15 | SAINT database layer: design and rationale
  • 16. Succes? Almost all database-dependent code has been removed from the code that is not part of the database layer presented. Still some pieces of code like this: Separate database template files are still needed All in all: pretty good, and certainly workable André Somers | 16 | SAINT database layer: design and rationale
  • 17. Remaining problems Documentation in Qt is lacking on this Approach is quite low-level. Higher level would be nice Query construction primitives are very basic: No sorting Only = operator in WHERE statements No limiting Not async André Somers | 17 | SAINT database layer: design and rationale
  • 18. Thanks Thank you for your attention. Questions & Discussion: What issues remain for you? André Somers | 18 | SAINT database layer: design and rationale
  • 19. André Somers | 19 | SAINT database layer: design and rationale
  • 20. André Somers | 20 | SAINT database layer: design and rationale
  • 21. Bio-energy, 2008-2009, 8414 publications, approx. 187400 links, in Gephi using Force Atlas. Image: E. Horlings.