In this two-part article by Chris Webb, we will cover query performance tuning, including how to design aggregations and partitions and how to write efficient MDX. The first part will cover performance-specific design features, along with the concepts of partitions and aggregations.
One of the main reasons for building Analysis Services cubes as part of a BI solution is because it should mean you get better query performance than if you were querying your relational database directly. While it's certainly the case that Analysis Services is very fast it would be naive to think that all of our queries, however complex, will return in seconds without any tuning being necessary. This article will describe the steps you'll need to go through in order to ensure your cube is as responsive as possible.Read Query Performance Tuning in Microsoft Analysis Services: Part 1 in full
In the previous part of the article by Chris Webb, we covered performance-specific design features such as partitions and aggregations. In this part, we will cover MDX calculation performance and caching. We'll see how important caching is to overall query performance.Read Query Performance Tuning in Microsoft Analysis Services: Part 2 in full
In this article by Mike Liu, we will explain the concepts and definitions related to SOA, and clarify some confusions regarding SOA. Let's discuss each of the following in detail:
- What is SOA?
- Why do we need SOA?
- What are the various approaches to implementing SOA and what are the key differences between them?
- What is a web service and how is it related to SOA?
- What standards and specifications are there for web services?
WCF is the latest technology from Microsoft for building services. In this article by Mike Liu, we will explain what WCF is, and what it is composed of. We will also explain various .NET runtimes, .NET frameworks, Visual Studio versions, the relationships between them, and what is needed to develop or deploy WCF services. You will see some code snippets in this article that will help you to further understand WCF concepts, although they are not in a completed WCF project.
Let us discuss the following in detail:
- What WCF is
- Use of WCF for SOA
- WCF architecture
- Basic WCF concepts
The development environment of choice in this article by Stefan Björnander is the Visual Studio from Microsoft. In this article we also study the Microsoft Foundation Classes (MFC).
- Visual Studio provides us with a few Wizards—tools that help us generate code. The Application Wizard creates an application framework (a skeleton application) to which we add the specific logic and behavior of our application.
- When developing a Windows application, the Document/View model comes in handy. The application is divided into a document object that holds the data and performs the logic, and one or more views that take care of user input and display information on the screen.
- When an event occurs (the user clicks the mouse, the window is resized) a message is sent to the application, it is caught by a view object and is passed on to the document object. There are hundreds of messages in the Windows system. However, we only catch those that interest us.
- The device context can be viewed both as a canvas to paint on and as a toolbox holding pens and brushes.
- When we finish an application, we may want it to occur in the same state when we launch it the next time. This can be archived by storing vital values in the registry.
- Serialization is an elegant way of storing and loading values to and from a file. The framework takes care of naming, opening, and closing the file, all we have to do is to fill in the unique values of the application.
- The cursor has different appearances on different occasions. There are several predefined cursors we can use.
In order to simplify parallelism complexities and to avoid many concurrency pains, we must use the object-oriented capabilities offered by the C# programming language and design patterns. In this article, we will drastically simplify the creation of new parallelized code avoiding some advanced concurrent programming difficulties. Reading this article by Gastón C. Hillar and following the exercises we shall :
- Learn to combine single-threaded code with multithreaded code
- Use of object-oriented design patterns to simplify the creation of parallelized code
- Solve various problems to specialize in segmentation algorithms and achieve thread affinity
- Encapsulate multithreaded algorithms to create high-performance and safer independent pieces
- Learn to avoid problems with design instead of solving them using very difficult-to-apply algorithms
Linq to SQL is an object relational model that you can leverage in Visual Studio 2008. Your connection to SQL Server 2008 database is through a new control in Visual Studio 2008, the LinqDataSource control. This control needs a data context. The data context is provided by the Linq to SQL classes, a class generator that maps SQL server objects to the model. The class files generated support CRUD operations.
In this article by Dr. Jay Krishnaswamy, we will be adding a LinqDataSource control in Visual Studio 2008 to a ASP.NET website and configuring it by providing a data context. The data context will created using the Object Relational Designer(O/R Designer) in Visual Studio. The Linq data source is then bound to the Gridview in the Visual Studio designer.Read Displaying SQL Server Data using a Linq Data Source in full
The Analysis Services can also be configured when the SQL Server 2008 is installed. Out of the box the analysis server has no objects and you need to deploy a database to work with this service. Two previous articles described the process of creating a CUBE from scratch using the TestNorthwind database, a copy of the Northwind database. In this article by Dr. Jayaram Krishnaswamy, we will be authoring a report based on an analysis services CUBE.Read Creating a matrix report using the Analysis Services Cube in full
In this two-part article by Chris Webb, we will look at measures and measure groups, ways to control how measures aggregate up, and how dimensions can be related to measure groups. In this part, will cover useful properties of measures, along with built-in measure aggregation types and dimension calculations.Read Measures and Measure Groups in Microsoft Analysis Services: Part 1 in full
In order to solve problems that arise in concurrently running threads in applications, we need new debugging techniques suitable for the new parallelism environments that occur in Visual C#. In this article by Gastón C. Hillar, we will learn many tricks and debugging procedures that will help us find solutions to multithreaded application problems and have a better understanding of the execution of parallel threads. In this article we will be performing the following exercises:
- Find out how to freeze some threads to stop concurrency and simplify the process for debugging one thread at a time
- Learn to set and control breakpoints with multithreaded applications
- Discover how to inspect values when multiple threads are accessing the variables that hold them
- Develop multithreaded applications that show partial results to help us in the debugging process