Nico Jacobs

Nico Hi, I'm Nico Jacobs, trainer @ U2U, with a PhD in data mining. Let's talk about databases. BIG databases. I always loved the I in IT. Although we have lots of interesting areas in the ICT landscape, I fell in love with the basics: data. Storing and retrieving data, and all sorts of derived data. Although it may seem trivial and far from sexy, databases are the basis of nearly every business application. So at U2U, I'll mainly bring the story about how to store and query that precious data in relational and OLAP databases, how to transform data, and how to build reports on them. But I admit: data all by itself isn't that great either, so from time to time, you'll catch me writing .Net applications... on top of a database, of course!
In 2004, I started specializing in the Business Intelligence tools that Microsoft ships with SQL Server 2005: Integration Services, Analysis Services and Reporting Services.
 
 
 

Courses

These are some of the courses that I give for U2U.
  • This five day course focuses on using the SQL Server database to develop applications. It starts with three more theoretical days that focus on the basic as well as some of the advanced features of SQL Server: creating tables, views, functions and stored procedures, asynchronous communication between servers, the integration of the .Net framework … In the last two hands-on days, the focus is more on solving the common questions that developers have when working with SQL Server: how do I design indexes, when should I denormalize data, how about dealing with transactions and locking…

  • This five day course focuses on installing, configuring and maintaining a SQL server 2005 database. It starts with three days which discuss the typical administrative topics: installation, backup and restore, setting up security, monitoring, automating tasks, data transfer and high availability. The last two days are a workshop which focuses on the most commonly occurring administration issues such as network connection problems, performance benchmarking, dealing with corrupted hardware, monitoring latches …

  • This 5 day course is intended for two audiences: it can be attended by analysts or managers who need to design and coordinate a complex database environment, or by experienced database developers or administrators who want to broaden their view on SQL Server. This course consists of two parts. In the first part, all major SQL Server components are discussed, as well as best practices for using and combining these components. This includes topics such as the service broker, XML integration, Notification Services and source control. The second part focuses on evaluating and tuning the use of the database, discussing amongst others topics such as estimating memory, disk and CPU needs, consolidating multiple databases, and designing a data distribution strategy.

  • Overview of the features of the server side Business Intelligence tools that Microsoft ships with SQL Server : Extracting, transforming and loading data with Integration Services; Creating, managing and browsing Analysis Services cubes and data mining models; Building reports on Reporting Services using the Report Builder as well as the Report Designer against relational data as well as OLAP cubes. The client side possibilities for browsing these Business Intelligence Servers using Microsoft Office, Sharepoint, and the Scorecard Manager.

  • Creating and managing Analysis Services cubes, using features such as translations, Key Performance Indicators and calculated members. Processing cubes, designing aggregations, deciding upon which type of storage is optimal. Setting up data mining models, processing and analysing these models, and creating PREDICTION JOIN queries for client side querying of these models.

  • Using multidimensional terminology. Adding calculated members to a cube. Using MDX member functions to navigate within a hierarchy. Using MDX time functions to compare values over time. Using MDX set functions in a query statement. Using functions to manipulate sets of members. Using functions to aggregate values from a set of members. Applying MDX to make a cube change dynamically. Calculating formulas for specific blocks of cells. Controlling the order of calculations within a cube. Applying MDX in common customer and sales applications. Applying MDX in common financial applications.

  • Creating and managing Microsoft SQL Server Integration Services packages. Creating Control flows and Data Flows. Debugging these packages. Setup logging and event handling for packages. Configuring package values with configuration files. Working with variables. Program ad hoc control and data flow task.

  • This course provides students with the knowledge and skills to author, deploy, and manage reports using Microsoft Reporting Services. Students should leave the course with a good understanding of how to apply reporting services to problems within a business context. Topics: The architecture of Microsoft Reporting Services and Office integration. Authoring reports using the Report Designer. Deploying and publishing reports. Managing the lifecycle of a report including report scheduling and backup and restore. Applying Reporting Services to a business problem.

 

Books

I've already written following books and Articles:
  • “Relational sequence learning and user modelling”, the title of this thesis, introduces four topics which play a central role in this thesis. Although ‘user modelling’ is the last term in the title, it is the first thing we need to explain, because it forms the motivation for the rest of this work. ‘Learning’ refers to data mining and machine learning.
 
 

Articles

