Tag: "in-memory"
SQL Server 2016 SP1 removes the editions’ programming feature limits! Everything from Always Encrypted to XTP/In-memory for everybody!
Nov 16th
SQL Server 2016 SP1 entfernt Programmier-Feature-Limits der Editionen! Alles von Always Encrypted bis XTP: In-Memory für Alle!
Unglaubliche Neuigkeiten, anders kann man es gar nicht sagen: Mit dem heute erschienenen Service Pack 1 für SQL Server 2016, macht Microsoft den programmiertechnischen Unterschieden zwischen den Editionen der relationalen Datenbankengine (LocalDB, Express, Standard, Web, Enterprise) ein Ende! Ab heute kann JEDER, der bereits auf SQL Server 2016 arbeitet, In-Memory optimierte Tabellen erstellen, Tabellen partitionieren, Columnstore Indexe verwenden, etc. etc. Und wenn das nicht reichen würde, bringt das SP1 auch für sich genommen viele weitere wertvolle neue Features wie „Database Clones“, „CREATE OR ALTER“-Syntax, viele neue Diagnose-Verbesserungen (Showplan, XEvents, DMVs, Errorlog), NUMA-Awareness für Analysis Services und weiteres (mehr Infos im offiziellen Announcement von Microsoft hier). Wow, einfach wow… die Möglichkeiten, die dies für Kunden eröffnet sind unglaublich. Vorbei die Zeiten zwingend darauf aufzupassen, keine Enterprise Features wie Compression oder Datenbank-Level-Auditing auf Standard-Editionen zu deployen. Die In-Memory Revolution ist nun für alle da! Bevor ihr fragt, was dann überhaupt noch die Editionsunterschiede sind: Was bleibt und bleiben wird, ist, dass die größeren Editionen einfach mehr Hardware unterstützen. Die Limits von 16 Cores und 128 GB RAM für die Standard Edition und noch weniger für Express bleiben bestehen. Das ist und bleibt entscheidend. Aber definitiv muss ich mir einen neuen Spruch ausdenken: Früher pflegte ich immer zu sagen: „Um zu entscheiden, ob ein Feature Enterprise ist, reicht, zu wissen, ob es ‘cool‘ (z.B. Database Snapshot) oder ‘schnell‘ (z.B. Columnstore) ist.“ |
These are just sublime news, there is no other way to put it: With the Service Pack 1 for SQL Server 2016 released today, Microsoft puts an end to the differences in the relational database Engine in terms of programmability features between the editions (LocalDB, Express, Standard, Web, Enterprise)! As of today, EVERYONE who is already working on SQL Server 2016 can create In-Memory optimized tables, partitioned tables, use Columnstore Indexes and so forth. And as if that weren’t enough, the SP1 itself also includes many more valuable features such as “Database Clones,” “CREATE OR ALTER”-syntax, many new diagnosis improvements (Showplan, XEvents, DMVs, Errorlog), NUMA-Awareness for Analysis Services and more (read more in the official announcement of Microsoft here). Wow, just wow… the possibilities thus offered to customers are unbelievable. Gone are the days when you had to make sure not to deploy any Enterprise features such as Compression or Database level auditing on Standard Editions. The In-Memory Revolution is now available to everybody! Before you ask how, then, the editions will differ: What will remain in place is that the larger editions simply support more hardware. The limits of 16 Cores and 128 GB RAM for the standard edition and even less for Express will remain the same. That is and remains key. But I definitely need to think of a new line: In the past, I always used to say: “In order to decide whether a feature is Enterprise it suffices to know if it’s ‘cool’ (e.g. Database Snapshot) or ‘quick’ (e.g. Columnstore).” |
Ab heute gilt: die Größe macht den Unterschied. Bevor mich jemand falsch zitiert: es gibt durchaus noch Features, die der Enterprise-Edition vorbehalten bleiben. Die Betonung bei der Gleichziehung liegt auf Programmier-Features. Reine HA-Features wie z.B. multiple Secondaries, bestimmte Sicherheitsfeatures wie TDE oder Engine-interne Performance Optimierungen wie „Advanced Read-Ahead“, Star Join-Optimierung usw. bleiben der Enterprise Edition vorbehalten. Manches bleibt auch technisch beschränkt. So hat man für Change Data Capture unter der Express-Edition ja keinen SQL Agent. Aber das sollte die Freue nicht schmälern. Und hier geht es zum Download des Microsoft® SQL Server® 2016 Service Pack 1 (SP1): |
As of today, the following applies: it is the size that makes the difference. But before someone gets me wrong: There are definitely still features that remain exclusive to the Enterprise edition. The emphasis on the getting equal is on the programming features. Mere HA features such as multiple secondaries, and certain security features such as TDE or engine-internal performance optimizations like “Advanced Read-Ahead”, Star Join-Optimization etc. remain exclusive to the Enterprise edition. Some of it also remains limited in technical terms. For Change Data Capture, for example, you do not have an SQL Agent in the Express edition. But that shouldn’t cut down on the joy. Here, you can download the Microsoft® SQL Server® 2016 Service Pack 1 (SP1): |
www.microsoft.com/en-us/download/details.aspx?id=54276
Und hier noch ein paar weitere Links zu den Neuerungen mit dem Service Pack 1: |
And here some more links about the changes with Service Pack 1: |
What’s new in SQL Server 2016 SP1 for Reporting Services
Microsoft Changes Feature Support Between Editions in SQL Server 2016 Service Pack 1 (Article by my good fellow Victor Isakov, MCM and MCA from Australia with nice background details)
Viel Spaß mit dem SP1 und beim Ausprobieren der neu verfügbaren Features. Und wenn Sie jetzt meinen, dass Sie nicht nur lesen wollen, sondern sich tiefergehendes Wissen aneignen oder endlich auf die aktuelle SQL Server Version upgraden wollen, helfen wir von Sarpedon Quality Lab® Ihnen gerne. |
Have fun with the SP1 and trying the newly available features. And if you now feel like reading isn’t enough but you would like to acquire in-depth knowledge or finally upgrade to the current SQL Server Version, you are in good hands with Sarpedon Quality Lab®. |
Andreas Wolter
The SQL Server 2016 In-Memory Evolution – from row-store to columnstore to in-memory operational analytics
Jul 1st
(DE) - Was hinter der im SQL Server 2014 eingeführten In-Memory Engine von SQL Server steckt, habe ich auf diversen internationalen Konferenzen und in der IX bereits 2014 vorgestellt. Zu einem Blog-Artikel bin ich leider bisher nicht gekommen. In diesem Artikel möchte ich die Neuerungen und Verbesserungen beleuchten, an denen Microsoft die letzten 2 Jahre gearbeitet hat, und die viel auf Kundenfeedback zurückzuführen sind. Feedback, welches in einem großen Maße noch aus „nicht umsetzbar, weil dies und dies fehlt“ bestand. Und eines kann ich vorwegnehmen: in meinen Augen hat Microsoft die überwiegende Anzahl an Blockern adressieren können. |
(EN) - At various international conferences and already at the IX in 2014 I have presented what is behind the In-Memory Engine of SQL Server introduced in SQL Server 2014. Only I had not yet found the time to put it into a blog article so far. In this article I will illuminate the innovations and improvements Microsoft has been working on for the past 2 years, and which can be attributed much to customer feedback. In fact, feedback that to a great extent consisted of notes like “not practicable because this and this is missing.” And let me say one thing before I start: in my view, Microsoft has been able to address the majority of blockers. |
Das heißt, In-Memory ist für jeden mindestens eine Evaluierung Wert, und in fast allen Datenbank-Projekten finden sich Strukturen, sie man In-Memory eleganter lösen kann. – Ok, nicht für ganz jeden, denn dieses Feature ist leider der Enterprise-Edition vorbehalten. |
That means, everybody should at least consider evaluating In-Memory, and in almost all database projects there are structures that can be solved more elegantly In-Memory. – Ok, maybe not for everybody, because this feature is unfortunately limited to the enterprise edition. |
Die wichtigsten Neuerungen für memory optimierte Tabellen sind: Man kann nun sowohl Unique Indexe als auch Fremdschlüssel-Constraints definieren. Letztere sind nur zwischen memory-optimierten Tabellen möglich (und nicht zwischen Disk-/Page-basierten und memory-optimierten Tabellen), und müssen sich immer auf den Primärschlüssel beziehen – der Verweis auf Unique Indexe ist nicht möglich. Auch sind nun NULL-Werte in Nicht-Unique Indexen zulässig (Anders als bei Disk-basierten Tabellen nicht in Unique-Indexen!). Ebenfalls sehr wichtig ist die Unterstützung aller Codepages und von Nicht-Unicode-Daten sowie die Verschlüsselung der memory-optimierten Daten mit TDE (ergo nicht im Arbeitsspeicher selber sondern der Daten, die auf der Festplatte abgelegt werden). *1 Das waren in meinen Augen die häufigsten Blocker in Projekten, in denen In-Memory evaluiert wurde, da es dafür kaum praktikable Workarounds gab. *1 Daten-Verschlüsselung mit den ENCRYPTION-Funktionen in SQL Server wird nicht unterstützt – das gilt auch für die neue Always Encrypted Technologie und Dynamic Data Masking. Row-Level Security von SQL Server 2016 wird aber unterstützt. Die Prädikate und Funktionen, müssen dann nativ kompiliert werden. Sehr cool, wenn ihr mich fragt. |
The most important innovations for memory-optimized tables are: It is now possible to define Unique Indexes as well as foreign key constraints. The latter are only possible between memory-optimized tables (and not between disk-/page-based and memory-optimized tables), and must always refer to the primary key – referring to Unique Indexes is not possible. Moreover, NULL-values in Non-Unique Indexes are now allowed (as opposed to disk-based tables not in Unique Indexes!). Equally very important is the support of all code pages and of non-Unicode data as well as the encryption of memory-optimized data with TDE (hence not in the main memory itself but of the data that stored on disk). *1 In my view, these were the most frequent blockers in projects in which In-Memory was evaluated, as there were hardly any practicable workarounds for this issue. *1 Data encryption with the ENCRYPTION functions in SQL Server is not supported – this is also true for the new Always Encrypted Technology and Dynamic Data Masking. Row-Level Security of SQL Server 2016 yet is supported. The predicates and functions must consequently be compiled natively. Very cool, if you ask me. |
Eine weitere Einschränkung ist mit der Möglichkeit, Memory-optimierte Tabellen im Nachhinein zu ändern, entfallen. So sieht das im Code an einem Beispiel aus: |
A further limitation has been eliminated with the possibility of altering Memory-optimized tables afterwards. This is how it looks in a sample code: |
Statistiken können auch mit SAMPLE anstelle FULLSCAN aktualisiert werden, und vor allem auch automatisch. Datentypen: LOB-Datentypen wie varchar/varbinary(max) werden unterstützt, und werden „off-row“ gespeichert. |
Statistics can also be updated with SAMPLE instead of FULLSCAN, and, above all, automatically as well. Data type: LOB datatypes such as varchar/varbinary(max) are supported and stored “off-row.” |
Wichtige, neu unterstützte T-SQL Funktionalitäten innerhalb von Natively compiled Stored Procedures und, ganz neu, Functions sind: die OUTPUT-Klausel, UNION und UNION ALL, DISTINCT, OUTER JOINs, Unterabfragen. Außerdem können nativ kompilierte Prozeduren nun auch mit ALTER PROCEDURE verändert werden. Dadurch werden sie naturgemäß im letzten Schritt in der neuen Form kompiliert abgelegt.Um für den Fall von geränderten Statistiken einen neuen Ausführungsplan zu ermöglichen, kann man nun auch sp_recompile gegen nativ kompilierte Prozeduren (und Funktionen) ausführen. |
Important, newly supported T-SQL functionalities within Natively compiled Stored Procedures and, brand new, Functions, are: the OUTPUT clause, UNION and UNION ALL, DISTINCT, OUTER JOINs, subqueries. Moreover, natively compiled procedures can now also be changed with ALTER PROCEDURE. In this way, they will naturally be stored compiled in the new shape in the last step. |
Auch an der Performance wurde weiter geschraubt. So können memory-optimierte Tabellen und Hash-Indexe jetzt (im InterOP Mode) parallel gescannt werden. Im IO Bereich wurde der gesamte Checkpoint-Prozess überarbeitet und die Datenfiles können nun mit multiplen Threads geschrieben und gelesen werden, wodurch sich der Durchsatz fast auf ein zehnfaches erhöhen kann (wenn das IO-Subsystem da mithält). |
Performance, too, was further tweaked. As a result, memory-optimized tables and Hash-indexes can now (in InterOP mode) be scanned simultaneously. In the IO area, the entire checkpoint process was reviewed and the data files can now be read and written with multiple threads, which may result in an almost tenfold increase of the throughput (if the IO-subsystem keeps up with it). |
Columnstore-Technologie Was hat sich eigentlich in der anderen, seit 2012 im SQL Server integrierten Storage-Engine „Vertipaq“ mit den Columnstored Indexen getan? Diese sind ja ebenfalls Main-memory optimiert, jedoch mit ganz anderem Ziel: Speicherplatzoptimierung und effiziente OLAP-Style-Queries. Die Neuerungen hier sind sehr essentiell: Beide Columnstore Index Typen, Clustered und Nonclustered, sind nun aktualisierbar! |
Columnstore Technology What has been going on in the other Storage-Engine “Vertipaq”, integrated in SQL Server since 2012, with the Columnstored Indexes? These are also Main-memory optimized, but with an entirely different objective: The innovations here are very essential: Both Columnstore Index Types, Clustered and Nonclustered, can now be updated! And something else is now possible: Nonclustered Columnstore can be created with a filter. |
Mit diesen neuen Techniken lässt sich zum Beispiel folgendes Problem lösen: Eine Tabelle mit Verkaufstransaktionen wird im Sekundentakt durch kleine Inserts gefüllt. Mit der Möglichkeit einen Nonclustered Columnstore Index zusätzlich zu dem Clustered Index anzulegen, spart man nicht nur Indexe, (denn der Columnstore-Index kann ja jede nötige Spalte abdecken) sondern mit einem geschickt gesetzten Filter kann man auch den Index-Overhead vermeiden, der sonst die eigentlich wichtigeren Inserts treffen würde. Die Vermischung aus OLTP- und OLAP-Abfragen sind eines der typischsten Probleme von Datenbanken, und diese neuen Möglichkeiten sind daher einfach ein Traum für Datenbank-Architekten. |
By means of new techniques the following problem can be solved, for example: A table with sales transactions is filled by small inserts at intervals of seconds. The possibility to create a Nonclustered Columnstore Index in addition to the Clustered Index does not only save Indexes (because the Columnstore Index can cover every necessary column), but with a smartly applied filter the Index-Overhead can also be avoided that would otherwise affect the actually more important inserts. The mixing of OLTP and OLAP queries are one of the most typical problems in databases, and these new possibilities are thus simply a dream for database architects. This is how it will look in code: |
40% Performance-Verbessrung im TPC-H Benchmark Diese Verbesserungen haben den SQL Server 2016 im TPC-H Benchmark performance-technisch mit fast 40% mehr QphH (Query-per-Hour Performance Metric) am SQL Server 2014 vorbeiziehen lassen. Auf dem Screenshot kann man sehen, dass der Benchmark am 9.3.2016 eingesendet wurde, und auch wirklich auf derselben Hardware wie am 1.5.2015 unter SQL Server 2014 erzielt wurde. |
40% Performance-Improvement in TPC-H Benchmark In terms of performance, these improvements have made the SQL Server 2016 pull ahead of SQL Server 2014 by close to 40% more QphH (Query-per-Hour Performance Metric) in the TPC-H Benchmark. You can see in the screenshot that the Benchmark was sent in on 9 March 2016 and really was achieved on the same hardware as under SQL Server 2014 on 1 May 2015. |
Weitere wichtige Verbesserungen für Columnstore sind die Unterstützung des SNAPSHOT Isolation Level (und RCSI), was besonders für Read-Only Replicas von Availability Groups wichtig ist, sowie Online-Defragmentierung und diverse Analyse-Verbesserungen. |
Further important improvements for Columnstore include the support of the SNAPSHOT Isolation Level (and RCSI), which is especially important to Read-Only Replicas of Availability Groups, as well as online-defragmentation and various analysis enhancements |
Das Highlight: Real-time Operational Analytics & In-Memory OLTP Das Highlight Schlechthin aber ist sicherlich die Kombination aus memory-optimierten Tabellen und ColumnStore Indexen. Damit werden zwei Features, die für völlig gegensätzliche Abfrage-Typen, OLTP und OLAP, optimiert sind, verschmolzen. |
The highlight: Real-time Operational Analytics & In-Memory OLTP The absolute highlight however is surely the combination of memory-optimized tables and ColumnStore Indexes. As a result, two features that are optimized for entirely opposing query types – OLTP and OLAP – are merged. |
Technik Technisch kommt ein Clustered Columnstore Index zum Einsatz. Dieser lässt, wie man in dem Bild sehen kann, den „hot-Bereich“ der Daten aus, um den Overhead durch die doppelte Datenhaltung bei Änderungen bzw. den potentiell schnell aufeinander folgenden Inserts in diesem Bereich zu vermeiden. Zusätzlich zu der implizierten Delta Rowgroup (im Bild: Tail), die durch den memory-optimierten Index abgedeckt wird, gibt es eine „deleted rows table“ für gelöschte Daten. Beide Bereiche werden nach dem für Columnstore Indexe standardmäßigen Schwellwert von 1 Million Zeilen asynchron komprimiert/dem CCI hinzugefügt. An dieser Stelle noch ein Hinweis: auch die maximale Datenmenge, die pro Datenbank in (durable) memory-optimierten Tabellen gehalten werden kann, ist nun entfernt worden! |
Technical facts In technical terms, a Clustered Columnstore Index is applied. As can be seen in the image, it omits the “hot-spot” of the data in order to prevent the overhead through the double data storage in case of alterations and the potentially quick succession of inserts in this area. In addition to the implied Delta Rowgroup (in the image: Tail) that is covered by the memory-optimized index, there is a “deleted rows table” for deleted data. Both areas are asynchronously compressed/added to the CCI according to the Columnstore Index standard threshold value of 1 million cells. At this point, let me add another note: the maximum data amount that can be stored per database in (durable) memory-optimized tables has now been eliminated, too! |
Und die Umsetzung in Code sieht so aus: |
And applied in code, it would look like this: |
Im Ergebnis hat man nun das Beste aus beiden Welten: hochperformante Inserts/Updates/Deletes und Singleton-Abfragen, und zugleich hochperformante analytische Abfragen, die mit vielen Millionen Zeilen auf einmal hantieren – und zwar zeitgleich auf derselben Tabelle! |
The outcome now offers the best from both worlds: high performing inserts/updates/deletes and singleton-queries, and at the same time high performing analytic queries that handle many millions of cells at once – and in fact at the same time in the same table! |
Eine Einschränkung beim Abfragen ist, dass der Columnstore Index auf memory-optimierten Tabellen nur im InterOP-Modus funktioniert – also nicht in nativ kompilierten Prozeduren. Und da wären wir beim letzten Thema: |
One restriction in querying is that the Columnstore Index in memory-optimized tables only works in the InterOP mode – thus not in natively compiled procedures. Which leads us to the last topic: |
Offene Punkte, fehlende Feature-Unterstützung Folgende Features vermisse ich persönlich noch am meisten:
Die vollständige Liste befindet sich hier: |
Open points, missing feature support There are of course still a number of features that have been taken over into SQL Server due to the decade-long development of the SQL language, but which have not made it into the new XTP Engine yet. This is not just because the latter is “simply new” but also because due to the completely different architecture of this engine, which is radically tailored to In-Memory, there are several significant differences vis-à-vis the traditional database engines. Personally, I miss the following features the most:
For the complete list, visit: |
Transact-SQL Constructs Not Supported by In-Memory OLTP
Call to Action Auch wenn die Liste an fehlendem Feature/Funktionssupport immer noch recht lang ist – die wenigsten nutzen wirklich all diese Features voll aus. Und für die meisten dieser übriggebliebenen „Blocker“ gibt es eigentlich recht gute Workarounds, sei es in Form einer anderen Architektur oder Code-technisch. Man muss auch bedenken, dass die In-Memory Tabellen nicht für alle Szenarien überhaupt Sinn machen, sondern eher für die Top-belasteten Tabellen Sinn machen. Und da sollte man sich ohnehin bereits etwas Mühe beim Design gemacht haben. Generell bin ich der festen Meinung, dass sich in fast jedem Datenbankprojekt einige Stellen finden werden, die von In-Memory Funktionen profitieren können. Warum kann ich das so sicher sagen? Bereits seit SQL 2014 gibt es die Möglichkeit neben Memory-optimierten Tabellen auch Memory- optimierten Tabellen Variablen zu verwenden. Und mit diesen lassen sich wiederum viele Temptable-Konstrukte ablösen. Nun werden dadurch nicht unbedingt gleich ganze Applikationen performanter, aber es ist ein Anfang, sich mit In-Memory Codetechnisch auseinanderzusetzen und langsam aber sicher damit zu programmieren. Ein weiterer „Quick-Win“ ist oft in Datawarehouse-Architekturen im sogenannten „Staging-Bereich“ zu finden, wie er gerade in traditionellen DW-Systemen häufig zum Einsatz kommt. Und über diese „Einfallstore“ ist man ganz schnell in der „In-Memory-Welt“ angekommen. |
Call to Action Even though the list of missing feature/function support is still quite long, only few really make full use of these features. And for most of the remaining “blockers” there are actually quite good workarounds, be it in the form of a different architecture or in code terms. One has to bear in mind that the In-Memory tables do not necessarily make sense for all scenarios, but rather for the top-affected tables. And as for the latter, one should already have put some effort into the design anyway. In general, I firmly believe that in almost every database project there are some instances that may profit from In-Memory functions. Why can I be so sure? Already since SQL 2014 it has been possible to use memory-optimized table variables aside from memory-optimized tables. And using these, in turn, many temptable-constructs can be replaced. Now that does not necessarily result in higher performing applications right away, but it is a good way to start dealing with In-Memory in terms of code and to slowly but surely start programming with it. A further “Quick-Win” can often be found in data warehouse architectures in the so-called “staging area,” as it is frequently being applied in traditional DW-systems at the moment. And it is via these “gateways” that you have will have ended up in the “In-Memory world” before you know it. |
Cu In-Memory
Andreas
PS:
If you are in India in August and want to advance your skills in those new technologies there is still a chance to get a seat in the Precon "Present and Future: In-Memory in SQL Server – from 0 to Operational Analytics Master" at SQL Server Geeks Summit in Bangalore on August 10.
Sarpedon Quality Lab presenting SQL Server 2016 In-Memory and Security Features in Arabia at SQL Gulf 3
Apr 15th
مرحبا
(“MARR-hah-bah”, Arabic: Hello) This year takes me to yet another part of the world: I have been invited to speak at THE SQL Server Conference in the Middle East: at SQL Gulf 3 taking place in Riyadh, Saudi Arabia on April 23rd. I feel very much honored to be among the selected speakers: Denny Cherry, Victor Isakov, Peter Myers, Satya Shyam K and Shehap El-Nagar the organizer himself, who has done a great job pulling this off the third time!For example about 7 TV stations are expected to cover this event! |
(“MARR-hah-bah”, Arabisch: Hallo) Dieses Jahr bringt mich an eine weitere Gegend dieser Welt: Ich bin eingeladen worden auf DER SQL Server Konferenz im Nahen Osten: auf der SQL Gulf 3, die am 23. April in Riad Saudi Arabien stattfindet, als Sprecher aufzutreten. Ich fühle mich sehr geehrt unter den ausgewählten Sprechern zu sein: Denny Cherry, Victor Isakov, Peter Myers, Satya Shyam K und Shehap El-Nagar dem Organisator selbst, der einen tollen Job gemacht hat, das zum dritten Mal zu leisten.So werden zum Beispiel ca. 7 TV-Sender werden von diesem Event berichten! |
I will be giving two presentations. The first one is on the new In-Memory capabilities of SQL Server 2016, which have been tremendously enhanced, and the second one is on the new Security features which represent one of the pillars of this release: |
Ich werde zwei Vorträge halten. Einen über die neuen In-Memory Fähigkeiten von SQL Server 2016, die enorm verbessert worden sind und den zweiten zu den neuen Sicherheitsfeatures, die eine der drei Säulen dieses Releases darstellen: |
SQL Server 2016 – the evolution of In-Memory technologies
For SQL Server 2014 a completely new In-Memory Engine for memory optimized table & indexes was integrated into SQL Server with in fact very limited functionality.
For SQL Server 2016 the In-Memory engine is being extensively improved in terms of both scalability and T-SQL language support. Moreover, the ColumnStore index technology has been improved and can now even be combined with memory-optimized tables.
In this session I will provide an overview of the new possibilities and demonstrate where a particular technology may help – or where you cannot expect benefits. If you are planning to go on SQL Server 2016 any time soon, this session shows you two of the most important features that SQL Server 2016 brings.
SQL Server 2016 – the Security Release
In this session I will give insights into the most important security features of SQL Server 2016. In fact, this release will introduce completely new features that serve data security on different levels. The top 3 features are: Dynamic Data Masking, Row Level Security, and, as a highlight: Always Encrypted. Also, the new possibilities in Azure will not remain unmentioned either. The session will provide technical insights and demos but also hints to security traps. In the end a system is only as secure as its weakest spot.
This session aims to assist Administrators as well as Developers in determining the right technologies for their needs.
I am looking forward to making many new contacts with people from this region of the world that is striving for modernization in many aspects and already reached the top in several. |
Ich freue mich darauf, viele neue Kontakte mit Menschen aus dieser Region, die in vielerlei Hinsicht nach Modernisierung strebt und in einigen bereits Spitzenklasse erreicht hat, zu machen. |
مع السلامة (Ma’a salama)
Andreas
SQL Server 2016 – the Security & Performance Release / ein Sicherheits- und Performance-Release
May 31st
(DE) |
(EN) |
Die Schlüsselfeatures sind demnach: Always Encrypted Mit diesem Feature ist es endlich möglich, eine Datenverschlüsselung anzubieten, bei der SQL Server selber keinen Zugriff auf die Daten im unverschlüsselten Zustand hat – und auch ein Datenbankadministrator Daten nicht entschlüsseln kann. Der Schlüssel wird hierbei in der Applikation bereitgehalten, wo die Verschlüsselung und Entschlüsselung stattfindet. Das war bisher nur mit eigenen Entwicklungen möglich. |
Its key features are: Always Encrypted With this feature it is finally possible to offer encrypted data where SQL Server itself does not have access to the data in unencrypted form and where the database administrator is incapable of decrypting the data. The key is held within the very application where the encryption and decryption takes place. Up to now encryption/decryption was only possible if users developed solutions on their own. |
Stretch Database Stretched Tables bieten die Möglichkeit, innerhalb einer Tabelle Daten sowohl On-Premise als auch in der Cloud zu halten. Ähnlich wie bei Partitionierung wird hier transparent für die Applikation ein Teil der Daten nach Microsoft Azure ausgelagert, und nur dann geladen, wenn nötig. – Hier sollte man also sicherstellen, mit ungünstigen Abfragen keine Index-Scans in die Cloud zu verursachen. |
Stretch Database Stretched Tables offer the option to store data in a given table both On-Premise and in the Cloud. Similar to partitioning, part of the data will be swapped to Microsoft Azure, transparently to the application, and only accessed when necessary. Here it might be advisable to avoid causing index-scans to the cloud with badly designed queries. |
Um die Daten zu schützen funktionieren Stretched Tables auch im Zusammenspiel mit Always Encrypted. Es bleibt abzuwarten, wie dieses Feature die Hemmungen, Daten in die Cloud zu geben, beeinflusst. Microsoft selber hat jedenfalls sicherlich kein Interesse daran, den Zugang zu seinen Systemen für Geheimdienste zu vereinfachen, und Always Encrypted dürfte ein klares Signal sein. |
To protect the data, Stretched Tables also work together with Always Encrypted. It remains to be seen, how this feature affects the inhibition to give data to the cloud. Microsoft itself surely has no interest to make access to its systems simple for intelligence, and Always Encrypted should be a clear signal. |
Real-time Operational Analytics & In-Memory OLTP Unter diesem Feature verbirgt sich die Verheiratung der beiden „Performance-Killer“ Features Columnstore Indexe – für OLAP-Szenarien – und Memory Optimized Tabellen für In-Memory OLTP. Das heißt damit sind performante analytische Abfragen auf den frischen OLTP Daten in In-Memory möglich. In meinen Augen ist dieses Feature der Killer überhaupt, da Indexe auf den Tabellen direkt synchron sein müssen, und nicht, wie bei manch anderem Anbieter von In-Memory Datenbanken, erst mit Verzögerung die Daten erhalten. Auf dem PASS Summit 2014 war dieses Feature bereits kurz zu sehen, jedoch erst jetzt ist es offiziell und hat einen Namen. |
Real-time Operational Analytics & In-Memory OLTP Under this feature lies the marriage of the two „performance-killer“ features Columnstore Indexes – for OLAP-Scenarios – and Memory Optimized Tables for In-Memory OLTP. This enables for fast analytical queries on the fresh OLTP data in In-Memory. In my eyes this feature is the ultimate killer, since indexes on the tables have to be synchronous and not, like at some other vendors of In-Memory databases, only receive the data after a certain delay. At PASS Summit 2014 this features was already biefly presented, but only now it is official and has a name. |
Das waren die Highlights, jedoch ist die Liste der weiteren neuen Features noch lang, und auch diese haben es in sich. Ich versuche, die wichtigsten einmal aufzulisten: |
Those were the highlights, but the list of further new features is still long and highly potential. I try to list the most important ones: |
Verbesserungen zu Columnstore Indexes
|
Improvements to Columnstore Indexes
|
Verbesserungen für In-Memory OLTP
|
Improvements for In-Memory OLTP
|
Und weitere neue Security-Features: Dynamic Data Masking Damit lässt sich, basierend auf Policies, definieren, dass je nach User bestimmte Daten nur maskiert angezeigt werden. |
And further new Security-Features: Dynamic Data Masking Based on Policies allow to define that depending on the user certain data is only shown maked. |
Row-Level Security Row-Level Security (RLS) ist um genau zu sein ein Feature um die Entwicklung von Zeilenbasierten Zugriffsmechanismen wesentlich zu vereinfachen und aus der Applikation in die Datenbank zu verlagern. In der jetzigen Implementation ist es noch recht einfach, über Side-Channel Attacken dennoch an die Daten heranzukommen. Daher muss man, wie eigentlich immer bei Sicherheits-Design, alle Bestandteile der Applikation im Blick haben. Warum eine wirklich sichere Zeilenbasierte Zugriffskontrolle nicht so trivial ist, kann man unter anderem in diesem Blog-Post von mir nachlesen: |
Row-Level Security Row-Level Security (RLS) is, to be exact, a feature to greatly simplify the development of row-based access-control, and move from the application into the database. In the current implementation it is still quite easy, to get via Side-Channel Attacks to the data. Therefore, as always when designing for security, one has to have an eye on all parts of the application. Why a truly secure row-based access control is far from trivial, one can find out among others in this blog-post of me: |
SQL Server Row- and Cell-Level Security – Disclosure vulnerability
Weitere Features in verschiedenen Bereichen: PolyBase Abfragen von relationalen und Nicht-relationalen Daten in Hadoop-Clustern mit T-SQL über sogenannte External Tables. |
Further features in different areas: PolyBase Querying of relational and non-relational data in Hadoop-Clusters with T-SQL via so-called External Tables. |
Query Store Dieses Feature wurde schon mehrere Male von Conor Cunningham auf verschiedenen Konferenzen angedeutet. Jetzt kommt es wirklich. |
Query Store This feature has been presented several times at different conferences by Conor Cunningham. Now it is finally coming into the product. |
Live Query Statistics Im SQL Server 2016 erwecken Ausführungspläne „zum Leben“. Das lässt sich am besten mit einem Bild/Video veranschaulichen: |
Live Query Statistics In SQL Server 2016 query plans „come to live“. This is illustrated best with a picture/video: |
Temporal Tables Mit Temporal Tables werden Daten automatisch versioniert und stehen später für Abfragen nach Zeitraum der Gültigkeit zur Verfügung. Ähnlich, wie man es für Slowly Changing Dimensions/SCDs (Langsam veränderliche Dimensionen) in Datawarehouses selber oft entwirft. |
Temporal Tables With Temporal Tables data is automatically versioned and available for later querying based on time-span of validity. Similar to how one often designs oneself manually for Slowly Changing Dimensions/SCDs in Datawarehouses. |
Trace Flag 4199, welches seit SQL Server 2005 SP3 CU 6 für alle SQL Server Installationen relevant ist, da es diverse Fixe des Query Prozessors erst aktiviert soll mit dem SQL Server 2016 kaum noch nötig sein. Warten wir auf Details, um das beurteilen zu können. |
Trace Flag 4199, which is relevant for all SQL Server Installations since SQL Server 2005 SP3 CU 6, since it enables certain fixes of the query processor is supposedly mainly unnecessary for SQL Server 2016. Let’s wait for details for a final judgement. |
Multiple Tempdb Datendateien Bei der Installation wird direkt nachgefragt, wie viele TempDB Datendateien angelegt werden sollen. Standardmäßig wird hier die Anzahl der Cores mit einem Maximum von 8 verwendet. Damit werden auch weniger versierte Administratoren auf die Thematik von Latch-Contention in der Tempdb aufmerksam, und eine wichtige Best Practice wird damit standardmäßig angewandt. |
Multiple Tempdb Data Files Already at Setup one has to specify how many TempDB data files will be created. By default the number of cores with a maximum of 8 will be used. BY that that also less experienced administrators will become aware of Latch-Contention in Tempdb, and an important Best Practice is applied by default. |
Hochverfügbarkeit
|
High Availability
|
T-SQL
|
T-SQL
|
|
|
Analysis Services · Paralleles Processing (Aufbereiten) für multiple Table Partitions in Tabular Modellen · Neue DAX Funktionen |
Analysis Services · Parallel Processing for multiple Table Partitions in Tabular Models · New DAX Functions |
Integration Services · AlwaysOn-Unterstützung für die SSIS-DB · Inkrementelles Deployment von Paketen |
Integration Services · AlwaysOn-support for SSIS-DB · Incremental Deployment of packages |
Reporting Services Reporting Services sollen endlich CSS-Stylesheets erhalten – darauf haben wir schon lange lange gewartet. (Damit wird dann auch endlich meine vielfach eingesetzte Technik mit SQL-Tabellen obsolet) Auch sollen die Berichts-Parameter verbessert werden und Hierarchien und Autocomplete erhalten. Weiteres: · High DPI (Dots Per Inch) Skalierung und Geräte für bessere Auflösung von Report-Elementen · Diverse kleine Verbesserungen für Abonnements |
Reporting Services Reporting Services will finally get CSS-Stylesheets – for that we waited a long long time. (With that finally my often used Technique with SQL-Tables will become obsolete) Also the Report parameters will be improved and support Hierarchies and get Autocomplete. Further: · High DPI (Dots Per Inch) Scaling and devices for better reolution of report elements · Various minor improvements for subscriptions |
Master Data Services Im Wesentlichen Performance Steigerung durch Datenkomprimierung und ein neues Super User-Konzept |
Master Data Services In essence: Performance improvements through data compression and a new Super User-concept |
Weiteres: · „Ongoing preview updates“ – dahinter verbirgt sich die Möglichkeit, nach der Installation der CTP2 ohne neuere Installationen einfach per Update neue Funktionen online zu erhalten · Azure SQL Data Warehouse · Mit dem Erwerb von DataZen sollen sich auch für mobile Geräte optimierte Reports anbieten lassen |
Further: · „Ongoing preview updates“ – behind this term lies the possibility, to receive new functionalities online without new installations after the installation of CTP2 · Azure SQL Data Warehouse · With the aquisition of DataZen it will be possible to serve reports which are optimized for mobile devices |
SQL Server 2016 CTP2 Die CTP2 des kommenden SQL Server, die viele der hier vorgestellten Features bereits enthält, steht seit 27. Mai hier zum Download bereit: |
SQL Server 2016 CTP2 The CTP2 of the upcoming SQL Server, which already contains many of the features I introduced here, is available for download since May 27th here: |
www.microsoft.com/en-us/server-cloud/products/sql-server-2016/default.aspx
Weiterführende Links: // Further Readings:
What's New in Analysis Services
What's New in Integration Services
What's New in Reporting Services
What's New in Master Data Services
Columnstore Indexes – part 54 (“Thoughts on upcoming improvements in SQL Server 2016″)
I am personally very excited about this upcoming release and hope you are looking forward to it, too
Andreas