{"id":738640,"date":"2020-10-08T16:43:29","date_gmt":"2020-10-08T23:43:29","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-research-item&#038;p=738640"},"modified":"2021-04-06T17:07:05","modified_gmt":"2021-04-07T00:07:05","slug":"harmonizing-the-declarative-and-imperative-in-database-systems","status":"publish","type":"msr-video","link":"https:\/\/www.microsoft.com\/en-us\/research\/video\/harmonizing-the-declarative-and-imperative-in-database-systems\/","title":{"rendered":"Harmonizing the declarative and imperative in database systems"},"content":{"rendered":"<p>Most relational database engines allow users to express their intent with both declarative SQL and imperative functions\/procedures, and practitioners often combine the two in database applications. But while today\u2019s database systems employ highly sophisticated techniques to optimize and evaluate declarative SQL statements, the evaluation of imperative programs has largely remained naive and inefficient. This has limited their use in many performance-critical situations despite imperative programming offering several benefits over SQL.<\/p>\n<p>In this webinar, Karthik Ramachandra, a Principal Engineering Manager who heads the Azure SQL Database R & D India organization at Microsoft, will take you on a journey addressing this important but often overlooked problem. First, he\u2019ll describe how the declarative and imperative styles of programming are intertwined in today\u2019s database systems and explain the challenges faced by practitioners. Then, he\u2019ll address why this problem has lingered without a solution for years and what makes it unique. He\u2019ll also delve into the details of Froid and Aggify, two related techniques for evaluating imperative programs in database systems that result in performance improvements of up to multiple orders of magnitude over the existing state of the art.<\/p>\n<p>Together, you\u2019ll explore:<\/p>\n<ul>\n<li>The interplay of declarative and imperative styles of programming in database systems<\/li>\n<li>The root cause of the performance disparity between these two styles<\/li>\n<li>The recent developments with Froid and Aggify, which blend technologies from compilers and database query optimizers seamlessly to get the best of both programming styles<\/li>\n<li>An experimental evaluation that demonstrates how these techniques harmonize the two disparate programming styles for a large class of database applications<\/li>\n<\/ul>\n<p><strong>Resource list:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/project\/froid\/\">Froid homepage<\/a><\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/project\/aggify\/\">Aggify homepage<\/a><\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/blog\/optimizing-imperative-functions-in-relational-databases-with-froid\/\">Optimizing imperative functions in relational databases with Froid<\/a> (Blog)<\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/techcommunity.microsoft.com\/t5\/azure-sql-database\/introducing-scalar-udf-inlining\/ba-p\/386270\">Introducing Scalar UDF Inlining<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> (Blog)<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/podcast\/froid-and-the-relational-database-query-quandry-with-dr-karthik-ramachandra\/\">Froid and the relational database query quandary with Dr. Karthik Ramachandra<\/a> (Podcast)<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/froid-optimization-of-imperative-programs-in-a-relational-database\/\">Froid: Optimization of Imperative Programs in a Relational Database<\/a> (Paper)<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/blackmagic-automatic-inlining-of-scalar-udfs-into-sql-queries-with-froid\/\">BlackMagic: Automatic Inlining of Scalar UDFs into SQL Queries with Froid<\/a> (Paper)<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/aggify-lifting-the-curse-of-cursor-loops-using-custom-aggregates\/\">Aggify: Lifting the Curse of Cursor Loops using Custom Aggregates<\/a> (Paper)<\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/youtu.be\/Xyvpcf2RtO4\" target=\"_blank\" rel=\"noopener noreferrer\">Invited talk at University of Washington, Seattle, March 2019<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<\/ul>\n<p>*This on-demand webinar features a previously recorded Q&A session and open captioning.<\/p>\n<p>Explore more Microsoft Research webinars: <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/aka.ms\/msrwebinars\">https:\/\/aka.ms\/msrwebinars<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most relational database engines allow users to express their intent with both declarative SQL and imperative functions\/procedures, and practitioners often combine the two in database applications. But while today\u2019s database systems employ highly sophisticated techniques to optimize and evaluate declarative SQL statements, the evaluation of imperative programs has largely remained naive and inefficient. This has [&hellip;]<\/p>\n","protected":false},"featured_media":738643,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr_hide_image_in_river":0,"footnotes":""},"research-area":[13563],"msr-video-type":[],"msr-locale":[268875],"msr-post-option":[],"msr-session-type":[],"msr-impact-theme":[],"msr-pillar":[],"msr-episode":[],"msr-research-theme":[],"class_list":["post-738640","msr-video","type-msr-video","status-publish","has-post-thumbnail","hentry","msr-research-area-data-platform-analytics","msr-locale-en_us"],"msr_download_urls":"","msr_external_url":"https:\/\/youtu.be\/V_AoQsdgJB8","msr_secondary_video_url":"","msr_video_file":"","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/738640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-video"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/738640\/revisions"}],"predecessor-version":[{"id":738649,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/738640\/revisions\/738649"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/738643"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=738640"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=738640"},{"taxonomy":"msr-video-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video-type?post=738640"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=738640"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=738640"},{"taxonomy":"msr-session-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-session-type?post=738640"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=738640"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=738640"},{"taxonomy":"msr-episode","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-episode?post=738640"},{"taxonomy":"msr-research-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-theme?post=738640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}