Here is the list of articles I've written for U2U and Microsoft:
  • Automatically updating Reporting Services caches: Getting best of both worlds
    July 2006
    Reporting services allows you to create advanced reports, based on data which comes from a diversity of data sources. Reports are usually build based on data which accesses many records in the underlying database: often you visualise in the report information that spans multiple days, products, departments,… and you aggregate all the data (sum, average, minimum,…) to get an easy to interpret report. As you know, business data is more about finding the haystack than it is about finding the needle. Because we are addressing a large amount of data when building a report, it is common to use a caching technique to make sure users are served cached reports, in that way avoiding unnecessary access to the database.
  • SQL Server 2005 Service Broker
    July 2006
    SQL Server 2005 makes it easy to set up asynchronous distribute applications by integrating a queueing mechanism into the database. It combines the ideas of MSMQ with the stability, reliability and functionality of a relational database server. In this code walkthrough we investigate how to set up a simple application on this service broker. Gradualy we introduce additional aspects of the service broker, complicating the initial simple setup.
  • Using SQL Server 2005 to store and query serialized objects
    May 2006
    .NET offers the possibility to serialize and deserialize objects into a binary or XML representation. Serializing into XML is a requirement in order to create and consume webservices, binary serialization can be used for remoting. But besides moving objects between different applications, can serialization also be used to ‘materialize’ objects, and give them a persistent storage. This can be done to file, but databases offer a more robust storage (transactional consistency, backup,…). But there is more to it. Since Sql Server 2005 offers XML querying functionality (XPath as well as XQuery), this allows us to query the materialized objects, and even alter them. In this article, we demonstrate this idea by building a small application in which we store persons in a listbox. We then store the state of our listbox items (including the Person objects) serialized as XML in the SQL Server 2005 database, and deserialize this. Since we can store multiple serialized listboxes, we extend our load method so that we can query our database. In our case, we allow the user to enter the name of a person, and when we then click load, the first materialized listbox in which a person with this name occurs is loaded.
  • Microsoft SQL Server 2005 Integration Services smaakt naar meer
    October 2005
    Microsoft vaart al enige tijd onder de vlag ‘innovatie door integratie’. De nieuwste editie van hun ETL-tool (Extract, Transform, Load) bewijst dit nog eens door de naam Integration Services te dragen. In dit artikel nemen we deze opvolger van SQL Server Data Transformation Services (DTS) onder de loupe.
  • Microsoft SQL Server 2005 Analysis Services: van gegevens- naar informatiebeheer
    October 2005
    Databases zijn een vast onderdeel in zowat elk IT-project. Naar mate de hoeveelheid opgeslagen data toeneemt, worden taken als rapportage en analyse alsmaar belangrijker. Vandaar dat Microsoft in de nieuwe versie van Microsoft SQL Server ook veel aandacht heeft besteed aan de OLAP-component Analysis Services. In dit artikel beschrijven de auteurs de belangrijkste kenmerken van Microsoft SQL Server 2005 Analysis Services, met de nadruk op de nieuwe aspecten.
  • Consuming Web Services in SQL Server 2005
    September 2005
    Sql Server 2005 offers the functionality of writing functions, stored procedures, aggregates, triggers and types in .NET. In this way, we can ‘wrap’ .NET functionality in a database function, procedure or type. In an earlier article, we demonstrated this principle by wrapping regular expression functionality in a CLR function. In this article, we illustrate the same principle, but this time by consuming a web service.
  • Regular Expressions in SQL Server 2005
    May 2005
    SQL Server 2005 offers the possibility to write functions, stored procedures, aggregate functions, triggers and user defined types in a .NET language such as Visual Basic .NET or C#. One of the great advantages of this functionality, is that we can ‘pull’ functionality that is available in the .NET class libraries into the database. In this article, we illustrate this idea by ‘pulling’ the .NET support for regular expressions into SQL Server 2005.
 
 
 

Presentations

Here are some of the presentations I've done. You'll be able to download my slides and demos here.
  • November 2007 - MSDN Evening Session : What is new in Visual Studio 2008?
    (Together with Peter Himschoot)
    The next version of Visual Studio, Microsoft Visual Studio 2008, will provide an industry-leading developer experience for Windows Vista, the 2007 Microsoft Office system, and the Web. If you want to know how Visual Studio 2008 differs from every single previous version of Visual Studio, if you are having a hard time figuring out what exactly is new in .net 3.5 or if you are interested in exploring the new language features of C# 3.0 or VB 9.0, then this session will answer all of your questions... and more! After this session, you’ll hurry back home and start upgrading your projects to Visual Studio 2008. That’s a promise!

  • February 2006 - ISV Summer School : Microsoft SQL Server 2005 for Developers
    In 2005 I provided several 5 day workshops on MS SQL Server 2005 at different locations in Europe.

  • June 2005 - TechNet Session : Microsoft SQL Server 2005 for Developers
    From daily data to Business Intelligence with Microsoft SQL Server 2005 Analysis Services.

 

Tools

This section provides a list of tools I developed.
  • ASDoc is a tool which creates documentation for your Analysis Services 2005 OLAP cubes. It connects to your live server, and queries the metadata for the name and description which the developers attached to every object (database, cube, dimension, hierarchy, attribute, translation, data source, data source view,...). It then produces an HTML file which contains the name and description of all these objects. But there is more: also other properties, such as last processing time, creation time, sizes of fact tables etc. are written to the HTML file.
  • NEBChecker, The checker on Non Empty Behavior
    In an OLAP cube, it is important that the cube can quickly figure out if a certain cell (tuple) is empty or not. For measures, Analysis Services is keeping track of this. But for calculated members, the system has to evaluate the full expression, which slows down the query. Unless... unless we can tell the system that the calculated member will be empty (null) when another, real member is null. This is done via the non-empty behavior property of the calculated member. With this tool, you can quickly see all the calculated members in your live cubes which do not have a non-empty behavior set on them. The tool also shows you the definition of the relevant calculated members.