Search results matching tag 'Book Review'http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&tag=Book+Review&orTags=0Search results matching tag 'Book Review'en-USCommunityServer 2.1 SP2 (Build: 61129.1)Book Review: Tribal SQL,Performance Tuning With SQL Trace and Extended Eventshttp://sqlblog.com/blogs/alexander_kuznetsov/archive/2014/02/18/book-review-tribal-sql-performance-tuning-with-sql-trace-and-extended-events.aspxTue, 18 Feb 2014 14:51:00 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:52876Alexander Kuznetsov<div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">Tara Kizer wrote this chapter, and it is relevant for us developers.</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">Tara briefly explains how to use the GUI, the Profiler, and states that it can heavily impact the performance on the server. Then she explains how to set up a server-side trace which should incur less overhead, and I noticed that the working example which she provided is quite similar to the one our team is using.</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">There is one minor thing, however, that we do differently: our T-SQL is self-documenting. For example, instead of the following:</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">EXEC sp_trace_setevent @<span style="line-height:9.708333015441895px;font-size:13.333333015441895px;font-family:Consolas, Courier, monospace;">traceid&nbsp;</span>, 10, 1, @on</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">We use this:</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">EXEC sp_trace_setevent&nbsp;<span style="line-height:9.714285850524902px;font-size:13.142857551574707px;font-family:Consolas, Courier, monospace;">@traceid =</span>@<span style="line-height:9.708333015441895px;font-size:13.333333015441895px;font-family:Consolas, Courier, monospace;">traceid</span>,&nbsp;</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><span style="line-height:9.714285850524902px;font-size:13.142857551574707px;font-family:Consolas, Courier, monospace;">@eventid=@RpcCompleted,</span>&nbsp;<span style="line-height:9.714285850524902px;font-size:13.142857551574707px;font-family:Consolas, Courier, monospace;">@columnid=@Cpu</span>, @on=@on;</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">After describing how to set up a trace, Tara demonstrates several real life ways to use its output, such as finding missing indexes, stale statistics, and parameter sniffing causing problems.</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;I have found this section of the chapter practical and useful for developers. We need to be proficient with this tool, we need to practice using it, so that we can quickly use it whenever the need arises. This chapter provides a good, short and useful, practical introduction to becoming proficient. I would recommend developers to read it.<br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">Later Tara proceeds to describe Extended Events. I am not qualified to review that, since I do not have enough real life experience with them.</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">This completes the chapter review, which is followed by my personal opinion on deprecating of the Profiler.</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">I am disappointed that that the familiar and convenient interface of the Profiler and server side traces is going to disappear, rendering all the experience using it useless, and forcing lots of people to spend precious time to master the next thing that replaces it.</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">I understand that the old implementation might have to go, but I also think that it might be feasible to have the old interface invoke the new implementation.&nbsp;</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">In my narrow experience, even if some application has just ten or twenty users, it may be cheaper to keep the old interface unchanged, even when we completely replace the implementation, such as migrating from SQL Server to PostgreSql. As a result our users do not have to relearn how to do the same thing with the new tool, and can do something more useful instead. The math is simple: a day of developer's time spent on backward compatibility is cheaper than two hours of user's time spent on relearning multiplied by the number of users.<br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">Because the Profiler and server side traces have a huge number of customers, I think that SQL Server would be a more useful product if it kept providing the old interface even if the old implementation needs to be replaced with a new one.&nbsp;</div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;"><br></div><div style="font-family:arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:auto;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;">The time and resources spent on keeping the old interface would probably be just a tiny fraction of the time and resources spent by the huge amount of users relearning how to do the same thing with the new tool.</div>Book Review: Tribal SQL, Chapter 1.http://sqlblog.com/blogs/alexander_kuznetsov/archive/2014/02/08/book-review-tribal-sql-chapter-1.aspxSat, 08 Feb 2014 22:49:00 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:52760Alexander Kuznetsov<p>"Tribal SQL" is an interesting book, so I will be reviewing some, although not all, of its chapters.<br><br>Quoting from the introduction, "This is a book for DBAs, for things you think they really ought to know".<br>As an agile developer, I clearly do not belong in this book's target audience. Also I am not qualified to review some of the chapters, as I have zero real life experience with some of the technologies described in it. <br>I will not be reviewing these chapters.<br><br>As a developer frequently working with RDBMS, I am much more productive when I understand the underlying RDBMS, and develop software that utilizes the strengths and avoids the weaknesses of the RDBMS I currently work with. This is why I am curious about SQL Server, and this is why some of the chapters in "Tribal SQL" are really interesting to me. <br><br>So, the following series of posts is written by a developer, and targeted at developers.<br></p><p><u><b>Review for "SQL Server Internals 101"</b></u></p><p>Mark S Rasmussen has written a chapter entitled "SQL Server Internals 101".<br><br>This chapter is very relevant for us developers - to deliver robust and performant systems,<br>we do need to have some knowledge of internals.<br><br>Quoting from the author, "... every SQL Server DBA and developer should have a sound basic understanding,<br>not just of what storage objects exist in SQL Server (heaps and indexes), but of the underlying data structures".<br><br>This rings true to me - in all my experience it is cheaper to invet some time, learn the internals, and avoid very costly mistakes.<br><br>The author begins with a personal story, describing his own mistake caused by insufficient knowledge.<br>This is exactly what's needed to grab readers' attention.</p><p>The story definitely resonates with me - I did make some mistakes with SQL Server databases myself, and who did not? These days I develop against PostgreSql a lot, and maybe I am doing something wrong with my PostgreSql systems as well, and need better knowledge of it. <br></p><p>This story is followed by an introduction into records and pages, and a practical hands on way to look directly into bytes and bits these pages consist of.<br><br>This is followed by an practical introduction into B-trees, indexes, both clustered and non-clustered, and heaps.<br>The details on heaps and clustered indexes are especially necessary, because this is where SQL Server is so different from PostgreSQL and Oracle.<br><u><b><br>Conclusion</b></u><br><br>This chapter is a highly practical introduction into a very relevant topic. It has been written for busy practitioners, including developers - it starts with explaining why we want to know all these things, then it clearly and succinctly explains the basics, and refers to more detailed resources for further learning.</p>Book Review: Pro SQL Server 2008 Relational Database Design and Implementationhttp://sqlblog.com/blogs/alexander_kuznetsov/archive/2012/09/24/book-review-pro-sql-server-2008-relational-database-design-and-implementation.aspxMon, 24 Sep 2012 16:56:00 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:45329Alexander Kuznetsov<p>Investing in proper database design is a very efficient way to cut maintenance costs. If we expect a system to last, we need to make sure it has a good solid foundation - high quality database design.</p><p>Surely we can and sometimes do cut corners and save on database design to get things done faster. Unfortunately, such cutting corners frequently comes back and bites us: we may end up spending a lot of time solving issues caused by poor design.&nbsp; </p><p>So, solid understanding of relational database design is absolutely essential for database developers, including Agile folks like myself. Let me put it stronger: we Agile developers especially need solid understanding of relational database design, because we are quite likely to cut corners and spend just enough effort to pass unit tests. <br></p><p>This is why I think the book by "Pro SQL Server 2008 Relational Database Design and Implementation" by Louis Davidson, Kevin Kline, and others is a must read. </p><p>The following is a chapter by chapter synopsis <br></p><p><b>Introduction to Database Concepts</b> <br></p><p>This chapter introduces several crucial theoretical concepts, and each concept is demonstrated with a short crisp example. The chapter must be read before proceeding any further.</p><p><b>The Language of Data Modeling</b></p><p>This chapter describes various aspects of traditional waterfall methodology. As such, it can safely be skipped by Agile developers.</p><p><b>Conceptual Data Modeling</b></p><p>This chapter deals with business rules and requirements, and provides very good practical examples. As the previous chapter, all the examples are described in the context of waterfall methodology. However, this should not turn us off. Agile developers need to identify business rules and requirements, and implement them via database design, as mush as anyone else.</p><p>This chapter is a must read for everyone, even if some of us do not use Erwin or Visio.</p><p><b>The Normalization Process</b></p><p>This chapter builds up on the concepts introduced in the previous one. As such, we shall get better results if we read about Conceptual Data Modeling first. </p><p>As before, all theoretical concepts are illustrated with succinct practical examples.&nbsp;</p><p>In my opinion, this chapter is most important in this book - it gives a great description of a complex technique that is not always described well. If it was the last chapter in this book, the book would still be a highly useful one.</p><p>Of course, there are other books describing normalization. This one really stands out because it provides clear in-depth explanations with good concrete practical examples.<br></p><p><b>The rest of the book</b></p><p>The next chapters of the book are describing various steps needed to implement the complete RDBMS solution, including developing T-SQL, securing access, indexing and so on. All these chapters are useful and practical as well. </p><p>Although these chapters are very useful and a pleasure to read, I am not going into more detail here. The reason: many other books describe similar things as well. In my opinion, it is the first chapters that really make this book unique.<br></p><p><b>Conclusion</b></p><p>We may be using very different methodologies to develop systems build on top of RDBMS. However, eventually professionally developed systems that are meant to last should have proper database design. <br></p><p>The book provides a practical description of what&nbsp; is proper database design. As such, it will be really useful for all developers who want to develop robust systems using RDBMS.</p><p>Enjoy! <br></p><p>&nbsp;</p>Book Review (Book 12) - 20 Master Plotshttp://sqlblog.com/blogs/buck_woody/archive/2012/06/05/book-review-book-12-20-master-plots.aspxTue, 05 Jun 2012 14:34:07 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:43730BuckWoody<p>This is a continuation of the books I challenged myself to read to help my career - one a month, for a year. <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"><span style="text-decoration:underline;"><span style="color:#0066cc;">You can read my first book review here</span></span></a>, and <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/07/head-in-the-clouds-eyes-on-the-books.aspx" target="_blank">the entire list is here</a>. The book I chose for May 2012 was:<a href="http://www.amazon.com/Master-Plots-Build-Them-ebook/dp/B005LIYZJ8/ref=sr_1_1?s=digital-text&amp;ie=UTF8&amp;qid=1333638146&amp;sr=1-1" target="_blank">20 Master Plots by Ronald B. Tobias</a>. This is my final book review - at least for this year. I'll explain what I've learned in this book in particular, and in the last twelve months in general.</p>
<p><strong>Why I chose this book: </strong></p>
<p>Stories and themes are part of software, presenting, and working in teams. This book claims there are only 20 plots, ever. I wanted to find out.</p>
<p><strong>What I learned:</strong></p>
<p>Probably my most favorite read of the year. Deceptively small, amazingly insightful. The premise is that there are only a few "base" themes, and that once you learn them you can put together an interesting set of stories on most any topic. Yes, the author admits that this number has been different throughout history - some have said 50, others 14, and still others claim only one or two basic plots. This doesn't change the fact that you can build very complex stories from a simple set of circumstances and characters.</p>
<p>Be warned - if you read this book it takes away much of the wonder from almost every movie or book you'll read from here on! I loved it. My favorite part is that the author gives you exercises to build stories, right from the start. I've actually used these as the start of a meeting to foster creativity. Amazing stuff.</p>
<p>One of my favorite sections of the book deals with plot and story. Plot: The king died, and the queen died. Story: The king died, and the queen died <em>of heartbreak</em>. Add one or two words, and you have the essence of storytelling. A highly recommended read, for all folks of all ages. You'll like it, your spouse will like it, and your kids will like it. I learned to be a better storyteller, and it helped me understand that plots and stories are not just things in books - they are a direct reflection of human nature. That makes me a better manager of myself and others.</p>
<p>&nbsp;</p>
<p>And this is the last of the reviews - at least for this year. I probably won't post many more book reviews here, but I will keep up the practice. As a reminder, the goal was to select 12 books that will help you reach your career goals. They don't have to be technical, or even apply directly to your job - but they do need to be books that you mindfully select as getting you closer to what you want to be. Each month, jot down what you learned from the work. And see if it doesn't in fact get you closer to your goals.</p>
<p>These readings helped me - I got a promotion this year, and I attribute at least some of that to the things I learned.</p>Book Review (Book 11) - Applied Architecture Patterns on the Microsoft Platformhttp://sqlblog.com/blogs/buck_woody/archive/2012/05/15/book-review-book-11-applied-architecture-patterns-on-the-microsoft-platform.aspxTue, 15 May 2012 16:50:34 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:43364BuckWoody<p>This is a continuation of the books I challenged myself to read to help my career - one a month, for year. <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"><span style="text-decoration:underline;"><span style="color:#0066cc;">You can read my first book review here</span></span></a>, and <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/07/head-in-the-clouds-eyes-on-the-books.aspx" target="_blank">the entire list is here</a>. The book I chose for April 2012 was: <a href="http://www.amazon.com/Applied-Architecture-Patterns-Microsoft-Platform/dp/184968054X" target="_blank">Applied Architecture Patterns on the Microsoft Platform</a>. I was traveling at the end of last month so I&rsquo;m a bit late posting this review here.</p>
<p><strong>Why I chose this book: </strong></p>
<p>I actually know a few of the authors on this book, so when they told me about it I wanted to check it out. The premise of the book is exactly as it states in the title - to learn how to solve a problem using products from Microsoft.</p>
<p><strong>What I learned:</strong></p>
<p>I liked the book - a lot. They've arranged the content in a "Solution Decision Framework", that presents a few elements to help you identify a need and then propose alternate solutions to solve them, and then the rationale for the choice. But the payoff is that the authors then walk through the solution they implement and what they ran into doing it.</p>
<p>I really liked this approach. It's not a huge book, but one I've referred to again since I've read it. It's fairly comprehensive, and includes server-oriented products, not things like Microsoft Office or other client-side tools. In fact, I would LOVE to have a work like this for Open Source and other vendors as well - would make for a&nbsp;great library for a Systems Architect. This one is unashamedly aimed at the Microsoft products, and even if I didn't work here, I'd be fine with that. As I said, it would be interesting to see some books on other platforms like this, but I haven't run across something that presents other systems in quite this way.</p>
<p>And that brings up an interesting point - This book is aimed at folks who create solutions within an organization. It's not aimed at Administrators, DBA's, Developers or the like, although I think all of those audiences could benefit from reading it. The solutions are made up, and not to a huge level of depth - nor should they be. It's a great exercise in thinking these kinds of things through in a structured way.</p>
<p>The information is a bit dated, especially for Windows and SQL Azure. While the general concepts hold, the cloud platform from Microsoft is evolving so quickly that any printed book finds it hard to keep up with the improvements.</p>
<p>I do have one quibble with the text - the chapters are a bit uneven. This is always a danger with multiple authors, but it shows up in a couple of chapters. I winced at one of the chapters that tried to take a more conversational, humorous style. This kind of academic work doesn't lend itself to that style.</p>
<p>I recommend you get the book - and use it. I hope they keep it updated - I'll be a frequent customer. :)</p>
<p>&nbsp;</p>Book Review (Book 10) - The Information: A History, a Theory, a Flood http://sqlblog.com/blogs/buck_woody/archive/2012/04/05/book-review-book-10-designing-data-visualizations.aspxThu, 05 Apr 2012 14:24:00 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:42706BuckWoody<p>This is a continuation of the books I challenged myself to read to help my career - one a month, for year. <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"><span style="text-decoration:underline;"><span style="color:#0066cc;">You can read my first book review here</span></span></a>, and <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/07/head-in-the-clouds-eyes-on-the-books.aspx" target="_blank">the entire list is here</a>. The book I chose for March 2012 was: <a href="http://www.amazon.com/The-Information-History-Theory-ebook/dp/B004DEPHUC/ref=sr_1_2?ie=UTF8&amp;qid=1333637893&amp;sr=8-2" target="_blank"><span style="text-decoration:underline;"><span style="color:#0066cc;">The Information: A History, a Theory, a Flood by James Gleick</span></span></a>. I was traveling at the end of last month so I&rsquo;m a bit late posting this review here.</p>
<p><strong>Why I chose this book: </strong></p>
<p>My personal belief about computing is this: All computing technology is simply re-arranging data. We take data in, we manipulate it, and we send it back out. That&rsquo;s computing. I had heard from some folks about this book and it&rsquo;s treatment of data. I heard that it dealt with the basics of data - and the semantics of data, information and so on.</p>
<p>It also deals with the earliest forms of history of information, which fascinates me. It&rsquo;s similar I was told, to <a href="http://www.amazon.com/G%C3%B6del-Escher-Bach-Eternal-Golden/dp/0465026567/ref=sr_1_1?ie=UTF8&amp;qid=1333638803&amp;sr=8-1" target="_blank">GEB which&nbsp;a favorite book of mine</a> as well, so that was a bonus.</p>
<p>Some folks I talked to liked it, some didn&rsquo;t - so I thought I would check it out.</p>
<p><strong>What I learned:</strong></p>
<p>I liked the book. It was longer than I thought - took quite a while to read, even though I tend to read quickly. This is the kind of book you take your time with. It does in fact deal with the earliest forms of human interaction and the basics of data.</p>
<p>I learned, for instance, that the genesis of the binary communication system is based in the invention of telegraph (far-writing) codes, and that the earliest forms of communication were expensive. In fact, many ciphers were invented not to hide military secrets, but to compress information. A sort of early &ldquo;lol-speak&rdquo; to keep the cost of transmitting data low!</p>
<p>I think the comparison with GEB is a bit over-reaching. GEB is far more specific, fanciful and so on. In fact, this book felt more like something fro Richard Dawkins, and tended to wander around the subject quite a bit. I imagine the author doing his research and writing each chapter as a book that followed on from the last one. This is what possibly bothered those who tended not to like it, I think.</p>
<p>Towards the middle of the book, I think the author tended to be a bit too fragmented even for me. He began to delve into memes, biology and more - I think he might have been better off breaking that off into another work. The existentialism just seemed jarring.</p>
<p>All in all, I liked the book. I recommend it to any technical professional, specifically ones involved with data technology in specific. And isn&rsquo;t that all of us? :)</p>Book Review (Book 8) - The Elements of Persuasionhttp://sqlblog.com/blogs/buck_woody/archive/2012/01/30/book-review-book-8-the-elements-of-persuasion.aspxMon, 30 Jan 2012 14:57:23 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:41442BuckWoody<p>This is a continuation of the books I challenged myself to read to help my career - one a month, for year. <a href="http://blogs.msdn.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"><u>You can read my first book review here</u></a>. The book I chose for January 2012 was: <a href="http://www.amazon.com/Elements-Persuasion-Storytelling-Better-Business/dp/0061179035/ref=pd_bbs_sr_1/104-8397785-8954328?ie=UTF8&amp;s=books&amp;qid=1187892925&amp;sr=8-1" target="_blank"><u><font color="#0066cc">The Elements of Persuasion by Richard Maxwell and Robert Dickman</font></u></a>. </p> <p><strong>Why I chose this Book: </strong></p> <p>As I mentioned in a previous review, I think good storytelling is an essential part of any career. Communication is basic in not only our professional but personal lives, and everyone I’ve met responds well to stories, from children to executive audiences. Not only that, learning to tell a story helps you formulate concepts about the topic, which is yet another way of learning. </p> <p>I heard about this book from a couple of folks, and it landed within search of “storytelling” and “business”. Whenever I just search for “Storytelling” I either end up with lists of stories (which is fine) or lists of children’s books on storytelling (which is also fine) but neither of these are quite what I’m looking for.</p> <p>A quick search on Amazon and I located the book, and then a quick check of my various e-library offerings and I downloaded it to my laptop for reading. </p> <p><strong>What I learned: </strong></p> <p>This is a “selling” book, but not like you might think. It’s not a book of a quick sale like at a car-lot or a “quick-sale” environment. It’s more along the lines at the executive level and longer-term sales - those involve stories as well. </p> <p>Sadly, this is another “business book” - the kind I normally don’t like much. There are typical case-study layouts with lots of examples, but in my mind not enough didactic information to actually help you develop a good story-telling mantra.&#160; </p> <p>Even so, I learned some interesting things about the process these authors use. Some of the case studies are interesting, and I did pull out that a story should work towards a single, defining sentence. This isn’t unique to this book, but it is a reinforcement of what I’ve learned elsewhere. Although nothing to do with storytelling, I did like the reference to <a href="http://www.lockheedmartin.com/us/aeronautics/skunkworks/14rules.html" target="_blank">Lockheed’s “14 Rules</a>”, which I hadn’t read before. They also break down the storytelling process into five elements, which is actually covered better (in my mind) in a book called “<a href="http://www.amazon.com/20-Master-Plots-Build-Them/dp/1599635372/ref=sr_1_1?ie=UTF8&amp;qid=1327938189&amp;sr=8-1" target="_blank">20 Master Plots</a>” , which may actually be the storytelling book I’ve been searching for. </p> <p>Or perhaps I should just write the one I’m looking for. <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3036.wlEmoticon_2D00_smile_5F00_2.png" />&#160;</p> <p>At any rate, not sure I would recommend this book to others - perhaps as a check-out, but not a purchase, at least if this is for the same reason I looked it up.&#160; </p> <p><strong>Raw Notes: </strong></p> <p>As I read, I take notes - it’s called “reading with a pencil”. These are the notes I made to myself, in no particular order and with no context other than the book itself: </p> <ul> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">Stories are interesting to us all. </font></font></font></div> </li> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">Describes five elements in a story, but in fact this is for only one type of story. Other books describes more story types. </font></font></font></div> </li> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">Very standard business book, but there are good tips in some of the chapters. </font></font></font></div> </li> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">Explained how to connect with the audience, good points Spends a lot of time referring to other books The book of five rings Work towards a single, memorable sentence. </font></font></font></div> </li> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">Changes partway through into stories about stories. This is better. </font></font></font></div> </li> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">A mix of storytelling and sales, although this was touted for sales, feels much more like selling than storytelling, advertisements. </font></font></font></div> </li> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">Interesting story about memory championships, where contestants memorize cards. They use unusual stories. </font></font></font></div> </li> <li> <div style="margin:0in 0in 0pt;" class="MsoPlainText"><font size="3"><font color="#000000"><font face="Calibri">Look up Lockheed and the 14 rules </font></font></font></div> </li> </ul>Book review (Book 6) - Wikinomicshttp://sqlblog.com/blogs/buck_woody/archive/2011/11/22/book-review-book-6-wikinomics.aspxTue, 22 Nov 2011 14:35:02 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:39940BuckWoody<p>This is a continuation of the books I challenged myself to read to help my career - one a month, for year. <a href="http://blogs.msdn.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"><u><font color="#0066cc">You can read my first book review here</font></u></a>. The book I chose for November 2011 was: <span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"><font size="3"><font size="2" face="Arial"><span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"><a href="http://www.amazon.com/gp/product/B001UE7DC8/?tag=imreading-20"><span style="mso-bidi-font-family:arial;"><u><font color="#0000ff" face="Arial">Wikinomics: How Mass Collaboration Changes Everything, by Don Tapscott</font></u></span></a><font size="3">&#160;</font></span></font>&#160;</font></span><span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"></span></p> <p><strong>Why I chose this Book: </strong></p> <p>I’ve heard a lot about this book - was one of the “must read” kind of business books (many of which are very “fluffy”) and supposedly deals with collaborating using technology - so I want to see what it says about collaborative efforts and how I can leverage them.</p> <p><strong>What I learned: </strong></p> <p>I <em>really</em> disliked this book. I’ve never been a fan of the latest “business book”, and sadly that’s what this felt like to me. A “business book” is what I call a work that has a fairly simple concept to get across, and then proceeds to use various made-up terms, analogies and other mechanisms to fill hundreds of pages doing it. </p> <p>This perception is at my own – the book is pretty old, and these things go stale quickly. The author’s general point (at least what I took away from it) was: Open Source is good, proprietary is bad. Collaboration is the hallmark of successful companies. In my mind, you can save yourself the trouble of reading this work if you get these two concepts down. </p> <p>Don’t get me wrong – open source is awesome, and collaboration is a good thing, especially in places where it fits. But it’s not a panacea as the author seems to indicate. For instance, he continuously uses the example of MySpace to show a “2.0” company, which I think means that you can enter text as well as read it on a web page. All well and good. But we all know what happened to MySpace, and of course he missed the point entirely about this new web environment: low barriers to entry often mean low barriers to exit. </p> <p>And the open, collaborative company being the best model – well, I think we all know a certain computer company famous for phones and music that is arguably quite successful, and is probably one of the most closed, non-collaborative (at least with its customers) on the planet. So that sort of takes away that argument. </p> <p>The reality of business is far more complicated. Collaboration is an amazing tool, and should be leveraged heavily. However, at the end of the day, after you do your research you need to pick a strategy and stick with it. Asking thousands of people to assist you in building your product probably will not work well. </p> <p>Open Source is great – but some proprietary products are quite functional as well, have a long track record, are well supported, and will probably be upgraded. </p> <p>Everything has its place, so use what works where it is needed. There is no single answer, sadly. </p> <p>So did I waste my time reading the book? Did I make a bad choice? Not at all! Reading the opinions and thoughts of others is almost always useful, and it’s important to consider opinions other than your own. If nothing else, thinking through the process either convinces you that you are wrong, or helps you understand better why you are right.</p>Book Review (Book 5) - The Cloud of Unknowinghttp://sqlblog.com/blogs/buck_woody/archive/2011/10/31/book-review-book-5-the-cloud-of-unknowing.aspxMon, 31 Oct 2011 16:23:23 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:39496BuckWoody<p>This is a continuation of the books I challenged myself to read to help my career - one a month, for year. <a href="http://blogs.msdn.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"><u><font color="#0066cc">You can read my first book review here</font></u></a>. The book I chose for October 2011 was: <span style="font-family:'Bookman Old Style','serif';color:#333333;mso-bidi-font-family:arial;mso-ansi-language:en;"><a href="http://www.amazon.com/gp/product/B00295S2X6/?tag=imreading-20"><span style="mso-bidi-font-family:arial;"><u><font color="#0000ff" size="2" face="Arial">The Cloud of Unknowing, Anonymous</font></u></span></a><font size="3"><font size="2" face="Arial">: The role of faith in life. Once again, this is out of order, but the book came in from a hold at the library so I’ll do this one now.</font> </font></span><span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"> </span></p> <p><strong>Why I chose this Book: </strong></p> <p>This book is probably the most far afield for many of my readers – some folks don’t hold a faith, others have faiths that are different from mine. That’s fine – I think this is still an intriguing read. </p> <p>However this is a religious work – if you’re not into that sort of thing, it’s completely OK. As I’ve mentioned early-on, a book list for your career can include many kinds of books. Faith is such a part of my life that I find it impossible to separate from my day-to-day efforts. To that end, a little about this book is in order. </p> <p>The book was written in the 14th century by an unknown, anonymous author, probably a Carthusian monk in Europe. It’s a work involving the deep thoughts around the intersection of intellection over contemplation. Contemplation is what ancient Catholics called meditation, or focus. It’s a really deep work involving philosophical history, specifically in the Christian tradition. Even as old and philosophical as it is, many contemporary writers, singers (Like Leonard Cohen) and others have referenced it, used it words, or developed entire works around it. </p> <p><strong>What I learned: </strong></p> <p>So what did I learn? Actually quite a bit, specifically on the role in contemplation in life. As a technologist, I tend to stay incredibly busy and the temptation is always to be very scattered. But lack of focus is often the enemy of getting things done correctly. Focusing on what really matters and being in the moment is a powerful tool in professional life. It has taught me that now, more than ever, I need to decide what I will not give a lot </p> <p>As I mentioned, this is a religious work – it has far more value to me there than in the pure business sense, although I find those two linked irrevocably. The way I treat others in both personal and business relationships is my character – which I strive to improve every day. </p> <p>I highly recommend you read something that is internal like this in your career development. Money, success and fame are not all that there is – and those things are not separated from who you are as a person.</p>Book Review: MDX with Microsoft SQL Server 2008 R2 Analysis Services Cookbookhttp://sqlblog.com/blogs/stacia_misner/archive/2011/10/21/39307.aspxFri, 21 Oct 2011 19:46:00 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:39307smisner<p><a href="http://www.packtpub.com/mdx-with-microsoft-sql-server-2008-r2-analysis-services/book"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="1308EN_MDX with Microsoft SQL Server Analysis Services 2008 R2 Cookbook" border="0" alt="1308EN_MDX with Microsoft SQL Server Analysis Services 2008 R2 Cookbook" align="left" width="125" height="152" src="http://sqlblog.com/blogs/stacia_misner/1308EN_MDX-with-Microsoft-SQL-Server-Analysis-Services-2008-R2-Cookbook_6D9346BB.png"></a></p> <p>As I mentioned in <a target="_blank" href="http://blog.datainspirations.com/2011/09/09/back-to-the-future-with-mdx-and-pass/">an earlier post</a>, I first met Tomislav Piasevoli’s (<a target="_blank" href="http://tomislav.piasevoli.com/">blog</a>|<a target="_blank" href="http://twitter.com/tpiasevoli">twitter</a>) in 2008 at the PASS Summit in Seattle, and saw him again most recently again in Seattle at <a target="_blank" href="http://www.sqlpass.org/summit/2011/">PASS Summit 2011</a>. There I had the pleasure of telling him personally how much I liked his book. There are not many MDX books available, so when a new one arrives on the market, I definitely want to take a look. Now I have taught MDX classes for many years, and I think perhaps my first class was in 2002. However, it’s been so long now, I don’t recall exactly when that first class was. What I do know is that my understanding of MDX and my fluency with the language has grown by leaps and bounds since then through experience with all kinds of bleeding edge MDX, and I have tried to communicate some of my insights developed along the way to students in my classroom. MDX concepts can stretch your thinking (to put it mildly), and more so if you have to unlearn SQL concepts as well, which is true of the majority of my students. As a native English speaker, I can find it challenging at times to explain certain aspects of MDX. For all these reasons, I can fully appreciate Tomislav’s efforts to create this book and commend him for his excellent examples and explanations using a language that is not his mother tongue. </p> <p>Tomislav’s book is definitely not for beginners. There is an underlying assumption that you already have some familiarity with the basics of MDX. The purpose of this book is to provide you with the tools necessary to continue building your skills. The chapters group together a series of related concepts, called recipes. You don’t need to read the book sequentially from cover to cover. Instead, you search for the desired outcome, such as handling division by zero errors (described in Chapter 1) or calculating row numbers (found in Chapter 7). Ideally, you don’t just read the recipe, but actually try out the steps yourself. I did some of my reading of this book when I was away from my laptop, and frequently found that I wanted to try out something that Tomislav mentioned. Even long-time MDX developers like myself can find interesting tidbits of information to round out their repertoire!</p> <p>Each concept within a chapter is presented in a similar manner, beginning with “Getting ready” which are the steps you need to perform to set up your query. For example, you might need to work in Management Studio and set up a query as a starting point or open the Script View for a cube in Business Intelligence Development Studio. Then the next section is “How to do it…” which provides step-by-step instructions for working with a query or MDX script to accomplish the intended outcome. Then Tomislav continues with the “How it works…” section which provides background information on the key concepts for the current recipe. This section is the real meat of the book, but is nicely separated from the implementation steps if you want to jump straight to the technical details. Depending on the recipe, Tomislav also includes additional sections, such as “There’s more…” to provide alternative solutions or to point you to helpful links on the Internet such as whitepapers and blog articles providing more insight, and “See also…” to cross-reference you to another recipe in the book that covers a closely related concept.&nbsp; Where applicable, he also includes information about how the techniques in the recipe behave differently in earlier versions of Analysis Services. </p> <h5>Chapter 1: Elementary MDX Techniques</h5> <p>Don’t let the word Elementary fool you into thinking you can learn entry-level MDX from this chapter. As I mentioned earlier, this book is not for beginners. There are good techniques here and a few basics, such as a great explanation of the FORMAT_STRING property and troubleshooting its use. However, I would consider the majority of these techniques to be elementary only as compared to the other techniques found later in the book. For example, the WHERE clause is one of those things that I see people really get into a tangle over (because they can’t forget their T-SQL), and Tomislav demonstrates using it to implement a logical OR on members from different hierarchies and a logical AND for members from the same hierarchy. One of my favorite sections in this chapter is the coverage of alternatives for the FILTER() function, which can cause performance problems. Use this chapter to get grounded with some foundational concepts, then strap on your seatbelt before diving into the rest of the book! </p> <h5>Chapter 2: Working with Time</h5> <p>Time is something that every cube has. Or at least every cube that I’ve ever met. I can’t imagine a cube without one (even if it’s called Date) because often business analysis is comparing one period to another or monitoring trends over time. Tomislav starts with the basics of the YTD() function but delves into variations on the theme and points out pitfalls to avoid. He moves on to parallel periods, moving averages, and finding last dates with data, among other time-related topics. A useful recipe in this chapter is the use of string functions to calculate a date, as I see this requirement a lot when working with Reporting Services reports that use Analysis Services as a source. A good case for working with a single-member named set rather than a calculated member is also made in this chapter.</p> <h5>Chapter 3: Concise Reporting</h5> <p>A report in this chapter means a pivot table used in some front-end tool for Analysis Services, and not Reporting Services exclusively. The goal of this chapter is to reduce the size of the pivot table, and thereby improve performance. I would characterize this chapter as one that helps you find the best or the worst members in a group, whether in a hierarchy, among siblings, or among descendants. Tomislav starts off the chapter with a recipe to get the top N members. In this recipe, Tomislav includes a great explanation of what can go wrong when you use the TopCount() function. Well, it’s not a matter of it behaving incorrectly because it’s doing what you ask. The problem is that many people misunderstand how the TopCount() function behaves under certain conditions and Tomislav delves deeply into the behavior here. He then builds on these ideas throughout the chapter and introduces alternatives for finding and displaying the best and the worst.</p> <h5>Chapter 4: Navigation</h5> <p>Hierarchies in a dimension are extremely useful for a number of reasons, one of which is navigation. The chapter begins with some simple queries that use Boolean logic to test the context of a current member on the row axis, and then expands to use scoping in the MDX script or use a query (using CELL CALCULATION) to determine if members are in the same branch of a hierarchy. Are you confused about when to use the Exists() function and the EXISTING keyword? Tomislav covers them both in this chapter in a variety of contexts. Also, having advocated on behalf of a named set in a previous chapter, Tomislav explores the pros and cons of named sets more fully in this chapter. </p> <h5>Chapter 5: Business Analytics</h5> <p>This chapter covers several techniques that are encountered less frequently (depending on who you ask, I suppose) than those covered up to this point in the book. For example, the chapter begins with linear regression which I’ve never had to use in 10 years of writing MDX. But I said the same about the Correlation() function once upon a time and I now use it frequently in a current project, so my feeling is that you never know when you’ll need to use a seemingly obscure function. Because these analytical functions are used less commonly, the amount of information available through Books Online or elsewhere on the Internet is pretty slim. Therefore, having this chapter’s working examples at your fingertips is invaluable. Also covered in this chapter is adjusting forecasts based on periodic cycles, alternative approaches to expense allocations, finding slow-moving inventory items, categorizing customers, and ABC analysis (which is an application of Pareto analysis).</p> <h5>Chapter 6: When MDX is Not Enough</h5> <p>In this chapter, Tomislav makes the case that when an MDX approach gets overly complicated, it’s time to look at making changes to the dimension or cube design. For example, he says, “Every time you catch yourself using functions like Except(), Filter(), or similar() too often in your calculations, you should step back and consider whether that’s a repeating behavior and whether it would pay off to have an attribute to separate the data you’ve been separating using MDX calculations.” He also explains how and why to create a placeholder measure in the cube to use with assignments in the MDX script. Utility dimensions for unit conversion or for time-based calculations are also covered in this chapter.</p> <h5>Chapter 7: Context-aware Calculations</h5> <p>Understanding context is an important aspect of MDX development. As Tomislav explains in the introduction to this chapter, context can be unpredictable based on what a user might select to place on rows and columns, or it can be partially known when you expect a particular measure or hierarchy to be used, or it can be completely known. The trick is to produce a calculation that behaves correctly regardless of context, which can be made trickier based on a combination of factors that Tomislav describes. The recipes in this chapter help you explore context from a number of, um, contexts, starting with how to know how many columns and rows will be in a query’s result set, how to determine which axis contains measures, how to determine what has been placed on an axis, among other useful techniques. </p> <h5>Chapter 8: Advanced MDX Topics</h5> <p>Now frankly I considered several of the recipes up to this point to be advanced, so I had to chuckle at the title of this chapter. Let’s just say these recipes are more complex! In this chapter, you’ll find techniques for working with parent-child hierarchies and displaying random values for sampling purposes. Hopefully, you’re avoiding the use of parent-child hierarchies and random sampling is not a common request in reports, so this section of the chapter is interesting primarily from an academic viewpoint. But then we move to complex sorts – a very useful subject indeed. Tomislav provides several examples and highlights potential problem areas. Also in this chapter is a recipe for recursively calculating cumulative values.</p> <h5>Chapter 9: On the Edge</h5> <p>Tomislav uses this chapter to collect topics that don’t neatly fit into the earlier chapters. Here he covers Analysis Services stored procedures (which are nothing like T-SQL stored procedures, by the way), as well as using the OPENQUERY() and OPENROWSET() functions for calling MDX from a T-SQL statement. He also introduces Dynamic Management Views (DMVs) for documenting and monitoring cubes, and shows how to use SQL Server Profiler to capture MDX queries. Last, he shows how to use the DRILLTHROUGH command.</p> <h4></h4> <p>If you’re an MDX developer, whether brand new or experienced, you will find lots of good information in this book and practical examples of how and why to implement specific techniques. I definitely recommend that you add it to your library, in whatever format you prefer. It’s available in <a target="_blank" href="http://www.packtpub.com/mdx-with-microsoft-sql-server-2008-r2-analysis-services/book">paperback, PDF, ePub and Mobi from the publisher</a> and in <a target="_blank" href="http://www.amazon.com/Microsoft-Analysis-Services-Cookbook-ebook/dp/B005HIK89S/ref=sr_1_2?ie=UTF8&amp;qid=1319215803&amp;sr=8-2">Kindle format from Amazon</a>. </p>