This document outlines Kumar Rajeev Rastogi's presentation on using native compilation, also known as schema binding, to improve PostgreSQL performance. It discusses trends toward in-memory databases and the need to reduce CPU instructions. Three methods for generating specialized access functions for tuples based on table schemas are described: 1) changing the tuple format, 2) using existing macros, and 3) reordering columns. Performance tests on TPC-H and hash joins show improvements of up to 36% and 23% respectively through dramatic reductions in CPU instructions via schema binding.
It talks about native compilation technology, why it is required, what it is?
Also how we can apply this technology to compile table and procedure to achieve considerable performance gain with very minimal changes.
An autonomous transaction has its own COMMIT and ROLLBACK scope to ensure that its outcome does not effect the caller’s uncommitted changes. Additionally, the COMMITs and ROLLBACK in the calling transaction should not effect the changes that were finalized on the completion of autonomous transaction itself.
The document discusses improving readability and performance in DataWeave 2.0. It explains that DataWeave is an expression-based language which can lead to nested function calls that are difficult to read. It presents using declarations and do statements in DataWeave 2.0 to write code in a more imperative style with improved readability and performance by avoiding unnecessary calculations. A real-world example of calculating account balances is provided to demonstrate transforming nested expressions into a more readable style using declarations and do statements.
This document provides an introduction to DataWeave, a functional programming language for data transformations. It outlines some key concepts of DataWeave including that (1) it uses expressions instead of statements, (2) data is immutable, and (3) functions are the main tool for computation. The document recommends fully understanding functions and higher-order functions to effectively use DataWeave. It provides some practical tips for pattern matching, avoiding repeated calculations, and creating reusable functions through composition.
Architecture of Native XML Database Sednamaria.grineva
Sedna is a document database with APIs for C, Java, Scheme, OmniMark, Python, PHP, and .Net. The core C API allows for session management, transactions, query execution and result processing, and data loading. The Sedna architecture also includes an open socket protocol and extensibility of the basic C API to create new APIs.
Sedna XML Database: Query Parser & Optimizing RewriterIvan Shcheklein
The document discusses Sedna, an XML query parser and optimizer. It describes:
1) The goals of supporting a wide range of queries while achieving high performance.
2) The query processing steps of parsing, analysis, optimization, and physical plan generation.
3) The optimizing rewriter removes unnecessary operations through rewriting rules like combining // steps or removing duplicate nodes.
Generative Programming In The Large - Applied C++ meta-programmingSchalk Cronjé
Digs into the details of effective generative programming in C++. Major focus on using meta-programming techniques to create efficient, low cyclomatic complexity in artefacts.
XQuery Triggers in Native XML Database Sednamaria.grineva
XQuery triggers allow triggering actions in response to XML document changes in Sedna, an XML database. Triggers are defined using XQuery and can fire before or after insert, delete, or replace operations on nodes or entire statements. Triggers enable capabilities like integrity constraints and statistics monitoring. Sedna implements triggers efficiently using fixators on the schema to quickly detect triggered updates.
It talks about native compilation technology, why it is required, what it is?
Also how we can apply this technology to compile table and procedure to achieve considerable performance gain with very minimal changes.
An autonomous transaction has its own COMMIT and ROLLBACK scope to ensure that its outcome does not effect the caller’s uncommitted changes. Additionally, the COMMITs and ROLLBACK in the calling transaction should not effect the changes that were finalized on the completion of autonomous transaction itself.
The document discusses improving readability and performance in DataWeave 2.0. It explains that DataWeave is an expression-based language which can lead to nested function calls that are difficult to read. It presents using declarations and do statements in DataWeave 2.0 to write code in a more imperative style with improved readability and performance by avoiding unnecessary calculations. A real-world example of calculating account balances is provided to demonstrate transforming nested expressions into a more readable style using declarations and do statements.
This document provides an introduction to DataWeave, a functional programming language for data transformations. It outlines some key concepts of DataWeave including that (1) it uses expressions instead of statements, (2) data is immutable, and (3) functions are the main tool for computation. The document recommends fully understanding functions and higher-order functions to effectively use DataWeave. It provides some practical tips for pattern matching, avoiding repeated calculations, and creating reusable functions through composition.
Architecture of Native XML Database Sednamaria.grineva
Sedna is a document database with APIs for C, Java, Scheme, OmniMark, Python, PHP, and .Net. The core C API allows for session management, transactions, query execution and result processing, and data loading. The Sedna architecture also includes an open socket protocol and extensibility of the basic C API to create new APIs.
Sedna XML Database: Query Parser & Optimizing RewriterIvan Shcheklein
The document discusses Sedna, an XML query parser and optimizer. It describes:
1) The goals of supporting a wide range of queries while achieving high performance.
2) The query processing steps of parsing, analysis, optimization, and physical plan generation.
3) The optimizing rewriter removes unnecessary operations through rewriting rules like combining // steps or removing duplicate nodes.
Generative Programming In The Large - Applied C++ meta-programmingSchalk Cronjé
Digs into the details of effective generative programming in C++. Major focus on using meta-programming techniques to create efficient, low cyclomatic complexity in artefacts.
XQuery Triggers in Native XML Database Sednamaria.grineva
XQuery triggers allow triggering actions in response to XML document changes in Sedna, an XML database. Triggers are defined using XQuery and can fire before or after insert, delete, or replace operations on nodes or entire statements. Triggers enable capabilities like integrity constraints and statistics monitoring. Sedna implements triggers efficiently using fixators on the schema to quickly detect triggered updates.
Presentation done at the historic 20 yeras of C++ conference in Las Vegas 2005. This is also the first time I ever spoke on the topic of combing generative programming and C++ template metaprogramming
MuleSoft Nashik Virtual Meetup#3 - Deep Dive Into DataWeave and its ModuleJitendra Bafna
Deep Dive Into DataWeave and its Modules
The document discusses DataWeave, MuleSoft's data transformation language. It covers DataWeave modules, operators, working with arrays and objects, and Mule runtime features. Key topics include DataWeave fundamentals like data types, reading/writing data, variables, operators, and flow control. Functions, filtering, mapping, reducing, and updating arrays and objects are also summarized.
Introduction to JDBC and database access in web applicationsFulvio Corno
Introduction to the JDBC standard and best practices for database access from Web Applications.
Materiale realizzato per il corso di Sistemi Informativi Aziendali del Politecnico di Torino - http://bit.ly/sistinfo
Comparing different concurrency models on the JVMMario Fusco
This document compares different concurrency models on the JVM, including the native Java concurrency model based on threads, semaphores, and locks. It discusses the pros and cons of threads and locks, including issues around non-determinism from shared mutable state. Functional programming with immutable data and internal iteration is presented as an alternative that allows for free parallelism. The document also covers actors and their message passing approach, as well as software transactional memory.
This document discusses using JDBC to access databases from Java applications like JSP pages. It covers loading the appropriate JDBC driver, establishing a connection with the database using a connection URL, executing SQL statements using Statement objects to retrieve and process result sets, and closing the connection when done. The core steps are to load the driver, get a connection, create statements, execute queries/updates, process results, and close the connection.
Im zweiten Teil seiner OData Session zeigt Rainer Stropek, wie man eigene OData-Provider entwickelt. In einem durchgängigen Beispiel demonstriert er, wie man erst einen LINQ-Provider und darauf aufbauend einen OData-konformen REST Service erstellt und von verschiedenen Programmiersprachen und Tools darauf zugreift. In der Session werden Grundkenntnisse von OData und LINQ vorausgesetzt.
The document discusses different procedural SQL concepts like cursors, user defined functions, and stored procedures. It provides examples of creating functions that return values and tables, as well as procedures that update data. The examples demonstrate how to define parameters, return values, and write PL/SQL code within functions and procedures to perform tasks like updating records and returning results.
This document provides an overview of optimizing stored procedure performance in SQL Server 2000. It discusses the initial processing of stored procedures, including resolution, compilation, optimization and execution. It covers issues that can cause recompilation of stored procedures and different options for handling recompilation. The document also provides best practices for naming conventions, writing solid code to avoid excessive recompilations, and detecting recompilations. It recommends testing recompilation behavior and using modular code and statement recompilation where appropriate. The overview aims to help optimize stored procedure performance.
The document discusses practical generative programming. It defines generative programming as automatically manufacturing customized products from reusable components using configuration knowledge. It describes the key elements and steps of generative programming. It discusses strategies for implementing generative programming in C++, including using templates and traits classes to configure generic components. It provides an example of how to capture configuration metadata in XML to define attributes like port ranges and generate C++ code.
The document summarizes the architecture and features of the Sedna XML database query executor. It provides a pipelined and efficient execution engine with optimizations like external sorting. It supports the full XQuery standard and has extensible interfaces for additional functions and connections to other databases. Benchmarks show Sedna outperforms competitors on common queries.
OOP Course " Object oriented programming" using java technology , slide is talking about the Java langauge Basics which need to be understood to start learning OOP
This document discusses SystemVerilog assertions (SVA). It introduces SVA and explains that assertions are used to document design functionality, check design intent is met, and determine if verification tested the design. Assertions can be specified by the design or verification engineer. The document outlines the key building blocks of SVA like sequences, properties, and assertions. It provides examples of different types of assertions and how they are used. Key concepts discussed include implication, timing windows, edge detection, and repetition operators.
Scala is a multi-paradigm programming language that blends object-oriented and functional programming. It is designed to express common programming patterns in a concise, elegant, and type-safe way. Scala runs on the Java Virtual Machine and interoperates seamlessly with Java, but also integrates concepts from languages such as Haskell, ML and Ruby. Some key features of Scala include support for functional programming, a static type system with type inference, pattern matching, actors and immutable data structures.
JDBC is an API that allows Java programs to connect to databases. It provides methods for establishing a connection, executing SQL statements, and retrieving results. The basic steps are to load a database driver, connect to the database, create statements to send queries and updates, get result sets, and close connections. JDBC supports accessing many types of data sources and provides metadata about the database schema.
Writing code that writes code - Nguyen LuongVu Huy
“The Pragmatic Programmer” admonished us all to “write code that writes code”: use code generators to increase productivity and avoid duplication. The language communities have clearly caught on, as more and more frameworks generate code at compile time: Project Lombok, Google Auto, and more.
This session reviews these approaches including examples of how and why we’d want to do this.
We will see newest Java language tools, write our own AST tranform and look at some amazing libraries based on these techniques.
Bio: Nguyen Luong is a senior java technical lead at Ekino Vietnam. He likes to research new technologies and solve security challenges.
The document discusses queues and priority queues. It defines a queue as a waiting line that grows by adding elements to its end and shrinks by taking elements from its front. Common queue operations include enqueue, dequeue, front, clear, isEmpty. Queues follow FIFO order. Priority queues allow elements to be dequeued out of order based on priority. Array and linked list implementations of regular and priority queues are presented. Applications discussed include round robin scheduling, waiting lists, and shared resource access.
Scala is a programming language that runs on the JVM and fuses functional and object-oriented paradigms. It aims to provide functional programming for programmers with an imperative mindset. Key features include functions as first-class values, pattern matching, traits for composition, and seamless interoperability with Java. While some features appear to be language features, many are actually implemented via libraries. The Scala community is growing with adoption by companies and increasing support in tools and publications.
This document discusses using SSD caching to improve read performance. It describes a read-only SSD cache that stores clean blocks identical to those on the HDD. The SSD cache provides the same integrity guarantees as reading from the HDD. The SSD daemon manages the SSD cache map in RAM and saves/restores it to handle adding/removing SSDs or recovering from failures while minimizing RAM usage. It also controls SSD writes to balance I/O and ensure performance, lifetime, and read latency requirements are met through optimal SSD data layout.
Presentation done at the historic 20 yeras of C++ conference in Las Vegas 2005. This is also the first time I ever spoke on the topic of combing generative programming and C++ template metaprogramming
MuleSoft Nashik Virtual Meetup#3 - Deep Dive Into DataWeave and its ModuleJitendra Bafna
Deep Dive Into DataWeave and its Modules
The document discusses DataWeave, MuleSoft's data transformation language. It covers DataWeave modules, operators, working with arrays and objects, and Mule runtime features. Key topics include DataWeave fundamentals like data types, reading/writing data, variables, operators, and flow control. Functions, filtering, mapping, reducing, and updating arrays and objects are also summarized.
Introduction to JDBC and database access in web applicationsFulvio Corno
Introduction to the JDBC standard and best practices for database access from Web Applications.
Materiale realizzato per il corso di Sistemi Informativi Aziendali del Politecnico di Torino - http://bit.ly/sistinfo
Comparing different concurrency models on the JVMMario Fusco
This document compares different concurrency models on the JVM, including the native Java concurrency model based on threads, semaphores, and locks. It discusses the pros and cons of threads and locks, including issues around non-determinism from shared mutable state. Functional programming with immutable data and internal iteration is presented as an alternative that allows for free parallelism. The document also covers actors and their message passing approach, as well as software transactional memory.
This document discusses using JDBC to access databases from Java applications like JSP pages. It covers loading the appropriate JDBC driver, establishing a connection with the database using a connection URL, executing SQL statements using Statement objects to retrieve and process result sets, and closing the connection when done. The core steps are to load the driver, get a connection, create statements, execute queries/updates, process results, and close the connection.
Im zweiten Teil seiner OData Session zeigt Rainer Stropek, wie man eigene OData-Provider entwickelt. In einem durchgängigen Beispiel demonstriert er, wie man erst einen LINQ-Provider und darauf aufbauend einen OData-konformen REST Service erstellt und von verschiedenen Programmiersprachen und Tools darauf zugreift. In der Session werden Grundkenntnisse von OData und LINQ vorausgesetzt.
The document discusses different procedural SQL concepts like cursors, user defined functions, and stored procedures. It provides examples of creating functions that return values and tables, as well as procedures that update data. The examples demonstrate how to define parameters, return values, and write PL/SQL code within functions and procedures to perform tasks like updating records and returning results.
This document provides an overview of optimizing stored procedure performance in SQL Server 2000. It discusses the initial processing of stored procedures, including resolution, compilation, optimization and execution. It covers issues that can cause recompilation of stored procedures and different options for handling recompilation. The document also provides best practices for naming conventions, writing solid code to avoid excessive recompilations, and detecting recompilations. It recommends testing recompilation behavior and using modular code and statement recompilation where appropriate. The overview aims to help optimize stored procedure performance.
The document discusses practical generative programming. It defines generative programming as automatically manufacturing customized products from reusable components using configuration knowledge. It describes the key elements and steps of generative programming. It discusses strategies for implementing generative programming in C++, including using templates and traits classes to configure generic components. It provides an example of how to capture configuration metadata in XML to define attributes like port ranges and generate C++ code.
The document summarizes the architecture and features of the Sedna XML database query executor. It provides a pipelined and efficient execution engine with optimizations like external sorting. It supports the full XQuery standard and has extensible interfaces for additional functions and connections to other databases. Benchmarks show Sedna outperforms competitors on common queries.
OOP Course " Object oriented programming" using java technology , slide is talking about the Java langauge Basics which need to be understood to start learning OOP
This document discusses SystemVerilog assertions (SVA). It introduces SVA and explains that assertions are used to document design functionality, check design intent is met, and determine if verification tested the design. Assertions can be specified by the design or verification engineer. The document outlines the key building blocks of SVA like sequences, properties, and assertions. It provides examples of different types of assertions and how they are used. Key concepts discussed include implication, timing windows, edge detection, and repetition operators.
Scala is a multi-paradigm programming language that blends object-oriented and functional programming. It is designed to express common programming patterns in a concise, elegant, and type-safe way. Scala runs on the Java Virtual Machine and interoperates seamlessly with Java, but also integrates concepts from languages such as Haskell, ML and Ruby. Some key features of Scala include support for functional programming, a static type system with type inference, pattern matching, actors and immutable data structures.
JDBC is an API that allows Java programs to connect to databases. It provides methods for establishing a connection, executing SQL statements, and retrieving results. The basic steps are to load a database driver, connect to the database, create statements to send queries and updates, get result sets, and close connections. JDBC supports accessing many types of data sources and provides metadata about the database schema.
Writing code that writes code - Nguyen LuongVu Huy
“The Pragmatic Programmer” admonished us all to “write code that writes code”: use code generators to increase productivity and avoid duplication. The language communities have clearly caught on, as more and more frameworks generate code at compile time: Project Lombok, Google Auto, and more.
This session reviews these approaches including examples of how and why we’d want to do this.
We will see newest Java language tools, write our own AST tranform and look at some amazing libraries based on these techniques.
Bio: Nguyen Luong is a senior java technical lead at Ekino Vietnam. He likes to research new technologies and solve security challenges.
The document discusses queues and priority queues. It defines a queue as a waiting line that grows by adding elements to its end and shrinks by taking elements from its front. Common queue operations include enqueue, dequeue, front, clear, isEmpty. Queues follow FIFO order. Priority queues allow elements to be dequeued out of order based on priority. Array and linked list implementations of regular and priority queues are presented. Applications discussed include round robin scheduling, waiting lists, and shared resource access.
Scala is a programming language that runs on the JVM and fuses functional and object-oriented paradigms. It aims to provide functional programming for programmers with an imperative mindset. Key features include functions as first-class values, pattern matching, traits for composition, and seamless interoperability with Java. While some features appear to be language features, many are actually implemented via libraries. The Scala community is growing with adoption by companies and increasing support in tools and publications.
This document discusses using SSD caching to improve read performance. It describes a read-only SSD cache that stores clean blocks identical to those on the HDD. The SSD cache provides the same integrity guarantees as reading from the HDD. The SSD daemon manages the SSD cache map in RAM and saves/restores it to handle adding/removing SSDs or recovering from failures while minimizing RAM usage. It also controls SSD writes to balance I/O and ensure performance, lifetime, and read latency requirements are met through optimal SSD data layout.
The document discusses how businesses need to build a data strategy and modernize their data platforms to harness the power of data from diverse and growing sources. It provides examples of how organizations like healthcare and energy companies are using technologies like machine learning, real-time analytics, and predictive modeling on data from various sources to improve outcomes, predict trends, and drive business decisions. The Microsoft data platform is positioned as helping businesses manage both traditional and new forms of data, gain insights faster, and transform into data-driven organizations through offerings like SQL Server, Azure, Power BI, and the Internet of Things.
SQL Server 2014 Extreme Transaction Processing (Hekaton) - BasicsTony Rogerson
Far from Hekaton being an extension of DBCC PINTABLE, it’s a huge new piece of functionality that can significantly improve the scalability of various data based scenarios – not just OLTP but also ETL and real-time BI.
This session will introduce Hekaton features, how and when to use it; it will be demo led giving Hekaton end-to-end: enabling it, create tables, index design, query considerations, native stored procedures, durability [or not], introduce methods of identifying what to put in memory or not.
San Francisco SQL Server User Group Meeting Feb 2009Mark Ginnebaugh
The document summarizes the agenda for the February 11, 2009 meeting of the San Francisco SQL Server User Group. The agenda includes introductions, a presentation by Paul Bertucci from Autodesk on database mirroring and snapshots in SQL Server 2008, a door prize drawing and Q&A. Additional details are provided on related user groups, sponsors, upcoming meetings and speakers, and announcements.
O documento discute as funcionalidades do In-Memory OLTP no SQL Server 2016, incluindo: 1) Armazenamento de dados diretamente na memória ao invés de páginas; 2) Novos tipos de índices como Hash e Range para melhor desempenho; 3) Procedures compiladas nativamente para execução em nível de máquina.
Quack Chat | Partitioning - Black Magic or Silver BulletIDERA Software
Many modern relational databases offer table and index partitioning - an advanced technique for breaking very large tables and indexes with millions to billions of rows into smaller buckets. But when and how should one use partitioning? What kinds of problems can it solve? What new problems does it introduce?
In this session Bert Scalzo and Scott Walz will answer all these questions and more with examples shown in DBArtisan and DB Optimizer.
The document discusses topics covered in an SQL Server Optimizer seminar, including:
- Optimizer limitations with filtered indexes and how redundant predicates may be needed.
- Forcing parallel query execution plans and actions that force serial plans.
- Statistics on ascending columns and how trace flags can address problems on large tables.
The document provides conclusions and key points from demos on each topic. It outlines an agenda for the seminar with times for presentations, breaks, and questions.
These are the slides which were used by Kumar Rajeev Rastogi of Huawei for his presentation at pgDay Asia 2016. He presented great idea about Native Compilation to improve CPU efficiency.
This document discusses Python database programming. It introduces databases and how they store data in tables connected through columns. It discusses SQL for creating, accessing, and manipulating database data. It then discusses how Python supports various databases and database operations. It covers the Python DB-API for providing a standard interface for database programming. It provides examples of connecting to a database, executing queries, and retrieving and inserting data.
The primary focus of this presentation is approaching the migration of a large, legacy data store into a new schema built with Django. Includes discussion of how to structure a migration script so that it will run efficiently and scale. Learn how to recognize and evaluate trouble spots.
Also discusses some general tips and tricks for working with data and establishing a productive workflow.
The document discusses strategies for migrating large amounts of legacy data from an old database into a new Django application. Some key points:
- Migrating data in batches and minimizing database queries per row processed can improve performance for large datasets.
- Tools like SQLAlchemy and Maatkit can help optimize the migration process.
- It's important to profile queries, enable logging/debugging, and design migrations that can resume/restart after failures or pause for maintenance.
- Preserving some legacy metadata like IDs on the new models allows mapping data between the systems. Declarative and modular code helps scale the migration tasks.
Migration To Multi Core - Parallel Programming ModelsZvi Avraham
The document discusses multi-core and many-core processors and parallel programming models. It provides an overview of hardware trends including increasing numbers of cores in CPUs and GPUs. It also covers parallel programming approaches like shared memory, message passing, data parallelism and task parallelism. Specific APIs discussed include Win32 threads, OpenMP, and Intel TBB.
This document summarizes machine learning concepts in Spark. It introduces Spark, its components including SparkContext, Resilient Distributed Datasets (RDDs), and common transformations and actions. Transformations like map, filter, join, and groupByKey are covered. Actions like collect, count, reduce are also discussed. A word count example in Spark using transformations and actions is provided to illustrate how to analyze text data in Spark.
Documentation: https://izumi.7mind.io/latest/release/doc/distage/
Github: https://github.com/pshirshov/izumi-r2
Pavel Shirshov - DIStage: purely functional programming without sacrificing modularity with modern dependency injection for Scala
- Modularity and its importance
- DI-like mechanisms and their issues in Scala
- Why people think that "DI doesn't compose with functional programming", and why that's not true
- Designing a staged DI, for wiring at runtime, at compile-time, or mixed
- Staging programs for reliability, power and performance
- The pains of supporting rich Scala types (incl. How to emulate kind-polymorphism in Scala 2)
- Garbage collection in DI for better tests and deployments
Pavel's bio: Language-agnostic software engineer, coding for 18 years,
10 years of hands-on commercial engineering experience.
Led a cluster orchestration team at Yandex, "the Russian Google"; implemented an internal orchestration solution, "ISS" (Scala/Java/C++), managing 50K+ physical hosts across 6 datacenters.
Today, Pavel owns Irish R&D company Septimal Mind.
SQLAlchemy is an object-relational mapper (ORM) for Python. It provides patterns for mapping database tables to objects and vice versa. The document discusses several ORM patterns from the book Patterns of Enterprise Application Architecture including:
- Unit of Work pattern which maintains a set of objects to save in a transaction. SQLAlchemy implements this with the Session object.
- Identity Map pattern which avoids duplicate objects for the same database record. SQLAlchemy implements this with its identity map.
- Lazy Load pattern which loads relationships and columns on demand to improve performance. SQLAlchemy uses lazy loading by default.
- Other patterns discussed include foreign key mapping, association table mapping, single/class table inheritance, and how different architectural patterns
This document provides release notes and supplementary information for Delphi 7. It notes that some components have been deprecated and recommends newer alternatives. It also describes changes made to string handling functions, warnings added by the compiler, and issues fixed in streaming of subcomponents. Finally, it provides notes on various other topics like Apache, UDDI, Windows XP input, and databases.
1. The document describes a midterm exam for a C++ programming course that consists of multiple choice questions and has a time limit of 2 hours.
2. It provides sample exam questions about C++ concepts like functions, variables, conditionals, and data types.
3. The student completed the exam, scoring 64 out of 100 points within the 2 hour time limit.
Compose is a Kotlin library for building user interfaces across platforms like Android, Desktop, and Web. It provides a declarative programming model that allows describing UI as composable functions of pure data. The Compose compiler plugin handles calling these functions and managing the underlying UI component tree efficiently as data changes over time. Compose uses techniques like positional memoization and gap buffers to optimize caching of UI nodes and state for each call site in a composable function. This allows Compose to rebuild the UI incrementally based on changes in input data.
Ruby on Rails is a web application framework written in Ruby that emphasizes convention over configuration and rapid development. It includes modules for modeling data with ActiveRecord, handling requests and responses with ActionController and ActionView, and additional features like routing and internationalization. The document then provides more details on the history, philosophy, main components, and features of Rails.
The document provides a biography and background information on Daniel N. Egan, including his roles as a Microsoft Regional Director, Microsoft MVP for ASP.Net, author, and speaker. It then outlines the topics to be covered in the presentation, including object relational mappers, language enhancements in C# and VB.Net, LINQ goals, fundamentals and usage.
C++ is an object-oriented programming language created by Bjarne Stroustrup in 1985 that maintains aspects of C while adding object-oriented features like classes. C++ can be used to create everything from small programs to large applications and is a powerful general-purpose language. Inheritance allows code reusability by creating new classes from existing classes or base classes, where derived classes inherit capabilities from base classes but can add their own features and refinements. Polymorphism enables objects to react differently to the same function call through virtual functions, allowing different classes that inherit from a base class to provide their own implementation of a function.
The document provides an overview of Daniel Egan's professional experience including his roles as a Microsoft Regional Director, Microsoft MVP for ASP.Net, Chief Architect at Odyssey Consulting Group, author, instructor, and his involvement with various .Net user groups. It then outlines topics to be covered including object relational mappers, language enhancements in VB.Net and C# 3.0, LINQ and LINQ to SQL.
This document provides instructions for setting up an EJB 3 project that integrates with the Struts framework. It explains how to create EJB and web projects using MyEclipse. It also describes adding required libraries, creating entity beans for Book and Customer objects, and adding JPA annotations to define primary keys and entity mappings.
This document provides instructions for setting up an EJB 3 project that integrates with the Struts web framework. It describes creating entity beans for Book and Customer objects and defining the relationship between them. It also covers implementing a stateless session bean with local and remote interfaces to perform basic CRUD operations using the entity manager. The tutorial uses PostgreSQL as the database and provides code samples for the entity beans, session bean, and persistence configuration file.
The document discusses parallel programming in .NET. It covers two main strategies for parallelism - data parallelism and task parallelism. For data parallelism, it describes using Parallel.For to partition work over collections. For task parallelism, it discusses using the Task Parallel Library to create and run independent tasks concurrently, allowing work to be distributed across multiple processors. It provides examples of creating tasks implicitly with Parallel.Invoke and explicitly by instantiating Task objects and passing delegates.
Fast federated SQL with Apache CalciteChris Baynes
This document discusses Apache Calcite, an open source framework for federated SQL queries. It provides an introduction to Calcite and its components. It then evaluates Calcite's performance on single data sources through benchmarks. Lastly, it proposes a hybrid approach to enable efficient federated queries using Calcite and Spark.
DevOps Consulting Company | Hire DevOps Servicesseospiralmantra
Spiral Mantra excels in providing comprehensive DevOps services, including Azure and AWS DevOps solutions. As a top DevOps consulting company, we offer controlled services, cloud DevOps, and expert consulting nationwide, including Houston and New York. Our skilled DevOps engineers ensure seamless integration and optimized operations for your business. Choose Spiral Mantra for superior DevOps services.
https://www.spiralmantra.com/devops/
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...kalichargn70th171
Visual testing plays a vital role in ensuring that software products meet the aesthetic requirements specified by clients in functional and non-functional specifications. In today's highly competitive digital landscape, users expect a seamless and visually appealing online experience. Visual testing, also known as automated UI testing or visual regression testing, verifies the accuracy of the visual elements that users interact with.
Manyata Tech Park Bangalore_ Infrastructure, Facilities and Morenarinav14
Located in the bustling city of Bangalore, Manyata Tech Park stands as one of India’s largest and most prominent tech parks, playing a pivotal role in shaping the city’s reputation as the Silicon Valley of India. Established to cater to the burgeoning IT and technology sectors
WWDC 2024 Keynote Review: For CocoaCoders AustinPatrick Weigel
Overview of WWDC 2024 Keynote Address.
Covers: Apple Intelligence, iOS18, macOS Sequoia, iPadOS, watchOS, visionOS, and Apple TV+.
Understandable dialogue on Apple TV+
On-device app controlling AI.
Access to ChatGPT with a guest appearance by Chief Data Thief Sam Altman!
App Locking! iPhone Mirroring! And a Calculator!!
Liberarsi dai framework con i Web Component.pptxMassimo Artizzu
In Italian
Presentazione sulle feature e l'utilizzo dei Web Component nell sviluppo di pagine e applicazioni web. Racconto delle ragioni storiche dell'avvento dei Web Component. Evidenziazione dei vantaggi e delle sfide poste, indicazione delle best practices, con particolare accento sulla possibilità di usare web component per facilitare la migrazione delle proprie applicazioni verso nuovi stack tecnologici.
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
The Rising Future of CPaaS in the Middle East 2024Yara Milbes
Explore "The Rising Future of CPaaS in the Middle East in 2024" with this comprehensive PPT presentation. Discover how Communication Platforms as a Service (CPaaS) is transforming communication across various sectors in the Middle East.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...XfilesPro
Wondering how X-Sign gained popularity in a quick time span? This eSign functionality of XfilesPro DocuPrime has many advancements to offer for Salesforce users. Explore them now!
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...Luigi Fugaro
Vector databases are transforming how we handle data, allowing us to search through text, images, and audio by converting them into vectors. Today, we'll dive into the basics of this exciting technology and discuss its potential to revolutionize our next-generation AI applications. We'll examine typical uses for these databases and the essential tools
developers need. Plus, we'll zoom in on the advanced capabilities of vector search and semantic caching in Java, showcasing these through a live demo with Redis libraries. Get ready to see how these powerful tools can change the game!
Nashik's top web development company, Upturn India Technologies, crafts innovative digital solutions for your success. Partner with us and achieve your goals
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
The Comprehensive Guide to Validating Audio-Visual Performances.pdfkalichargn70th171
Ensuring the optimal performance of your audio-visual (AV) equipment is crucial for delivering exceptional experiences. AV performance validation is a critical process that verifies the quality and functionality of your AV setup. Whether you're a content creator, a business conducting webinars, or a homeowner creating a home theater, validating your AV performance is essential.
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
Go Faster With Native Compilation
1. KUMAR RAJEEV RASTOGI
PRASANNA VENKATESH
TAO YE
(rajeevrastogi@huawei.com)
(prasanna.venkatesh@huawei.com)
(yetao1@huawei.com)
Go Faster With Native Compilation
PGCon 2015
18th June 2015
2. KUMAR RAJEEV RASTOGI
Senior Technical Leader at Huawei Technology for almost 7 years
Have worked to develop various features on PostgreSQL (for internal
projects) as well as on other In-House DB.
Active PostgreSQL community members, have contributed many patches.
Holds around 12 patents in my name in various DB technologies.
I have presented two papers in India PGDay (2014 and 2015).
Prior to this, worked at Aricent Technology for 3 years.
Blog - rajeevrastogi.blogspot.in
LinkedIn - http://in.linkedin.com/in/kumarrajeevrastogi
Who Am I?
4. The traditional database executors are based on the fact that “I/O cost dominates
execution”.These executor models are inefficient in terms of CPU instructions.
Now most of the workloads fits into main memory, which is consequence of two
broad trends :
1. Growth in the amount of memory (RAM) per node/machine
2. Prevalence of high speed SSD
Background
So now biggest bottleneck is CPU usage efficiency not I/O. Our problem
statement is to make our database more efficient in terms of CPU instructions –
there by leveraging the larger memory
Source:ICDEConference
5. Slowly database industries are reaching to a point where increase of
throughput has become very limited. Quoting from a paper on Hekaton -
The only real hope to increase throughput is to reduce the number of instructions
executed but the reduction needs to be dramatic. To go 10X faster, the engine must
execute 90% fewer instructions and yet still get the work done. To go 100X faster, it
must execute 99% fewer instructions.
Such a drastic reduction in instruction without
disturbing whole functionality is only possible by code specialization (a.k.a
Native Compilation or famously as LLVM) i.e. to generate code specific to
object/query.
Current Business Trend
6. Many DBs are moving into compilation technology to improve
performance by reducing the CPU instruction some of them are:
Hekaton (SQL Server 2014)
Oracle
MemSQL
Current Business Trend Contd…
Hekaton: Comparison of CPU efficiency for lookups
Source: Hekaton Paper
7. Native Compilation is a methodology to reduce CPU instructions by executing only
instruction specific to given query/objects unlike interpreted execution. Steps are:
1. Generate C-code specific to objects/query.
2. Compile C-code to generate DLL and load with server executable.
3. Call specialized function instead of generalized function.
Native Compilation
e.g. Expression: Col1 + 100
Traditional executor will requires 100’s of instruction to find all
combination of expression before final execution, whereas in vanilla c
code, it can directly execute in 2-3 instructions.
Source:ICDEConference
8. Cost model of specialized code can be expressed as:
cost of execution = generate specialized code
+ compilation
+ execute compiled code
Execution of compiled code is very efficient but generation of
specialized code and compiling same may be bit expensive affair. So in
order to drive down this cost:
1. Generate and compile the code once and use it many times; this
distributes the constant cost.
2. Improve the performance of generation and compilation
significantly.
Cost model
9. Any CPU intensive entity of database can be natively compiled, if they have
similar pattern on different execution. Some of the most popular one are:
Schema (Relation)
Procedure
Query
Algebraic expression
Note: We will target only Schema for this presentation.
What to Native Compile?
10. Property of each relation:
1. Number of attributes, their length and data-type are fixed.
2. Irrespective of any data, it is going to be stored in similar pattern.
3. Each attributes are accessed in similar pattern.
Disadvantage of current approach for each tuple access:
1. Loops for each attribute.
2. Property of all attributes are checked to take many decisions.
3. Executes many unwanted instructions.
Schema binding
11. So we can overcome the disadvantage by natively compiling the relation
based on its property to generate specialized code for each functions of
schema.
Schema Binding = Native Compilation of Relation
Benefit:
1. Each attribute access gets flattened.
2. All attribute property decision are taken during code generation.
3. No decision making at run-time.
4. Reduced CPU instruction.
Schema binding Contd…
12. Schema binding Contd…
CREATE
TABLE
Automatic
Code
generation
C DLL
LoadAll function
SQL QUERY
Compiled
Functions
Once a create table command
is issued, a C-file with all
specialized access function is
generated, which is in turns
gets loaded as DLL. These
loaded functions are used by
all SQL query accessing the
compiled table
13. Schema binding Contd…
This show overall
interaction with
schema bound. Any
query issued from
client can use
schema bound
function or normal
function depending
on the underlying
table.
14. Schema:
create table tbl (id1 int, id2 float,
id3 varchar(10),id4 bool);
Schema binding: Example
Field id1 and id2 is
going to be always
stored at same offset
and with same
alignment, no
change at run time.
Only variable length
attribute and
attribute following
this will have
variable offset.
15. Using current approach:
Access Using specialized code:
method-1:
method-2:
Conclusion: Specialized code uses fewer number of instruction compare to generalized code
and hence better performance.
Schema binding: Example
Each Line here
is macro, which
invokes
multiple
condition check
to decide the
action
if (thisatt->attlen != -1)
{
offset = att_align_nominal(off, thisatt->attalign)
values[1] = fetchatt(thisatt, tp + offset)
offset = att_addlength_pointer(off, thisatt->attlen,
tp + off);
}
values[1] = ((struct tbl_xxx*)tp)->id2;
offset = DOUBLEALIGN(offset);
values[1] = *((Datum *)(tp + offset));
offset += 8;
See details
about this in
further slides.
16. Solution can be categorized as:
1 Opting for schema bind.
2 Functions to be customized.
3 Customized function generation.
4 Loading of customized function.
5 Invocation of customized function.
6 How to generate dynamic library.
Schema Binding Solution
17. CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } |
UNLOGGED ] TABLE [ IF NOT EXISTS ] table …[ TABLESPACE
tablespace_name ] [SCHEMA_BOUNDED]
SCHEMA_BOUND is new option with
CREATETABLE to opt for code specialization.
Solution: Opting for schema bind tuple
18. Function Name (xxx relname_relid) Purpose
heap_compute_data_size_xxx To calculate size of the data part of the tuple
Heap_fill_tuple_xxx To fill the tuple with the data
Heap_deform_tuple_xxx Deform the heap tuple
Slot_deform_tuple_xxx
To deform the tuple at the end of scan to project
attribute
Nocachegetattr_xxx
To get one attribute value from the tuple for
vacuum case
Solution: Functions to be customized
19. Customized function for tuple access of a table can be categorized in 3
approaches:
Method-1 WithTuple format change
Method-2 Without changing the tuple format.
Method-3 Re-organize table columns internally to make all
fixed length and variable length attribute in
sequence.
Solution: Function Generation
20. A structure corresponding to relation will be created in such a way that
each attribute’s value/offset can be directly referenced by typecasting the
data buffer with structure.
e.g. Consider our earlier example table:
Solution: Function Generation-Method-1
Structure member variable
id1, id2 and id4 contains actual
value of column, whereas
id3_offset stores the offset of
the column id3, as during
create table it is not known the
size of the actual value going
to be stored. End of this
structure buffer will hold data
for variable size column and it
can be accessed based on the
corresponding offset stored.
typedef struct schemaBindTbl_xxx
{
int id1;
float id2;
short id3_offset;
bool id4;
/* Actual data for variable size
column*/
} SchemaBindTbl_xxxx;
create table tbl (id1 int, id2 float, id3 varchar(10), id4 bool);
21. Solution: Function Generation-Method-1 Contd…
ExistingTuple Format
NewTuple Format
All attribute
values stored in
sequence.
Value of fixed
length attribute
but offset of
variable length
attribute stored in
sequence. So
structure typecast
will give either
value or offset of
value.
22. So using this structure, tuple data can be stored as:
Fixed size data-type storage:
Variable size data-type storage:
Using this approach heap_fill_tuple function can be generated during create
table.
Solution: Function Generation-Method-1 Contd…
((SchemaBindTbl_xxxx*)data)->id1 = DatumGetXXX(values[attno]);
((SchemaBindTbl_xxxx*)data)->id3_offset = data_offset;
data_length = SIZE((char*)values[attno]);
SET_VARSIZE_SHORT(data + data_offset, data_length);
memcpy(data + data_offset + 1, VARDATA((char*)values[attno]), data_length -1);
data_offset += data_length;
23. Similarly, each attribute value from tuple can be accessed as:
Fixed size data-type access:
Variable size data-type access:
Using this approach all function related to deformation of tuple (i.e.
heap_deform_tuple, slot_deform_tuple and nocachegettr) can be generated
during create table.
Solution: Function Generation-Method-1 Contd…
values[attno] = ((SchemaBindTbl_xxxx*)data)->id1;
data_offset = ((SchemaBindTbl_xxxx*)data)->id3_offset ;
values[attno] = PointerGetDatum((char *) ((char*)tp + data_offset));
24. Advantage:
1. No dependency on previous attributes.
2. Any of the attribute value can be accessed directly.
3. Access of attribute value is very efficient as it will take very few
instructions.
Disadvantage:
1. Size of the tuple will increase leading to more memory consumption.
Solution: Function Generation-Method-1 Contd…
25. This method generates the customized functions without changing the
format of the tuple.
This approach uses slight variation of existing macros:
fetch_att
att_addlength_pointer
att_align_nominal
att_align_pointer
These macros takes many decision based on the data-type, its size of each
attributes which is going to be same for a relation.
So instead of using these macro for each tuple of a relation at run-
time, it is used once during table schema definition itself to generate all
customized function.
Solution: Function Generation-Method-2
26. So as per this mechanism, code for accessing float attribute will be as below:
Similarly access for all other data-type attributes can also
be generated.
Using the combination of other macro, customized code
for all other functions used for tuple access can be generated.
Solution: Function Generation-Method-2 Contd…
offset = DOUBLEALIGN(offset); Skipped alignment check
values[1] = *((Datum *)(tp + offset)); Skipped datum size check
offset += 8; Skipped attribute length check
27. Advantage:
1. Existing tested macro are used, so it is very safe.
2. No change in tuple format and size.
3. Reduces number of overall instruction by huge margin.
Disadvantage:
1. Dependency on previous attribute incase previous attribute is variable
length.
Solution: Function Generation-Method-2 Contd…
28. This method is intended to use advantages of previous methods i.e.
Make least number of attribute dependency
All fixed length attributes are grouped together to make initial list of
columns followed by all variable length columns. So all fixed length
attributes can be accessed directly. Change in column order will be
done during creation of table itself.
No change in tuple size,so access of tuple will be very efficient
In order to achieve this, we use Method-2 to generate specialized
code.
Solution: Function Generation-Method-3
29. E.g. Consider our earlier example:
create table tbl (id1 int, id2 float, id3 varchar(10), id4
bool);
Solution: Function Generation-Method-3 Contd…
So in this case, while
creating the table id1,
id2 and id4 will be
first 3 columns
followed by id3.
So access code can be generated directly during schema definition
without dependency on any run time parameter because all of the
attribute offset is fixed except of variable length attributes.
If there are more variable length attributes then they
will be stored after id3 and for them it will have to know the length of
the previous columns to find the exact offset.
30. Advantage:
1. Existing tested macro are used, so it is very safe.
2. No change in tuple format and size.
3. Reduces number of overall instruction by huge margin.
Disadvantage:
1. There will be still dependency among multiple variable length
attributes (if any).
Solution: Function Generation-Method-3 Contd…
31. Once we generate the code
corresponding to each access
function, the same gets written into
a C-file, which in turn gets
compiled to dynamic linked library
and then this dynamic library gets
loaded with server executable. So
now any function of the library can
be invoked directly from the server
executables.
Solution: Loading of customized functions
32. The generated C-file should be compiled to generate dynamic library,
which can be done using:
1. LLVM
Compilation using the LLVM will be very fast.
2. GCC
GCC is standard way of compiling C file but it will be slow
compare to LLVM.
Solution: How to generate dynamic library
33. While forming the tuple,
corresponding relation option
schema_bound will be checked to
decide whether to call customized
function corresponding to this
relation or the standard
generalized function. Also in tuple
flag t_infomask2,
HEAP_SCHEMA_BIND_TUPLE
(with value 0x1800) will be
appended to mark the schema
bounded tuple.
Solution: Invocation of Storage Customized Function
34. The tuple header’s t_infomask2
flag will be checked to see , if
HEAP_SCHEMA_BIND_TUPLE
is set to decide whether to call
customized function
corresponding to this relation or
the standard generalized function.
Solution: Invocation of access customized function
35. Performance (TPC-H):
The system configuration is as below:
SUSE Linux Enterprise Server 11 (x86_64), 2 Cores, 10 sockets per core
TPC-H Configuration: Default
Query-1, 2 and 17 not shown in charts to maintain clear
visibility of chart.
0 2000 4000 6000 8000 10000 12000
Query-3
Query-4
Query-5
Query-6
Query-7
Query-8
Query-9
Query-10
Query-11
Query-12
Query-13
Query-14
Query-15
Query-16
Query-18
Query-19
Time(ms)
TPC-H Performance
Original(ms) SchemaBind (ms)
TPC-H Query Improvement(%)
Query-1 2%
Query-2 36%
Query-3 14%
Query-4 13%
Query-5 2%
Query-6 21%
Query-7 16%
Query-8 5%
Query-9 6%
Query-10 9%
Query-11 3%
Query-12 17%
Query-13 3%
Query-14 20%
Query-15 20%
Query-16 4%
Query-17 25%
Query-18 9%
Query-19 24%
36. Performance (Hash Join):
0
200
400
600
800
1,000
1,200
slot_deform_tuple Overall
Instruction Reduction
SchemaBind Original
0
50
100
150
200
250
T
i
m
e
(
m
s
)
Latency Improvement
SchemaBind Original
Latency Improvement: 23%
Overall Instruction reduction: 30%
Access method instruction reduction: 89%
OuterTable: Having 10 columns, cardinality 1M
InnerTable: Having 2 columns, cardinality 1K
Query: select sum(tbl.id10) from tbl,tbl2 where tbl.id10=tbl2.id2 group by tbl.id9;
37. Schema binding mainly depend on the code specialization of access function
for table. Number of instruction reduced per call of slot_deform_function
is more than 70% and hence if this function form good percentage of total
instruction e.g. in
Aggregate query,
group
Join
Query with multiple attribute
All of above cases with huge table size, then overall instruction reduction
will be also huge and hence much better performance.
Performance Scenario:
38. Seeing the industry trend, we have implemented one way of code
specialization, which resulted in up to 30% of performance improvement
on standard benchmarkTPC-H.
This technology will make us align with
current business trend to tackle the CPU bottleneck and also could be one
of the hot technology for work on PostgreSQL.
Conclusion
39. I would like to thanks my colleague Guogen Zhang, Yonghua Ding and
Chen Zhu who supported during this work.
Acknowledgment
40. 1. Zhang, Rui, Saumya Debray, and RichardT. Snodgrass. "Micro-specialization: dynamic
code specialization of database management systems." Proceedings of theTenth
International Symposium on Code Generation and Optimization.ACM, 2012.
http://dl.acm.org/citation.cfm?id=2259025
2. Freedman, Craig, Erik Ismert, and Per-Åke Larson. "Compilation in the Microsoft
SQL Server Hekaton Engine." IEEE Data Eng.Bull. 37.1 (2014): 22-30.
http://www.internalrequests.org/showconfirmpage/?url=ftp://131.107.65.22/pub
/debull/A14mar/p22.pdf
Reference