<xml> vs. {JSON}
SQL Server vs. Azure DocumentDB
ein battle zwischen
<xml> und {JSON}
SQL saturday #409
Organizer
SQLSaturday Rheinland 201513.06.2015
Bronze Sponsor
SQLSaturday Rheinland 201513.06.2015
Silver Sponsor
SQLSaturday Rheinland 201513.06.2015
Gold Sponsor
SQLSaturday Rheinland 201513.06.2015
You rock!
SQLSaturday Rheinland 201513.06.2015
About me
13.06.2015 SQLSaturday Rheinland 2015
... and „2012er“ SQL MCSE
SQL	
  +	
  BI	
  Consultant	
  
Alexander Karl
About me
13.06.2015 SQLSaturday Rheinland 2015
Twitter: @SaschaDittmann
Blog: http://www.sascha-dittmann.de
Sr.	
  So2ware	
  Developer	
  
Sr.	
  Solu8ons	
  Architect	
  
Sascha Dittmann
Agenda
§  Setup
§  Tooling
§  Consistency
§  CRUD
§  Indexing
§  Schema validation <xml> only
§  Server side code
§  Complex queries and transformation <xml> only
13.06.2015 SQLSaturday Rheinland 2015
Setup
13.06.2015 SQLSaturday Rheinland 2015
§  SQL Server Setup
erfolgt mittels Wizard oder via cmd-Line
§  native xml Unterstützung
„out of the Box“
Setup
13.06.2015 SQLSaturday Rheinland 2015
Tooling
13.06.2015 SQLSaturday Rheinland 2015
§  SQL Server Management Studio
>> für queries
>> für „xml-results“
Tooling
13.06.2015 SQLSaturday Rheinland 2015
Tooling
13.06.2015 SQLSaturday Rheinland 2015
Tooling
13.06.2015 SQLSaturday Rheinland 2015
Consistency (ACID)
13.06.2015 SQLSaturday Rheinland 2015
A tomicity
C onsistency
I solation
D urabilty
Consistency (BASE)
13.06.2015 SQLSaturday Rheinland 2015
B asically
A vailable
S oft state
E ventual consistency
Select & Ins/Upd/Del
13.06.2015 SQLSaturday Rheinland 2015
§  T-SQL conformer Ins/Upd/Del
§  T-SQL XQuery
§  <column>.query ( return xml )
§  <column>.value ( return sql-Type )
§  <column>.exist ( return bit )
§  <column>.nodes
Select & Ins/Upd/Del
13.06.2015 SQLSaturday Rheinland 2015
§  T-SQL Xquery Navigation im <xml>
§  child
§  descendant
§  parent
§  Attribut
§  self
§  descendant-or-self
§  .node()
§  .text()
CRUD Samples
13.06.2015 SQLSaturday Rheinland 2015
Select & Ins/Upd/Del
13.06.2015 SQLSaturday Rheinland 2015
§  LINQ, SQL
§  REST API over HTTPS
§  .NET
§  Node.js
§  JavaScript
§  Python
§  …
CRUD Samples
13.06.2015 SQLSaturday Rheinland 2015
Indexing
13.06.2015 SQLSaturday Rheinland 2015
§  PRIMARY XML INDEX IX_primaryXml
§  CREATE XML INDEX IX_name
ON sch.table ( xmlCol )
USING XML INDEX IX_primaryXml
-  FOR PATH;
-  FOR VALUE;
-  FOR PROPERTY;
Indexing
13.06.2015 SQLSaturday Rheinland 2015
Indexing
13.06.2015 SQLSaturday Rheinland 2015
Indexing Policies
13.06.2015 SQLSaturday Rheinland 2015
Schema Validation
13.06.2015 SQLSaturday Rheinland 2015
§  XML SCHEMA COLLECTION schemaName
§  (table) xmlColumn
xml ( DOCUMENT schemaName )
Schema Validation
13.06.2015 SQLSaturday Rheinland 2015
Schema Validation
13.06.2015 SQLSaturday Rheinland 2015
Schema Validation
13.06.2015 SQLSaturday Rheinland 2015
§  Triggers
§  Client-Side Code
server side code
13.06.2015 SQLSaturday Rheinland 2015
compl. queries & transformation
13.06.2015 SQLSaturday Rheinland 2015
§  XML „FLWOR“
for let where order return
§  Aggregat functions
ü  {count($j)}
ü  {sum($j)}
ü  {avg($j)}
compl. queries & transformation
13.06.2015 SQLSaturday Rheinland 2015
compl. queries
13.06.2015 SQLSaturday Rheinland 2015
Questions
13.06.2015 SQLSaturday Rheinland 2015
???
13.06.2015 SQLSaturday Rheinland 2015
DEMO
Demo
Save the date!
13.06.2015 SQLSaturday Rheinland 2015

SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON