Database design and development with Microsoft Sql Server

Off-Topic: The Author’s Dilemma

The journey of a thousand miles begins with a single step. The journey of writing, on the other hand, begins with the planning. There are hundreds of the ways how to structure the information in the book. And, unfortunately, the author’s choice is not always the best one – it is easy to forget that readers can have different preferences.

Today I need your feedback. I would like to ask all of you – how you, as the readers, prefer books or large articles to be structured. Let I elaborate a little bit.

Usually, every large article or book consists of several interrelated topics. Moreover, each topic can be split to basic (introductory) and advanced content. Let’s think about Clustered Columnstore Indexes as the example. If I ever wrote a book on them, I would have to cover their internal structure, explain how they are handling data modifications, how to design ETL processes in the most efficient way and, perhaps, explain what is the batch-mode execution and how to utilize it. Please, do not consider it to be the full coverage on the topic – this is just an example.

The conventional approach for such book would introduce Table of Content similar to the one below. Please, do not judge its quality – it is something I just invented on the fly to illustrate the point.

Overview and Introduction

Internal Structure

Row Groups, Delta Store, Delete Bitmaps

Internals of data modifications

ETL and Design Considerations

Best practices for ETL processes

CCI and Data Partitioning

ETL and Index Maintenance

Batch-Mode Execution

Batch-Mode Execution – overview and implementation

Query patterns that lead to Batch-Mode Execution

There is another approach, however. We can split the article or book based on the level of content, such as basic and advanced. With such an approach, you would be able to read half of the book, get some ideas on the topic and start using it. Meanwhile, you can master your skills with advanced content.

Obviously, there are some downsides. First, basic content would have plenty of references to advanced chapters. For example, it can say “using batches of 1M rows for import would provide the best results. We will cover why it happened in Chapter X“. Second, the same topics will be covered in two different chapters, granted on the different levels. And it will look poorly structured, especially if you are already familiar with the topic.

The table of content for such an approach could look like that:

CCI: Basics Concepts

Overview and Introduction

CCI components overview

Best practices during data modification and ETL (*mainly tips)

Batch-Mode execution overview and tips and tricks how to utilize it

CCI: Advanced Concepts

Internal Structure of CCI components

Internals of Data Modifications

ETL processes – design and performance considerations

CCI maintenance

Deep dive into Batch-Mode execution.

So, what would be your choice? What would you prefer to read?

Can you please answer one question survey or leave the reply to the post?