{"id":14551,"date":"2015-12-09T09:00:00","date_gmt":"2015-12-09T17:00:00","guid":{"rendered":""},"modified":"2024-01-22T22:52:18","modified_gmt":"2024-01-23T06:52:18","slug":"real-time-operational-analytics-using-in-memory-technology","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/09\/real-time-operational-analytics-using-in-memory-technology\/","title":{"rendered":"Real-Time Operational Analytics Using In-Memory Technology"},"content":{"rendered":"
Operational workloads refer to the business transactions that are critical to running a business. For example, a retail store has a transactional system to create or modify new orders, and a credit card company tracks all charges made by vendors on behalf of its customers. These transactional systems are critical to businesses, as any downtime or slowdown will have a direct impact on the business\u2019s bottom line. Therefore, these systems are designed for performance\/scalability and configured with high availability. Equally important to operational workload are the analytics that business use to answers questions such as, \u201cWhat is the average time to fulfill an order?\u201d<\/p>\n
Most customers implement analytics by setting up a Data Warehouse on a different machine similar to the configuration described in my recent post<\/a> on using In-Memory technology with periodic flow of data through ETL (Extract, Transform and Load) from operational system to Data Warehouse. This approach of optimizing\/isolating operational and analytics workloads has served well, but there are some drawbacks:<\/p>\n Real-Time Operational Analytics in SQL Server 2016 enables running analytics queries directly on your operational workload using columnstore indexes. The image below shows one possible configuration using Analysis Server in Direct Query mode, but you can use any analytics tool or custom solution at your disposal. This solution addresses the drawbacks mentioned above since the analysis happens directly on the operational data.<\/p>\n Not all workloads will fit this model. For example, a separate Data Warehouse is still needed if data needs to be aggregated from multiple sources for analytics.<\/p>\n While real-time operational analytics is promising, one may question its impact on the operational workload while delivering high performance analysis.<\/p>\n SQL Server 2016 provides options to minimize the impact on operational workload as follows:<\/p>\n create nonclustered columnstore index<\/span> <index<\/span>-name> on<\/span> Orders (<list of<\/span> columms>) where<\/span> order_status = ‘Shipped’<\/span><\/span><\/p>\n<\/li>\n Running analytics on an operational schema, which is highly normalized, will not be as performant compared to say running it on the schema optimized for analytics (Star schema<\/a>). However, using a columnstore index does speed up analytics query performance significantly to compensate for extra complexity (more joins) in the query.<\/p>\n Microsoft Dynamics AX, currently in public preview<\/a>, leverages SQL 2016 with real time operational analytics.<\/p>\n SQL Server 2016 supports real-time operational analytics both on disk-based and memory-optimized tables so that you can leverage it without any changes to your applications. With memory-optimized and columnstore combination, you get the best of OLTP performance and analytics query performance. Columnstore Indexes for Real-Time Operational Analytics<\/a> provides more detail about this solution.<\/p>\n See the other posts in the SQL Server 2016 blogging series.<\/a><\/p>\n<\/p>\n\n
Solution<\/h1>\n
<\/a>For real-time operational analytics, take these steps:<\/p>\n\n
Minimizing impact of Operational Workload<\/h1>\n
\n
\n
<\/a>Analytics query performance<\/h1>\nSummary<\/h1>\n