<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Datenbank - Bibliothek - arelium - Wir holen mehr aus deinen Daten</title>
	<atom:link href="https://arelium.de/category/datenbank/feed/" rel="self" type="application/rss+xml" />
	<link>https://arelium.de/category/datenbank/</link>
	<description></description>
	<lastBuildDate>Fri, 16 May 2025 09:47:17 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://arelium.de/wp-content/uploads/2022/10/Logo_arelium_FavIcon-150x150.jpg</url>
	<title>Datenbank - Bibliothek - arelium - Wir holen mehr aus deinen Daten</title>
	<link>https://arelium.de/category/datenbank/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cloud-Datenbanken – Dein Guide zu den besten Optionen in Azure</title>
		<link>https://arelium.de/cloud-datenbanken/</link>
		
		<dc:creator><![CDATA[Thomas Sobizack]]></dc:creator>
		<pubDate>Fri, 16 May 2025 09:47:17 +0000</pubDate>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Data Engineering]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<guid isPermaLink="false">https://arelium.de/?page_id=21012</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/cloud-datenbanken/">Cloud-Datenbanken – Dein Guide zu den besten Optionen in Azure</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><figure id="attachment_21033" aria-describedby="caption-attachment-21033" style="width: 300px" class="wp-caption alignright"><img fetchpriority="high" decoding="async" class="size-medium wp-image-21033" src="https://arelium.de/wp-content/uploads/2025/04/Azure-Datenbanken-300x300.jpg" alt="Azure-Datenbanken" width="300" height="300" srcset="https://arelium.de/wp-content/uploads/2025/04/Azure-Datenbanken-300x300.jpg 300w, https://arelium.de/wp-content/uploads/2025/04/Azure-Datenbanken-150x150.jpg 150w, https://arelium.de/wp-content/uploads/2025/04/Azure-Datenbanken-400x400.jpg 400w, https://arelium.de/wp-content/uploads/2025/04/Azure-Datenbanken-800x800.jpg 800w, https://arelium.de/wp-content/uploads/2025/04/Azure-Datenbanken.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-21033" class="wp-caption-text">Azure-Datenbanken</figcaption></figure>
<p>In unserer schnelllebigen und mobilen Welt sind <strong>Cloud-Datenbanken</strong> das Herzstück moderner IT-Architekturen. Egal ob für Webanwendungen, Analysen, IoT- Szenarien oder unternehmenskritische Systeme – Microsoft bietet in seiner Cloud-Umgebung Azure eine breite Palette an Datenbankdiensten. Versprochen, hier findest du für jede Anforderung die perfekte Lösung!</p>
<p>In diesem Beitrag bekommst du einen Überblick über die wichtigsten Azure-Datenbanken, ihre Anwendungsfälle und Vorteile.</p>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure SQL-Datenbank <span style="color: #ffffff;">(Cloud-Datenbanken)</span></strong></h3>
<p>Die <strong>Azure SQL-Datenbank</strong> ist Microsofts vollständig verwaltete relationale Cloud-Datenbank, die auf dem SQL Server basiert.<br data-start="296" data-end="299" />Sie eignet sich besonders für moderne Cloud-Anwendungen, die sowohl Zuverlässigkeit als auch Skalierbarkeit erfordern, und das bei minimalem Wartungsaufwand.<br data-start="468" data-end="471" />Zudem profitiert man von automatischem Performance-Tuning, regelmäßigen Sicherheitsupdates sowie integrierter Hochverfügbarkeit, wodurch sie ideal für Entwickler ist, die sich nicht mit der zugrunde liegenden Infrastruktur beschäftigen wollen.</p>
<h4><strong>Merkmale:</strong></h4>
<ul>
<li>Vollständig verwaltet (PaaS)</li>
<li>Automatische Backups</li>
<li>Nahezu unbegrenzte Skalierung</li>
<li>Hochverfügbarkeit</li>
<li>Verschiedene Bereitstellungsmodelle: Single Database, Elastic Pool, Hyperscale</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>Webanwendungen</li>
<li>SaaS-Plattformen</li>
<li>Unternehmensdatenbanken mit kleinen bis hohen Anforderungen</li>
</ul>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure Cosmos DB <span style="color: #ffffff;">Cloud-Datenbanken</span></strong></h3>
<p class="" data-start="122" data-end="728">Bei der <strong>Azure Cosmos DB</strong> handelt es sich um Microsofts hoch skalierbare, global verteilte <strong>NoSQL-Datenbank</strong>, die speziell für Anwendungen entwickelt wurde, die sowohl eine niedrige Latenz als auch eine hohe Verfügbarkeit erfordern. Weil sie verschiedene APIs wie MongoDB oder Cassandra unterstützt, lässt sie sich flexibel in bestehende Systeme integrieren, sodass Entwickler je nach Bedarf auf vertraute Technologien zurückgreifen können.<br data-start="584" data-end="587" />Zudem ermöglicht die weltweite Verteilung der Daten eine konsistente Nutzererfahrung – unabhängig davon, wo sich die Nutzer befinden.</p>
<h4><strong>Merkmale:</strong></h4>
<figure id="attachment_21149" aria-describedby="caption-attachment-21149" style="width: 300px" class="wp-caption alignright"><img decoding="async" class="size-medium wp-image-21149" src="https://arelium.de/wp-content/uploads/2025/05/Verschiedene-Azure-Datenbanken-300x300.jpg" alt="" width="300" height="300" srcset="https://arelium.de/wp-content/uploads/2025/05/Verschiedene-Azure-Datenbanken-300x300.jpg 300w, https://arelium.de/wp-content/uploads/2025/05/Verschiedene-Azure-Datenbanken-150x150.jpg 150w, https://arelium.de/wp-content/uploads/2025/05/Verschiedene-Azure-Datenbanken-400x400.jpg 400w, https://arelium.de/wp-content/uploads/2025/05/Verschiedene-Azure-Datenbanken-800x800.jpg 800w, https://arelium.de/wp-content/uploads/2025/05/Verschiedene-Azure-Datenbanken.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-21149" class="wp-caption-text">Es gibt ganz viele Datenbank-Typen in Microsoft Azure!</figcaption></figure>
<ul>
<li>Unterstützung verschiedener APIs: SQL (DocumentDB), MongoDB, Cassandra, Gremlin, Table</li>
<li>Niedrige Latenz bei Lese- und Schreiboperationen</li>
<li>Globale Verteilung und Echtzeit-Replikation</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>Globale Web- oder Mobilanwendungen</li>
<li>IoT-Anwendungen</li>
<li>E-Commerce und Echtzeitanalysen</li>
</ul>
<h3></h3>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure-Datenbank für PostgreSQL</strong></h3>
<p>Die <strong>Azure-Datenbank für PostgreSQL</strong> bietet eine vollständig verwaltete PostgreSQL-Umgebung auf Azure, wodurch sie ideal für Standardanwendungen sowie für <strong>hochskalierende</strong> Datenverarbeitung ist. Da <strong>PostgreSQL</strong> ein beliebtes Open-Source-Datenbanksystem mit einer großen Community ist, profitieren Nutzer von kontinuierlicher Weiterentwicklung und einer umfangreichen Unterstützung durch die Community.</p>
<h4><strong>Merkmale:</strong></h4>
<ul>
<li>Open-Source</li>
<li>Hochverfügbarkeit mit Zonen-Redundanz</li>
<li>Skalierbare Leistung und Speicher</li>
<li>Unterstützung von Citus (massiv parallele Verteilung)</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>Geodatenverarbeitung (GIS)</li>
<li>Analyse- und Reporting-Szenarien</li>
</ul>
<h3></h3>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure-Datenbank für MySQL</strong></h3>
<figure id="attachment_21156" aria-describedby="caption-attachment-21156" style="width: 255px" class="wp-caption alignleft"><img decoding="async" class=" wp-image-21156" src="https://arelium.de/wp-content/uploads/2025/05/Komplexe-Datenbank-300x300.jpg" alt="" width="255" height="255" srcset="https://arelium.de/wp-content/uploads/2025/05/Komplexe-Datenbank-300x300.jpg 300w, https://arelium.de/wp-content/uploads/2025/05/Komplexe-Datenbank-150x150.jpg 150w, https://arelium.de/wp-content/uploads/2025/05/Komplexe-Datenbank-400x400.jpg 400w, https://arelium.de/wp-content/uploads/2025/05/Komplexe-Datenbank-800x800.jpg 800w, https://arelium.de/wp-content/uploads/2025/05/Komplexe-Datenbank.jpg 1024w" sizes="(max-width: 255px) 100vw, 255px" /><figcaption id="caption-attachment-21156" class="wp-caption-text">Microsoft Azure Datenbank</figcaption></figure>
<p>Auch für<strong> MySQL</strong> bietet <strong>Azure</strong> einen vollständig verwalteten Dienst, der sich insbesondere auf die Themen Einfachheit, Sicherheit und Skalierbarkeit fokussiert.</p>
<p><br data-start="286" data-end="289" />Da MySQL im <strong>Webbereich besonders beliebt</strong> ist – insbesondere, wenn es um CMS- und E-Commerce-Systeme geht – findet es in diesen Bereichen eine entsprechend intensive Anwendung.</p>
<p>Somit eignet sich der <strong>Azure-Dienst</strong> ideal für Entwickler, die eine vertraute Datenbanktechnologie mit den Vorteilen einer Cloud-Plattform kombinieren möchten.</p>
<h4></h4>
<h4><strong>Merkmale:</strong></h4>
<ul>
<li>Kompatibel mit MySQL 5.7 und 8.0</li>
<li>Skalierbarkeit und automatische Patches</li>
<li>Flexible Server-Architektur mit mehr Kontrolle</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>WordPress-Hosting</li>
<li>Webanwendungen kleiner bis mittlerer Größe</li>
</ul>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure-Datenbank für MariaDB (Hinweis: wird eingestellt)</strong></h3>
<p>Bei<strong> Azure MariaDB</strong> handelt es sich um ein <strong>Fork</strong> (eine &#8222;Kopie&#8220; die unabhängig vom Original weiterentwickelt wurde) von MySQL das jedoch mit zusätzlichen Features ausgestattet ist. <strong>Microsoft stellt MariaDB jedoch </strong><strong>schrittweise ein</strong>. Bestehende Nutzer sollten zur Azure-Datenbank für MySQL oder einer VM (Virtuelle Maschine) -basierten Lösung migrieren.</p>
<h4><strong>Merkmale:</strong></h4>
<ul>
<li>Basiert auf MySQL</li>
<li>Integrierte Skalierung und Backup-Funktionen</li>
<li>Unterstützung für bekannte Tools</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>Bestehende MariaDB-Anwendungen</li>
<li>Kleinere relationale Workloads</li>
<li>Web-Apps mit Open-Source-Stack</li>
</ul>
<h3></h3>
</div></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure Synapse Analytics <span style="color: #ffffff;">(Cloud-Datenbanken)</span></strong></h3>
<p><strong data-start="151" data-end="281">Azure Synapse Analytics </strong>ist ein cloudbasierter Dienst, der Datenintegration, Big Data-Analyse und Data Warehousing kombiniert, wodurch eine umfassende Plattform für datengetriebene Anwendungen entsteht.<br data-start="361" data-end="364" />Synapse ermöglicht es, schnell Erkenntnisse aus großen Datenmengen zu gewinnen, indem es leistungsstarke Tools wie <strong>SQL</strong>, <strong>Apache Spark</strong> sowie den <strong>Data Explorer</strong> bereitstellt. Darüber hinaus kannst du mit Azure Synapse Daten aus verschiedenen Quellen integrieren, transformieren und analysieren, sodass du fundierte Entscheidungen auf Basis konsistenter und aktueller Informationen treffen kannst. Weil alle Komponenten eng miteinander verknüpft sind, lässt sich der gesamte Datenfluss effizient steuern und automatisieren. Für einen tieferen Einblick in Synapse empfehle ich den Beitrag meines Kollegen Tobias Adler: <a href="https://arelium.de/data-analytics-wiki/">Azure Synapse Analytics</a></p>
<h4><strong>Merkmale:</strong></h4>
<ul>
<li>T-SQL-basiertes MPP-Data Warehouse ( <strong data-start="18" data-end="51">Massively Parallel Processing)</strong></li>
<li>Integration mit Data Lake, Spark, Power BI</li>
<li>Serverless SQL und dedizierte Pools</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>Datenanalyse</li>
<li>Echtzeitdatenintegration</li>
<li>Reporting und Business Intelligence</li>
</ul>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure Data Explorer (Kusto) <span style="color: #ffffff;">Cloud-Datenbanken</span></strong></h3>
<p><strong>Azure Data Explorer (Kusto)</strong> ist eine leistungsstarke Datenanalyseplattform, die speziell für schnelle Abfragen auf großen Datensätzen entwickelt wurde.<br data-start="309" data-end="312" />Dabei nutzt die Plattform die <strong>Kusto Query Language (KQL)</strong> – eine Sprache, die nicht nur einfach zu erlernen, sondern auch sehr effizient ist (<strong><a href="https://arelium.de/sql-vs-kql/">hier</a></strong> findest du einen Vergleich zwischen <strong>SQL</strong> und <strong>KQL</strong>). Mit dem <strong>Azure Data Explorer</strong> kannst du Daten in Echtzeit verarbeiten und diese analysieren, wodurch er sich besonders für das Monitoring, die Sicherheitsanalyse sowie die Analyse von Nutzerverhalten eignet.<br data-start="737" data-end="740" />Außerdem integriert sich die Plattform nahtlos in andere Azure-Dienste wie Event Hubs, IoT Hub und Azure Monitor, sodass umfassende End-to-End-Szenarien realisierbar sind.</p>
<h4><strong>Merkmale:</strong></h4>
<ul>
<li>Kusto Query Language für große Datensätze</li>
<li>Echtzeitverarbeitung</li>
<li>Schnelle Abfragen über strukturierte und semi-strukturierte Daten</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>Anwendungsüberwachung (App Insights)</li>
<li>IoT-Telemetrie</li>
<li>Security- und Log-Analytik</li>
</ul>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>SQL Server auf Azure Virtual Machines</strong></h3>
<p>Wenn du vollständige Kontrolle über deine Datenbankumgebung brauchst, dann ist der SQL Server auf Azure Virtual Machines eine gute Wahl. Diese IaaS-Option bietet eine Umgebung, die deiner On-Premises-Struktur gleicht und unterstützt alle SQL Server-Features.</p>
<h4><strong>Merkmale:</strong></h4>
<ul>
<li>Vollständige Admin-Kontrolle über Betriebssystem und SQL Server</li>
<li>Unterstützung aller SQL Server-Versionen</li>
<li>Integration in Azure Backup, Monitor etc.</li>
</ul>
<h4><strong>Einsatzszenarien:</strong></h4>
<ul>
<li>Legacy-Anwendungen</li>
<li>Komplexe SQL Server-Features (SSRS, SSIS)</li>
<li>Hybrid-Cloud-Szenarien</li>
</ul>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Fazit: Welche Azure-Datenbank passt zu mir?</strong></h3>
<figure id="attachment_21150" aria-describedby="caption-attachment-21150" style="width: 300px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-21150" src="https://arelium.de/wp-content/uploads/2025/05/Welche-Azure-Datenbank-soll-ich-nehmen-300x300.jpg" alt="" width="300" height="300" srcset="https://arelium.de/wp-content/uploads/2025/05/Welche-Azure-Datenbank-soll-ich-nehmen-300x300.jpg 300w, https://arelium.de/wp-content/uploads/2025/05/Welche-Azure-Datenbank-soll-ich-nehmen-150x150.jpg 150w, https://arelium.de/wp-content/uploads/2025/05/Welche-Azure-Datenbank-soll-ich-nehmen-400x400.jpg 400w, https://arelium.de/wp-content/uploads/2025/05/Welche-Azure-Datenbank-soll-ich-nehmen-800x800.jpg 800w, https://arelium.de/wp-content/uploads/2025/05/Welche-Azure-Datenbank-soll-ich-nehmen.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-21150" class="wp-caption-text">Welche Azure Datenbank soll ich nehmen?</figcaption></figure>
<p>Die Auswahl der passenden Cloud-Datenbank hängt von verschiedenen Faktoren ab. Dazu zählen zum Beispiel die Art der Anwendung, das Datenvolumen und die benötigte Geschwindigkeit. Auch Anforderungen an Sicherheit, Skalierbarkeit und Wartungsaufwand spielen eine wichtige Rolle.</p>
<h4>Je nach Einsatzzweck bieten sich unterschiedliche Azure SQL-Datenbanklösungen an:</h4>
<table>
<thead>
<tr>
<td><strong>Anforderung</strong></td>
<td><strong>Empfehlung</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>Relationale Web-App</td>
<td>Azure SQL-Datenbank</td>
</tr>
<tr>
<td>Migration von SQL Server</td>
<td>SQL Managed Instance oder Azure VM</td>
</tr>
<tr>
<td>Globale NoSQL-Anwendung</td>
<td>Azure Cosmos DB</td>
</tr>
<tr>
<td>Open-Source Stack (PostgreSQL)</td>
<td>Azure-Datenbank für PostgreSQL</td>
</tr>
<tr>
<td>Analytische Workloads</td>
<td>Azure Synapse Analytics</td>
</tr>
<tr>
<td>Log- und Telemetriedaten</td>
<td>Azure Data Explorer</td>
</tr>
</tbody>
</table>
</div></div><div class="w-separator size_medium"></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Ganz gleich, ob du eine Beratung brauchst oder bereits konkrete Anforderungen hast – nimm einfach <a href="https://arelium.de/kontakt/">Kontakt</a> zu uns auf.</p>
<p>Wir von der <strong>arelium GmbH</strong> helfen dir gern.</p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/cloud-datenbanken/">Cloud-Datenbanken – Dein Guide zu den besten Optionen in Azure</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>T-SQL Notebook in Microsoft Fabric</title>
		<link>https://arelium.de/t-sql-notebook-in-microsoft-fabric/</link>
					<comments>https://arelium.de/t-sql-notebook-in-microsoft-fabric/#respond</comments>
		
		<dc:creator><![CDATA[Martin Kopp]]></dc:creator>
		<pubDate>Mon, 11 Nov 2024 06:29:22 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Microsoft Fabric]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[SQl]]></category>
		<guid isPermaLink="false">https://arelium.de/?p=20034</guid>

					<description><![CDATA[<p>T-SQL Notebooks in Fabric? Das geht? Ja. In der aktuellen Version von <a class="glossaryLink" aria-describedby="tt" data-cmtooltip="&#60;div class=glossaryItemTitle&#62;Microsoft Fabric&#60;/div&#62;&#60;div class=glossaryItemBody&#62;&#38;lt;img class=&#38;quot; wp-image-23172&#38;quot; src=&#38;quot;https://arelium.de/wp-content/uploads/2026/03/Glossarbilder1-300x92.png&#38;quot; alt=&#38;quot;&#38;quot; width=&#38;quot;1388&#38;quot; height=&#38;quot;426&#38;quot; /&#38;gt;&#38;lt;span role=&#38;quot;text&#38;quot;&#38;gt;&#38;lt;strong data-start=&#38;quot;1069&#38;quot; data-end=&#38;quot;1125&#38;quot;&#38;gt;Was ist Microsoft Fabric? &#38;lt;/strong&#38;gt;&#38;lt;/span&#38;gt;&#38;lt;span role=&#38;quot;text&#38;quot;&#38;gt;&#38;lt;strong data-start=&#38;quot;1069&#38;quot; data-end=&#38;quot;1125&#38;quot;&#38;gt;Definition, Funktionen und Aufbau&#38;lt;/strong&#38;gt;&#38;lt;/span&#38;gt;Microsoft Fabric ist eine cloudbasierte All-in-One-Datenplattform von Microsoft, die(...)&#60;/div&#62;" href="https://arelium.de/glossar/microsoft-fabric/" target="_blank" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex="0" role="link">Microsoft Fabric</a> kann jetzt auch in einem Notebook mit T-SQL gearbeitet werden. Bekannt gegeben wurde das im letzten Fabric-Newsletter von September 2024. Das es kommen wird, wurde schon vor einigen Monaten erw&#228;hnt. Um was geht es &#252;berhaupt? Bisher konnte ich mit meinem Notebook...</p>
<p>Der Beitrag <a href="https://arelium.de/t-sql-notebook-in-microsoft-fabric/">T-SQL Notebook in Microsoft Fabric</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>T-SQL Notebooks in Fabric? Das geht? Ja. In der aktuellen Version von Microsoft Fabric kann jetzt auch in einem Notebook mit T-SQL gearbeitet werden. Bekannt gegeben wurde das im letzten <a href="https://blog.fabric.microsoft.com/en-gb/blog/fabric-september-2024-monthly-update?ft=All#post-14247-_Toc177485840">Fabric-Newsletter von September 2024</a>. Das es kommen wird, wurde schon vor einigen Monaten erwähnt.</p>
<h2>Um was geht es überhaupt?</h2>
<p>Bisher konnte ich mit meinem Notebook in Fabric die Sprachen PySpark, Scala, Spark SQL oder R verwenden. Ab jetzt gibt es eine Sprache mehr: T-SQL. So ganz stimmt das aber nicht. T-SQL kann in verschiedenen Situationen eingesetzt werden, aber ein bisheriges Notebook kann ich damit nicht so richtig ersetzen. Ich kann zum Beispiel nicht zwischen den Sprachen hin- und herspringen. Microsoft unterscheidet daher die Sprachauswahl nach Spark (die obigen vier Sprachen) und T-SQL Analytics. Das ist dann T-SQL.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20038" src="https://arelium.de/wp-content/uploads/2024/10/NotebooksprachenInFabric.png" alt="Sprachen Fabric" width="96" height="162" /></p>
<p>Worin liegt der Unterschied? Wenn ich T-SQL auswähle, dann kann ich nicht mehr in eine andere Sprache ändern. Das hat etwas damit zu tun, dass die Spark-Sprachen gegen ein Lakehouse gehen und mit T-SQL verbinde ich mich an ein Warehouse. Also gehe ich mit einem (Spark-)Notebook bisher an einen SQL Analytics Endpoint. T-SQL geht dagegen an ein Warehouse. Dahinter steckt dann ein SQL Server bzw. ein Azure SQL.</p>
<p>Versuche ich mit einer T-SQL-Abfrage gegen ein Lakehouse zu starten, dann bekomme ich folgende Fehlermeldung:<br />
<em>InvalidOperationException: Data warehouse id is empty. Please check if the notebook is connected to a data warehouse.</em></p>
<p>Es geht also nur mit einem Data Warehouse. ABER: Ich kann in einem Data Warehouse ein Lakehouse verbinden. Klingt zunächst komisch. Konnte ich aber in Azure Synapse aber auch schon immer machen. Das geht dann natürlich auch in Microsoft Fabric.</p>
<p>Hier an einem Beispiel:<br />
<img loading="lazy" decoding="async" class="aligncenter wp-image-20037" src="https://arelium.de/wp-content/uploads/2024/10/LakehouseInWarehouse.png" alt="Warehouse mit Lakehouse verbinden" width="176" height="210" srcset="https://arelium.de/wp-content/uploads/2024/10/LakehouseInWarehouse.png 256w, https://arelium.de/wp-content/uploads/2024/10/LakehouseInWarehouse-252x300.png 252w" sizes="auto, (max-width: 176px) 100vw, 176px" />Obwohl ich in Warehouses bin, kann ich darunter ein Lakehouse verbinden. Am Ende ist es nichts anderes als die Lakehouse-Tabellen mit External Table in den SQL Server einzubinden. Auch das geht schon seit vielen Jahren im SQL Server. Hier kann ich dann mit T-SQL arbeiten und meine bekannte Sprache einsetzen um Sichten (Views), Funktionen (Functions), Prozeduren (Procedures) oder einfach nur Abfragen (Queries) zu schreiben.</p>
<h2>Beispiel</h2>
<p>Ein kurzes Beispiel mit dem Befehl TOP um nur die obersten Zeilen zu bekommen. Wir erinnern uns: In Spark SQL lautet der Befehl LIMIT.<br />
<img loading="lazy" decoding="async" class="aligncenter wp-image-20036" src="https://arelium.de/wp-content/uploads/2024/10/BeispielTop10.png" alt="Beispiel TSQL in Fabric" width="547" height="431" srcset="https://arelium.de/wp-content/uploads/2024/10/BeispielTop10.png 764w, https://arelium.de/wp-content/uploads/2024/10/BeispielTop10-300x236.png 300w, https://arelium.de/wp-content/uploads/2024/10/BeispielTop10-508x400.png 508w" sizes="auto, (max-width: 547px) 100vw, 547px" /></p>
<p>Auch CTEs (Common Table Expressions) können verwendet werden. <a href="https://learn.microsoft.com/de-de/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-ver16">Wer CTEs nicht kennt, der sollte sich damit mal befassen</a>.</p>
<h2>Einschränkungen</h2>
<p>Es gibt aber auch ein paar Limitierungen. Ich habe ein paar rausgesucht, die ich am ehesten vermissen würde</p>
<ul>
<li>ALTER TABLE: Das geht nur sehr eingeschränkt (nur Primary Key anlegen und sowas). Wir erinnern uns, dass es sich um eine Externe Tabelle handelt. Dann geht ALTER TABLE natürlich nicht.</li>
<li>IDENTITY COLUMN: Auch das geht nicht. Auch das liegt an External Tables. Es gibt keine Identity auf einer Externen Tabelle. Am Ende ist es ja nur eine Datei und keine Tabelle in einer Datenbank.</li>
<li>MERGE: Das ein MERGE nicht geht, dass tut schon weh. Das ist auch etwas schade, da ein wenig suggeriert wird, dass ich ein Data Warehouse von einem SQL Server portieren kann. Spätestens beim MERGE ist es dann aber vorbei. Wenn ich MERGE in Prozeduren verwendet habe, dann muss ich das in Insert/Update/Delete umschreiben.</li>
<li>Es gibt noch weitere Einschränkungen, die in einem Data Warehouse aber eher seltener vorkommen. Nachzulesen auf der <a href="https://learn.microsoft.com/de-de/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-ver16">Microsoft-Seite zum Thema</a>.</li>
</ul>
<h2>Fazit</h2>
<p>Ich habe T-SQL bisher noch nicht in Fabric vermisst. Spark SQL geht auch. Ich gehe aber trotzdem davon aus, dass ich T-SQL das ein oder andere Mal in Zukunft verwenden werde. Wenn ich eine komplexere Abfrage brauche, dann ist mir T-SQL halt doch etwas geläufiger als Spark SQL. Ich glaube genau damit wird Fabric wieder etwas näher an die Entwickler rücken, die bisher den Umstieg in die Cloud nicht vollzogen haben und bisher &#8222;nur&#8220; mit ihrem SQL Server (oder Azure SQL) arbeiten. EIn Vorteil ist natürlich auch die Mächtigkeit von T-SQL und die starke Verbreitung. Auch wird T-SQL immer wieder weiterentwickelt: <a href="https://arelium.de/neuerung-t-sql/">Wie Microsoft die Sprache „T-SQL“ weiterentwickelt &#8211; arelium GmbH</a>.</p>
<p>Der Beitrag <a href="https://arelium.de/t-sql-notebook-in-microsoft-fabric/">T-SQL Notebook in Microsoft Fabric</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://arelium.de/t-sql-notebook-in-microsoft-fabric/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Datenbankspiegelung (Mirroring) nach Microsoft Fabric</title>
		<link>https://arelium.de/mirroring-in-microsoft-fabric/</link>
					<comments>https://arelium.de/mirroring-in-microsoft-fabric/#respond</comments>
		
		<dc:creator><![CDATA[Martin Kopp]]></dc:creator>
		<pubDate>Mon, 28 Oct 2024 06:02:07 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Engineering]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Microsoft Fabric]]></category>
		<guid isPermaLink="false">https://arelium.de/?p=20003</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/mirroring-in-microsoft-fabric/">Datenbankspiegelung (Mirroring) nach Microsoft Fabric</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb_text_column"><div class="wpb_wrapper"><p>Wer Mirroring (Deutsch: Datenbankspiegelung) vom SQL Server kennt, wird sich vielleicht schon gefragt haben, warum das nicht in Fabric geht? Inzwischen ist das möglich. Wenn auch immer noch in der Preview Version. Dazu gibt es ein paar Dinge als Voraussetzung zu erfüllen. Darauf gehe ich hier ein und zeige einmal wie es erfolgreich von einer Azure SQL-Datenbank nach Microsoft Fabric geht.</p>
<p>Übrigens weist Microsoft darauf hin, dass Mirroring im SQL Server nicht das Selbe ist wie in Fabric. Mirroring im SQL Server soll sogar in den nächsten Versionen vom SQL Server verschwinden (siehe <a href="https://learn.microsoft.com/de-de/sql/database-engine/database-mirroring/database-mirroring-sql-server?view=sql-server-ver16">hier</a>).</p>
<h2><strong>Was ist eigentlich Mirroring?</strong></h2>
<p>Mirroring ist eine Technik, mit der ich Tabellen aus einer Datenbank spiegeln kann. Ich kann also angeben ich möchte eine Tabelle aus einer Quelle haben und auf einer anderen Datenbank (Zieldatenbank) soll es diese Tabelle auch geben. Im Hintergrund sorgt das Mirroring dafür, dass diese immer den gleichen Inhalt hat. Das ist natürlich praktisch, wenn ich in Fabric bin. Ich muss dann nicht immer schauen, dass ich zum richtigen Zeitpunkt Daten aus einer Quelle abhole. Sie sind dann einfach schon da (frei nach Hase &amp; Igel: „Ich bin schon da“). Ich brauche daher kein „Copy Data Task“ oder etwas Ähnliches.</p>
<h2><strong>Und wie geht Mirroring nach Microsoft Fabric?</strong></h2>
<p>Microsoft hat dazu eine kurze <a href="https://learn.microsoft.com/de-de/fabric/database/mirrored-database/azure-sql-database">Beschreibung mit Video</a> zur Verfügung gestellt. Allerdings ist die Beschreibung an der ein oder anderen Stelle etwas verwirrend. Ich werde es besser machen….</p>
<p>Für ein Beispiel habe ich eine Azure SQL Datenbank angelegt. Beim Anlegen habe ich die Beispieldatenbank mit einrichten lassen. So habe ich etwas für mein Beispiel zur Hand.</p>
<h3>Voraussetzungen</h3>
<p>Zunächst gibt es ein paar Dinge, die vorher gemacht werden müssen, damit ich Mirroring in Microsoft Fabric verwenden kann:</p>
<ul>
<li>Zunächst muss ich Mirroring auf dem Tenant einschalten. Das geht wie immer über das Verwaltungsportal in Fabric.<img loading="lazy" decoding="async" class="aligncenter wp-image-20019" src="https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungTenant.png" alt=" Fabric Verwaltungsportal Spieglung" width="528" height="421" srcset="https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungTenant.png 897w, https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungTenant-300x239.png 300w, https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungTenant-502x400.png 502w" sizes="auto, (max-width: 528px) 100vw, 528px" /></li>
<li>Der letzte Haken gibt einen Hinweis darauf, dass dies auf der Ebene einer Kapazität angepasst werden kann. Das bedeutet, ich kann unter „Delegierte Mandanteinstellungen“ diese Einstellung überschreiben. Ich kann damit für eine einzelne Kapazität die Datenbankspiegelung wieder ausschalten. Das kann ich unter den Einstellungen für die Kapazität machen.<img loading="lazy" decoding="async" class="aligncenter wp-image-20018" src="https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungKapazitaet.png" alt=" Fabric Verwaltungsportal Spieglung Mandanteneinstellung" width="605" height="413" srcset="https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungKapazitaet.png 894w, https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungKapazitaet-300x205.png 300w, https://arelium.de/wp-content/uploads/2024/10/DatenbankspiegelungKapazitaet-586x400.png 586w" sizes="auto, (max-width: 605px) 100vw, 605px" /></li>
<li>Damit ich SQL Server Authentifizierung benutzen kann, muss ich das im Azure SQL auf dem Server zulassen. Wichtig: Das ist eine Einstellung auf Datenbankserver-Ebene. Also auf der Instanz und nicht auf der Datenbank. Dort kann ich unter Sicherheit und Identität die folgende Einstellung setzen.<img loading="lazy" decoding="async" class="aligncenter wp-image-20023" src="https://arelium.de/wp-content/uploads/2024/10/SQLServerAuthetifizierungZulassen.png" alt="Sicherheit Azure SQL Identität" width="813" height="206" srcset="https://arelium.de/wp-content/uploads/2024/10/SQLServerAuthetifizierungZulassen.png 1200w, https://arelium.de/wp-content/uploads/2024/10/SQLServerAuthetifizierungZulassen-300x76.png 300w, https://arelium.de/wp-content/uploads/2024/10/SQLServerAuthetifizierungZulassen-1024x259.png 1024w" sizes="auto, (max-width: 813px) 100vw, 813px" />
<p>Danach kann ich auch SQL Server Authentifizierung verwenden. Alternativ geht es mit einem Dienstprinzipal (Service Principal). In produktiven Umgebungen würde ich das auch bevorzugen.</li>
</ul>
<h2><strong>Wie lege ich die Datenbankspiegelung an?</strong></h2>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20020" src="https://arelium.de/wp-content/uploads/2024/10/GespiegelteAzureSQLDatenbank.png" alt="Gespiegelte Azure DB" width="270" height="135" srcset="https://arelium.de/wp-content/uploads/2024/10/GespiegelteAzureSQLDatenbank.png 450w, https://arelium.de/wp-content/uploads/2024/10/GespiegelteAzureSQLDatenbank-300x150.png 300w" sizes="auto, (max-width: 270px) 100vw, 270px" /></p>
<p>Das Anlegen einer gespiegelten Azure SQL Datenbank kann dann unter Neu im Abschnitt Data Warehouse gefunden werden.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20017" style="color: #444444; font-size: 16px;" src="https://arelium.de/wp-content/uploads/2024/10/AzureSQLVerbindungseinstellungen.png" alt="Spieglung Verbindungseinstellungen" width="562" height="405" srcset="https://arelium.de/wp-content/uploads/2024/10/AzureSQLVerbindungseinstellungen.png 1120w, https://arelium.de/wp-content/uploads/2024/10/AzureSQLVerbindungseinstellungen-300x216.png 300w, https://arelium.de/wp-content/uploads/2024/10/AzureSQLVerbindungseinstellungen-1024x738.png 1024w, https://arelium.de/wp-content/uploads/2024/10/AzureSQLVerbindungseinstellungen-555x400.png 555w" sizes="auto, (max-width: 562px) 100vw, 562px" /></p>
<p>Hier muss ich zunächst eine Verbindung anlegen. Fabric muss ja wissen, wo er die Tabelle(n) für die Replikation herbekommen soll. Im nächsten Schritt lege ich dann die Verbindung an.</p>
<p>Wenn alles korrekt angegeben wurde, dann werden die Tabellen angezeigt, die gespiegelt werden können. Das sind alle in der Datenbank. Diese kann ich dann einfach auswählen.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20024" src="https://arelium.de/wp-content/uploads/2024/10/TabellenAusQuelldatenbank.png" alt="Spiegelbare Tabellen" width="807" height="383" srcset="https://arelium.de/wp-content/uploads/2024/10/TabellenAusQuelldatenbank.png 1758w, https://arelium.de/wp-content/uploads/2024/10/TabellenAusQuelldatenbank-300x142.png 300w, https://arelium.de/wp-content/uploads/2024/10/TabellenAusQuelldatenbank-1024x486.png 1024w, https://arelium.de/wp-content/uploads/2024/10/TabellenAusQuelldatenbank-843x400.png 843w" sizes="auto, (max-width: 807px) 100vw, 807px" /></p>
<p>Witzigerweise werden einige Tabellen aus der Beispieldatenbank von Microsoft als nicht spiegelbar angezeigt. Ein Attribut mit Leerzeichen im Namen führt zum Beispiel dazu, dass das Mirroring nicht geht. nvarchar ist ein anderes Beispiel. Das kann er nicht. Die müssen dann in varchar angepasst werden. Wenn ich das nicht mache, dann werden die Attribute, die Probleme bereiten nicht gespiegelt. Ich kann also die Spiegelung nutzen. Mir fehlen dann nur ein paar Spalten.</p>
<p>Ich habe für unser Beispiel die Tabelle SalesLT.Product angepasst. Er zeigt dann in einer Vorschau die Tabelle komplett an. Jetzt nur noch „Verbinden“ und schon kann es losgehen. Im nächsten Schritt fragt er dann nur noch, wo es denn hingehen soll. Er legt damit automatisch eine Datenbank in Fabric an. Dorthin werden alle ausgewählten Tabellen gespiegelt.</p>
<p>Schon fertig.</p>
<p>Natürlich kann ich jetzt auf die replizierte Tabelle in Fabric zugreifen.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20022" src="https://arelium.de/wp-content/uploads/2024/10/ReplizierteTabelleInFabric.png" alt="Tabellenzugriff Fabric" width="800" height="241" srcset="https://arelium.de/wp-content/uploads/2024/10/ReplizierteTabelleInFabric.png 1188w, https://arelium.de/wp-content/uploads/2024/10/ReplizierteTabelleInFabric-300x90.png 300w, https://arelium.de/wp-content/uploads/2024/10/ReplizierteTabelleInFabric-1024x309.png 1024w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Hier ist auch zu erkennen, dass er mir einen festen Namen für die Tabelle vergeben hat. Dem aufmerksamen Leser ist aufgefallen, dass ich den nirgends anpassen konnte. Der wird automatisch vergeben. Das ist natürlich etwas schade. Vielleicht kommt das aber noch, bevor das Feature in die finale Version geht.</p>
<p>Überwachen kann ich den Status auch immer.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20021" src="https://arelium.de/wp-content/uploads/2024/10/ReplikationUeberwachen.png" alt="Replikation überwachen" width="556" height="240" srcset="https://arelium.de/wp-content/uploads/2024/10/ReplikationUeberwachen.png 1480w, https://arelium.de/wp-content/uploads/2024/10/ReplikationUeberwachen-300x130.png 300w, https://arelium.de/wp-content/uploads/2024/10/ReplikationUeberwachen-1024x442.png 1024w, https://arelium.de/wp-content/uploads/2024/10/ReplikationUeberwachen-926x400.png 926w" sizes="auto, (max-width: 556px) 100vw, 556px" /></p>
<p>Auch kann ich hier einmal schnell in die Replikationseinstellungen gehen und ggfs. eine Tabelle zusätzlich hinzufügen.</p>
<h2><strong>Gut zu wissen</strong></h2>
<p>Microsoft wirbt mit Zero Cost. Das ist zunächst richtig. Mirroring läuft aber nur, wenn die Fabric Kapazität läuft. Das bedeutet ich kann diese nicht abschalten, wenn ich das Mirroring haben möchte. Wenn ich die Kapazität einmal stoppe, dann stoppt das Mirroring dauerhaft und ich muss es neu „anschieben“. Das kann ich machen, indem ich es stoppe und direkt danach wieder starte. Danach ist wieder alles auf dem aktuellen Stand. Ein dynamisches Ausschalten der Kapazität bei Nichtbenutzung oder zu bestimmten Zeiten ist damit nicht mehr sinnvoll. Zero Cost ist daher Auslegungssache. Natürlich kann ich skalieren, aber eben nicht auf Pause setzen.</p>
<h2><strong>Fazit</strong></h2>
<p>In Fabric ist der Einsatz von Datenbankspiegelung ideal. Ich kann diverse Quellen anbinden und aus denen direkt die Tabellen abholen. So spare ich mir den ein oder anderen Aufwand. Kein Tabellen anlegen, kein kopieren der Daten in regelmäßigen Abständen etc. Natürlich ist das nur ein kleiner Teil der Entwicklung, aber dieser wird mit Datenbankspiegelung etwas verkürzt. Ich kann aber zum Beispiel die Beladung des Raw-Layers abkürzen, oder direkt in die Bronze-Schicht von meiner <a href="https://arelium.de/medaillon-architektur-in-microsoft-fabric/">Medaillon-Architektur</a> schreiben.</p>
<p>Aktuell können als Quellen nur Azure SQL, Snowflake und Azure Cosmos DB angegeben werden. Da kommt aber noch mehr in Zukunft. Auch ist zukünftig geplant SQL Server On-Premise zu unterstützen. Wir lassen uns überraschen.</p>
</div></div>
<p>Der Beitrag <a href="https://arelium.de/mirroring-in-microsoft-fabric/">Datenbankspiegelung (Mirroring) nach Microsoft Fabric</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://arelium.de/mirroring-in-microsoft-fabric/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>T-SQL Constraints</title>
		<link>https://arelium.de/t-sql-constraints/</link>
		
		<dc:creator><![CDATA[Torsten Ahlemeyer]]></dc:creator>
		<pubDate>Mon, 12 Aug 2024 08:20:46 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Engineering]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQl]]></category>
		<guid isPermaLink="false">https://arelium.de/?page_id=19896</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/t-sql-constraints/">T-SQL Constraints</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><h2><strong>Was sind T-SQL Constraints?</strong></h2>
<p><span>Bei Constraints (engl. für “Einschränkungen”) handelt es sich um durch den Entwickler vorzugebende Regeln. Diese werden direkt auf Datenbankebene implementiert und durch diese überwacht. Derart abgesichert, sind Fehleingaben bei der Datenpflege nicht mehr möglich. Somit definieren Constraints Bedingungen, die beim Einfügen, Ändern oder Löschen von Datenbankinhalten erfüllt werden müssen.</span></p>
<p><span>Da Tabellen Werte innerhalb einer relationalen Datenbank speichern, hängen Constraints auch genau an dieser Art von Objekten. Sichten, Trigger, Prozeduren und Funktionen können keine Constraints haben. </span></p>
<h2><strong><span>Wann und wie werden Constraints erstellt?</span></strong></h2>
<p><span>Derartige Bedingungen kann man immer programmatisch erstellen. Man schreibt hierzu einen Quellcode mit normalen DDL-Befehlen. Dies kann schon beim Anlegen eines Objektes (CREATE TABLE) oder später als Änderungsanweisung (ALTER TABLE) geschehen. Es ist möglich Constraints einzeln zu löschen (DROP CONSTRAINT). Wenn das zugehörige Objekt gelöscht wird, werden gleichzeitig auch alle daran gebundenen Constraints eleminiert.</span></p>
<p><span>Es ist bei den meisten Constraints auch möglich, diese bequem über die grafische Benutzeroberfläche, bspw. das SQL Server Management Studio, zu pflegen.</span></p>
<p><span>Constraints gelten sofort. Mit ihrer Anlage sind sie automatisch aktiviert. Man kann sie zu Testzwecken einzeln deaktivieren, dann werden die implementierten Prüfungen nicht durchlaufen. Nach einer Reaktivierung findet die Bedingung dann sofort wieder Anwendung.</span></p>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column us_custom_eef79b84"><div class="wpb_wrapper"><p style="padding-left: 40px;">CREATE TABLE [Ereignis] (<br />             [ID]                                        INTEGER                           NOT NULL,<br />             [Bezeichnung]                        VARCHAR(255)                 NOT NULL,<br />             [Datum]                                 DATE,<br />             [Ort]                                      VARCHAR(255),<br />CONSTRAINT [chkEreignis] CHECK ([Datum]&gt;=’20240101’ AND [Ort]=&#8217;Duisburg&#8216;)<br />);</p>
</div></div><div class="wpb_text_column"><div class="wpb_wrapper"><p style="text-align: center;"><strong><em>Anlage einer Tabelle mit sofortiger Constraint-Einrichtung</em></strong></p>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column us_custom_eef79b84"><div class="wpb_wrapper"><p style="padding-left: 40px;">ALTER TABLE [Ereignis]ADD CONSTRAINT [chkEreignis2] CHECK ([Bezeichnung] LIKE &#8218;D%&#8216;);</p>
</div></div><div class="wpb_text_column"><div class="wpb_wrapper"><p style="text-align: center;"><strong><em>Spätere Erweiterung um einen weiteren Constraint</em></strong></p>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h2><strong><span>Welche Arten von T-SQL Constraints gibt es?</span></strong></h2>
<p><span>Man unterscheidet verschiedene Arte von Einschränkungen. Manche Arten können pro Tabelle nur einfach vorkommen (Primery Key Constraint), andere können auch mehrfach in unterschiedlicher Ausprägung an dieselbe Tabelle gebunden werden. Verschiedene Arten lassen sich problemlos an einer Tabelle gleichzeitig einsetzen.</span></p>
<ul>
<li><strong><span>NOT NULL Constraint<br /></span></strong><span>Soll in eine Spalte kein NULL-Wert eingegeben werden können, nutzt man einen NOT NULL Constraint</span></li>
<li><strong><span>UNIQUE Constraint<br /></span></strong><span>Mit dieser Bedingung erzwingt man einzigarte Werte in einer Spalte. Dubletten sind nicht mehr möglich.</span></li>
<li><strong><span>Primery Key Constraint<br /></span></strong><span>Bei dieser Beschränkung handelt es sich um eine Kombination aus der UNIQUE- und der NOT NULL-Beschränkung, wobei die Spalte oder die Gruppe von Spalten, die am PRIMARY KEY beteiligt sind, einzigartig sind und keinen NULL-Wert annehmen können.</span></li>
<li><strong><span>Foreign Key Constraint<br /></span></strong><span>Hier wird die Eingabe von Werten erzwungen, die in einer anderen Tabelle der Primärschlüssel sind. Werte, die es in der zweiten Tabelle nicht gibt, werden abgelehnt.</span></li>
<li><strong><span>Check Constraint<br /></span></strong><span>Der Wert in einer Spalte mit einer Prüfbeschränkung kann nur eingegeben werden, wenn die T-SQL Prüfbeschränkung als wahr ausgewertet wird.</span></li>
<li><strong><span>Default Constraint<br /></span></strong><span>Mit dieser Art der Constraints werden Ersatzwerte vorgegeben, die automatisch eingefügt werden, wenn in einem INSERT-Statement ein NULL-Wert für die betroffene Spalte übergeben wird. </span></li>
</ul>
<h2><span><strong>Warum sollte ich Constraints einsetzen?</strong></span></h2>
<p><span>Es gibt keine zuverlässigere Möglichkeit als die Nutzung von Constraints, um die Inhalte seiner Datenbank zu schützen. Merke: Was immer ein Nutzer eingeben oder ändern kann, wird er früher oder später auch bewusst oder unbewusst machen. Nur wenn die Datenbank sicherstellt, das keine ungewollten Pflegeinhalte gespeichert werden, kann der Inhalt einer Datenbank zuverlässig positiv garantiert werden.</span></p>
<p><span>Die Einrichtung passender T-SQL Constraints ist eine einmalige Arbeit. Dieser Aufwand lohnt sich aber definitiv! Es ist erfahrungsgemäß um ein Vielfaches zeit- und kostenintensiver eine inhaltlich „verunreinigte“ Datenbank zu säubern – wenn es überhaupt möglich ist.</span></p>
<p><span>Da Constraints auf DB-Ebene wirken, greifen sie bei jeder Art der Datenmanipulation. Egal ob durch einen Sachbearbeiter über eine Applikations-GUI oder einen Entwickler mit T-SQL-Befehlen… die Beschränkungen sorgen für saubere Daten!  </span></p>
<h2><strong>Unsere Spezialisten</strong></h2>
<p>Wir sind seit vielen Jahren Spezialisten für die gesamte Datenverarbeitung von der Speicherung, über die Analyse bis zum fertigen Bericht. Außerdem bauen wir seit fast zwei Jahrzehnten Datenbanken für Unternehmen verschiedenster Größen. Wenn Sie weitere Fragen<span> </span><a href="https://arelium.de/kontakt/">kontaktieren</a><span> </span>Sie uns doch einfach.</p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/t-sql-constraints/">T-SQL Constraints</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Data Vault kurz und knapp erklärt!</title>
		<link>https://arelium.de/data-vault/</link>
		
		<dc:creator><![CDATA[Thomas Sobizack]]></dc:creator>
		<pubDate>Fri, 26 Jul 2024 11:11:15 +0000</pubDate>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Big Data]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<guid isPermaLink="false">https://arelium.de/?page_id=19598</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/data-vault/">Data Vault kurz und knapp erklärt!</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><p><span>Wenn von <strong>Data Vault</strong> gesprochen wird, dann sprechen wir über einen Modellierungsansatz für den Aufbau eines Data Warehouses. Der Grundgedanke zu diesem Modell wurde bereits in den 1990er Jahren von Dan Linstedt entworfen. Dabei lag der Fokus auf <strong>Agilität</strong>, <strong>Skalierbarkeit</strong> und der <strong>Anpassungsfähigkeit</strong> des Modells. </span></p>
<p><span>In der heutigen Zeit müssen Unternehmen ihr Geschäftsmodel in immer kürzer werdenden Zyklen anpassen und sich ständig den sich ändernden Marktbedürfnissen oder auch regulatorischen Anforderungen anpassen. Die Verantwortlichen stehen deshalb ständig unter Druck, die häufig sehr komplexgestalteten, bestehenden Datenstrukturen anzupassen. Dies ist mit unter äußerst anstrengend und teuer.  </span></p>
<p><span>Dafür bietet der Ansatz des <strong>Data Vault</strong> eine Lösungsmöglichkeit, indem es die Eigenschaften aus der dimensionalen (Sternschema) und normalisierten Modellierungswelt miteinander verbindet. Dadurch kann eine Beschleunigung bei der Befüllung des Warehouses erreicht werden. Der wesentliche Vorteil liegt jedoch darin, dass wir bei der Erweiterbarkeit wesentlich flexibler sind als bei den klassischen Methoden.  Durch die andere Art der Modellierung müssen bei Änderungen, meistens Regel, keine bestehenden Tabellen angepasst werden. Es reicht einfach neue Tabellen z.B. zusätzliche Satelliten (s.u.) ergänzt werden.</span></p>
<p><span>Beim <strong>Data Vault</strong> handelt es sich nicht um einen Ersatz des erprobten Sternschema, sondern um eine Ergänzung, indem es zur Modellierung des Data Warehouses (zentrale Datenbank zur Integration und Historisierung von Daten) verwendet wird.</span></p>
</div></div><div class="w-separator size_medium"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Was sind die Bausteine von Data Vault?</span></span></h2><div class="w-hwrapper valign_top align_none"><div class="wpb_text_column us_custom_611e9891"><div class="wpb_wrapper"><h4><span style="color: #b71234;"><strong>Hub:</strong></span></h4>
<p><span> Das eigentliche Kernobjekt der Geschäftslogik, indem eindeutige Business Keys gespeichert werden, die ein Geschäftsobjekt identifizieren (z. B. Kundennummer, Rechnungsnummer oder Artikelnummer).</span></p>
</div></div><div class="wpb_text_column us_custom_611e9891"><div class="wpb_wrapper"><h4><span style="color: #b71234;"><strong>Link:</strong></span><span> </span></h4>
<p><span>Mit den Links werden die Geschäftsobjekte (Hubs) miteinander verbunden. So werden die Beziehung zwischen den Informationen abgebildet (z. B. von einer Rechnungsnummer zu einer Kundennummer).</span></p>
</div></div><div class="wpb_text_column us_custom_611e9891"><div class="wpb_wrapper"><h4><span style="color: #b71234;"><strong>Satelliten:</strong></span><span> </span></h4>
<p><span>Hier werden zusätzliche Attribute und historische Informationen in Hubs und Links gespeichert.</span></p>
</div></div></div><div class="w-separator size_medium"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Inzwischen gibt es zwei „Versionen“ von Data Vault</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p><span>Mit <strong>Data-Vault 2.0</strong> wird eine Verbesserung bezüglich der Agilität und der Flexibilität gegenüber dem klassischen Modell erreicht. Zusätzlich werden dabei auch Big-Data, NoSQL-Datenbanken und Cloud-Technologien mitberücksichtigt. Ohne hier allerdings tiefer in das Thema einzusteigen, sei gesagt, dass Data Vault sich vor allem für Data Warehouses eignet und weniger für Lakehouses.</span></p>
</div></div><div class="w-separator size_medium"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Fazit</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p><strong><span>Data Vault</span></strong><span> bietet eine hohe Flexibilität bei Erweiterungen, eine vollständige Historisierung der Daten und erlaubt eine starke Parallelisierung der Datenladeprozesse. Es ist eine moderne Architektur für agiles Data Warehousing und ermöglicht es ihrem Unternehmen, die Daten effizient zu verwalten und zu nutzen.</span></p>
<p><span>Allerdings ist <strong>Data Vault</strong> nicht für alle Szenarien die beste Wahl. Neben dem initialen Aufwand bei der Erstellung des Models, erfordert <strong>Data Vault</strong> ein grundlegendes tiefes Verständnis des Ansatzes sowie der vorhandenen Geschäftslogik.</span></p>
</div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p><span>Wir, die <strong>arelium GmbH,</strong> verfügen über ein fundiertes Wissen in diesem Bereich. Sollten Sie Interesse an dem Thema <strong>Data Vault</strong> und deren Einsatzmöglichkeiten haben, dann nehmen Sie gerne mit uns <a href="/kontakt//">Kontakt</a> auf. Wir beraten sie gerne.</span></p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/data-vault/">Data Vault kurz und knapp erklärt!</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SQL vs KQL</title>
		<link>https://arelium.de/sql-vs-kql/</link>
		
		<dc:creator><![CDATA[Thomas Sobizack]]></dc:creator>
		<pubDate>Wed, 10 Apr 2024 11:00:13 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[SQl]]></category>
		<guid isPermaLink="false">https://arelium.de/?page_id=18086</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/sql-vs-kql/">SQL vs KQL</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><h2>SQL vs KQL</h2>
<p>In den folgenden Zeilen werde <a href="/team/">ich</a> kurz erklären, was SQL ist, was KQL ist und wofür wir die Sprachen verwenden können. Abschließend werde ich kurz die Unterschiede zwischen den beiden Sprachen erläutern.</p>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h2>SQL</h2>
<p><strong>SQL </strong>ist eine Abkürzung für Structured Query Language. Dabei handelt es sich um eine Datenbanksprache.</p>
<p>Innerhalb der SQL-Sprache werden drei Formen von SQL-Befehlen unterschieden:</p>
<ul>
<li><strong>DML</strong> (Data Manipulation Language)</li>
<li><strong>DDL</strong> (Date Definition Language)</li>
<li><strong>DCL</strong> (Data Control Language)</li>
</ul>
<p>DDL ermöglicht die Ausführung von Befehlen in SQL, die zur Definition von Datenstrukturen in relationalen Datenbanken benötigt werden. Mit den DML-Befehlen (Insert, Modify, Delete) können Änderungen an den Daten vorgenommen werden. Mit DCL werden Abfragen auf den vorhandenen Datenbeständen ausgeführt. Die Datenbanksprache SQL dient der Verwaltung strukturierter Daten in relationalen Datenbanken. Dabei wird, wie bereits erwähnt, ein relationales Datenmodell verwendet, bei dem die Daten in Tabellen mit Spalten und Zeilen organisiert sind. Die Sprache SQL ist in ihren Grundlagen standardisiert, jedoch verwenden verschiedene SQL-Engines unterschiedliche Dialekte, d.h. je nach Dialekt gibt es andere Befehle, Datentypen oder Funktionen. Auch Microsoft verwendet mit <a href="https://learn.microsoft.com/en-us/sql/t-sql/language-reference?view=sql-server-ver16" target="_blank" rel="noopener">T-SQL</a> einen eigenen Dialekt.</p>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h2>KQL</h2>
<p>KQL (Kusto Query Language) ist eine leistungsfähige Sprache, mit der Daten untersucht und Muster erkannt werden können. Dadurch können Anomalien und Ausreißer identifiziert werden. KQL ist eine einfache, aber leistungsfähige Sprache zur Abfrage von strukturierten, halbstrukturierten und unstrukturierten Daten. Die Sprache ist leicht lesbar. KQL verwendet Schema-Entitäten, die denen von SQL ähnlich sind: Datenbanken, Tabellen und Spalten.</p>
<p>Die Kusto-Abfragesprache (KQL) wird heute in vielen Szenarien verwendet, um Daten zu analysieren und daraus Erkenntnisse zu gewinnen.<br />
So kann KQL zur Überwachung von Protokollen, Metriken und Telemetriedaten verwendet werden. Ein weiteres Anwendungsgebiet von KQL ist der Sicherheitsbereich. Dort ermöglicht KQL die Untersuchung von Sicherheitsereignissen, wie z.B. die Erkennung von Angriffsmustern oder die Überwachung von Anmeldeaktivitäten.<br />
Auch im Bereich Business Analytics wird KQL eingesetzt, um z.B. Verkaufsdaten, Kundenverhalten oder Marketingkampagnen zu untersuchen.</p>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h2 style="text-align: justify;">Vergleich von SQL und KQL</h2>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column us_custom_8da92723"><div class="wpb_wrapper"><table>
<tbody>
<tr>
<td></td>
<td style="text-align: center;"><strong>SQL</strong></td>
<td style="text-align: center;"><strong>KQL</strong></td>
</tr>
<tr>
<td><strong>Zweck</strong></td>
<td>Konzipiert für die Verwaltung strukturierter Daten in relationalen Datenbanken.</td>
<td>Optimiert für die Abfrage großer Mengen strukturierter und halbstrukturierter Daten, einschließlich Protokollen und Telemetriedaten, in Echtzeitanalysenzenarien.</td>
</tr>
<tr>
<td><strong>Datenmodell</strong></td>
<td>Verwendung eines relationales Datenmodell, bei dem Daten in Tabellen mit Spalten und Zeilen organisiert sind.</td>
<td>Verwendet ein tabellarisches Datenmodell, dass auf Spalten und Zeilen basiert.</td>
</tr>
<tr>
<td><strong>Lesbarkeit und Ausdrucksstärke</strong></td>
<td>Es kann komplex werden und erfordert unter Umständen eine komplexe umständliche Verschachtelung von Abfragen.</td>
<td>Leicht und verständlich zu lesen.</td>
</tr>
<tr>
<td><strong>Aggregationsfunktionen</strong></td>
<td>Bietet Aggregationsfunktionen an, aber KQL ist speziell für Analysen und Aggregationen in großen Datensätzen optimiert.</td>
<td>Bietet eine umfassende Unterstützung für Aggregationen, Zeitreihenoperatoren und -funktionen.</td>
</tr>
<tr>
<td><strong>Standardisierung</strong></td>
<td>SQL ist in seinen Grundlagen standardisiert. Es gibt aber eine Vielzahl an Dialekten.</td>
<td>Ist spezifisch für den Azure Data Explorer und bietet eine einheitliche Abfragesprache.</td>
</tr>
</tbody>
</table>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h2>Fazit</h2>
<p>Sowohl SQL als auch KQL sind Abfragesprachen, die für die Verarbeitung und Analyse von Daten entwickelt wurden.<br />
SQL wird hauptsächlich für relationale Datenbanken und strukturierte Daten verwendet. KQL ist für die Abfrage und Analyse großer, verteilter Daten in der Cloud optimiert.</p>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h2>Kontakt</h2>
<p>Wenn Sie sich noch unsicher sind, welche Datenbank für Sie die richtige ist, <a href="/kontakt/">kontaktieren</a> Sie uns gerne. Unsere Experten freuen sich, Sie beraten zu dürfen.</p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/sql-vs-kql/">SQL vs KQL</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ETL in Azure Synapse Analytics</title>
		<link>https://arelium.de/etl-in-azure-synapse-analytics/</link>
		
		<dc:creator><![CDATA[Tobias Adler]]></dc:creator>
		<pubDate>Tue, 27 Feb 2024 08:52:44 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Synapse]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Data Engineering]]></category>
		<category><![CDATA[Data Lake]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[OneLake]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">https://arelium.de/?page_id=16853</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/etl-in-azure-synapse-analytics/">ETL in Azure Synapse Analytics</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><p>In modernen Unternehmen fallen täglich große Datenmengen aus verschiedenen internen und externen Quellen an. Um auf Basis dieser Daten geschäftskritische Entscheidungen treffen zu können, müssen die Daten in ein einheitliches Format gebracht werden. Dieser Prozess wird auch als <a href="https://learn.microsoft.com/de-de/azure/architecture/data-guide/relational-data/etl">ETL-Prozess</a> bezeichnet und gliedert sich in die folgenden drei Schritte. Extract (Extraktion der Rohdaten aus verschiedenen Quellen), Transform (Überführung der Rohdaten in ein einheitliches Format) und Load (zentrale Bereitstellung der Daten). In diesem Beitrag werde ich Schritt für Schritt erläutern, wie ein ETL in Azure Synapse Analytics implementiert werden kann.</p>
<h3><strong>Warum Daten in der Cloud und nicht Lokal speichern?</strong></h3>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Warum immer mehr Unternehmen den Weg in die Cloud finden, zeigt eine Reihe von Vorteilen, die die Cloud bietet:</p>
<ul>
<li><strong>Skalierbarkeit:</strong> Die Cloud bietet die Möglichkeit, die Ressourcen an den eigenen Bedarf anzupassen, ohne Änderungen an der Infrastruktur vornehmen zu müssen.</li>
<li><strong>Kosteneffizienz:</strong> Da die Ressourcen an den eigenen Bedarf angepasst werden können, müssen Unternehmen keine Überkapazitäten vorhalten, um eine überdurchschnittliche Auslastung zu bewältigen. Stattdessen können die Ressourcen in solchen Fällen dynamisch erhöht werden, so dass nur die tatsächlich benötigte Kapazität bezahlt werden muss.</li>
<li><strong>Sicherheit: </strong><a href="https://www.microsoft.com/de-de">Microsoft</a> hat robuste Sicherheitsmaßnahmen wie zum Beispiel VPNs implementiert, um die Daten während der Übertragung zu schützen. Darüber hinaus bietet die <a href="https://azure.microsoft.com/de-de">Azure-Cloud</a> fortschrittliche Zugriffskontrollfunktionen, um sicherzustellen, dass nur autorisierte Benutzer auf die Daten zugreifen können.</li>
<li><strong>Flexibilität: </strong>Durch die Speicherung der Daten in der Cloud können die Mitarbeiterinnen und Mitarbeiter von überall auf die Daten zugreifen, solange sie über eine Internetverbindung verfügen. Zudem lassen sich Cloud-Dienste nahtlos in bestehende Systeme integrieren. Dadurch können Unternehmen ihre bestehenden Investitionen nutzen und neue Technologien schnell einführen, ohne komplexe Integrationen oder Anpassungen vornehmen zu müssen.</li>
</ul>
<h3><strong>ETL in Azure Synapse</strong></h3>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p><a href="https://azure.microsoft.com/de-de/products/synapse-analytics">Azure Synapse</a> ist eine Cloud-basierte Datenanalyseplattform von Microsoft, die Datenverarbeitungs- und Analysedienste in einer einzigen Umgebung vereint. Sie ermöglicht es Unternehmen, große Mengen strukturierter und unstrukturierter Daten aus verschiedenen Quellen zu sammeln, zu speichern, zu verarbeiten und zu analysieren. In diesem Blogbeitrag werde ich den ETL-Prozess in Azure Synapse Analytics (Extract, Transform, Load) in Synapse anhand einer <a href="/glossar/azure/">Azure</a> SQL-Datenbank erläutern. In diesem Beispiel arbeite ich mit den Beispieldaten der <a href="https://azure.microsoft.com/de-de/products/azure-sql/database/">Azure SQL Datenbank</a>, die die Geschäftsdaten eines virtuellen Fahrradladens repräsentieren.</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1024" height="585" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-4-1024x585.png" class="attachment-large size-large" alt="ETL in Synapse Bild 4" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-4-1024x585.png 1024w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-4-300x171.png 300w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-4-700x400.png 700w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Um einen ETL-Prozess in Azure Synapse Analytics zu implementieren, müssen wir zunächst einen <a href="https://learn.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-overview-what-is">Dedicated SQL Pool</a> einrichten. Der Dedicated SQL Pool (früher auch SQL Datawarehouse genannt) ist ein sogenanntes Massively Parallel Processing oder kurz MPP. Dabei handelt es sich um eine moderne Datenbankarchitektur, bei der eine große Anzahl von Prozessoren parallel arbeitet, um die Daten in kleinere Teile aufzuteilen und diese gleichzeitig zu verarbeiten. In diesem SQL-Pool werden wir später unsere Daten speichern.</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1024" height="660" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-1-1024x660.png" class="attachment-large size-large" alt="ETL in Synapse Bild 1" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-1-1024x660.png 1024w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-1-300x193.png 300w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-1-621x400.png 621w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-1.png 1525w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Linked Service</strong></h3>
<p>Nun müssen wir in Synapse eine Verbindung zu unserer Azure Datenbank herstellen. Dazu klicken wir in der linken Menüleiste auf Manage und dann auf &#8222;<a href="https://learn.microsoft.com/de-de/azure/data-factory/concepts-linked-services?tabs=data-factory">Linked services</a>&#8222;. Wenn wir dann auf &#8222;New&#8220; klicken, öffnet sich ein Menü, in dem wir auswählen können, mit welcher externen Datenquelle wir uns verbinden möchten. Für unser Beispiel wählen wir &#8222;Azure SQL Database&#8220;.</p>
</div></div></div></div></div></div></section><section class="l-section wpb_row us_custom_e47f122d height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="w-separator size_small"></div><div class="w-hwrapper valign_top align_none"><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="647" height="1024" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-2-647x1024.png" class="attachment-large size-large" alt="ETL in Synapse Bild 2" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-2-647x1024.png 647w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-2-189x300.png 189w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-2-253x400.png 253w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-2.png 768w" sizes="auto, (max-width: 647px) 100vw, 647px" /></div></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="631" height="950" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-6.png" class="attachment-large size-large" alt="ETL in Synapse Bild 6" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-6.png 631w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-6-199x300.png 199w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-6-266x400.png 266w" sizes="auto, (max-width: 631px) 100vw, 631px" /></div></div></div><div class="w-separator size_small"></div><div class="w-hwrapper valign_top align_none"><div class="wpb_text_column us_custom_26c43283"><div class="wpb_wrapper"><p>Im nächsten Fenster können wir die Anmeldedaten für unsere SQL Datenbank angeben. Dazu muss die Azure Subscription der Datenbank angegeben werden, sowie der Servername und die gewünschte Art der Authentifizierung. Für dieses Beispiel habe ich die <a href="https://learn.microsoft.com/de-de/azure/synapse-analytics/sql/sql-authentication?tabs=serverless">SQL Authentication</a> gewählt, bei der man sich mit einem Benutzernamen und einem Passwort anmeldet. Nun könnt ihr unten rechts auf den Button &#8222;Test Connection&#8220; klicken, um zu testen, ob die Verbindung erfolgreich hergestellt werden kann. Ist dies der Fall, könnt ihr auf den &#8222;Create Button&#8220; klicken, um die Verbindung zu erstellen.</p>
</div></div><div class="wpb_text_column us_custom_26c43283"><div class="wpb_wrapper"><p>Auf die gleiche Weise können wir nun eine Verbindung zu unserem soeben erstellten SQL-Pool herstellen. Dazu erstellen wir wieder einen neuen Linked Service, wählen aber diesmal &#8222;<a href="/glossar/azure-synapse-analytics/">Azure Synapse Analytics</a>&#8220; aus der Liste der möglichen Verbindungen aus. Unter &#8222;Azure subscription&#8220; wählen wir wieder unsere Subscription und unter &#8222;Server name&#8220; unseren Synapse Workspace aus, in den wir die Daten schreiben wollen. Bei &#8222;SQL Pool&#8220; sollte automatisch unser gerade angelegter Dedicated SQL Pool erscheinen. Unter &#8222;Authentication Type&#8220; wählen wir nun die Option &#8222;<a href="https://learn.microsoft.com/de-de/entra/identity/managed-identities-azure-resources/overview">System Assigned Managed Identity</a>&#8222;. Dabei handelt es sich um einen Mechanismus in Microsoft Azure, mit dem Ressourcen innerhalb eines Azure Service eine Identität erhalten können. Diese Identität kann verwendet werden, um sicher auf andere Azure Ressourcen zuzugreifen, ohne Anmeldeinformationen wie Benutzername und Passwort einbinden zu müssen.</p>
</div></div></div><div class="w-separator size_small"></div></div></div><div class="wpb_column vc_column_container"><div class="vc_column-inner"></div></div></div></div></section><section class="l-section wpb_row us_custom_e4f3b373 height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Copy Data Task</strong></h3>
<p>Nun können wir wieder mit dem &#8222;Test connection Button&#8220; testen, ob die Verbindung erfolgreich war. Ist dies der Fall, können wir wieder auf Create klicken, um den Linked Service zu erstellen. Nachdem der Linked Service erstellt wurde, kehren wir zum Ausgangsbildschirm zurück und können im linken Menü den Punkt &#8222;Integrate&#8220; und dann das Plus-Symbol auswählen, um eine neue &#8222;Copy Data Task&#8220; zu erstellen.</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1024" height="769" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-3-1024x769.png" class="attachment-large size-large" alt="ETL in Synapse Bild 3" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-3-1024x769.png 1024w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-3-300x225.png 300w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-3-532x400.png 532w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-3.png 1625w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Im folgenden Assistenten können wir im zweiten Menüpunkt die Quelle angeben, aus der die Daten kopiert werden sollen. Dazu geben wir unter &#8222;Source type&#8220; wieder &#8222;Azure SQL Database&#8220; an und wählen unter &#8222;Connection&#8220; unseren zuvor erstellten &#8222;Linked service&#8220; aus. Wenn die Verbindung zur Datenbank erfolgreich war, werden nun im unteren Fenster alle Tabellen der Datenbank aufgelistet. Hier wähle ich nun alle Tabellen aus, die ich aus der Datenbank in Synapse importieren möchte. Auf der nächsten Seite kann nun unser zuvor erstellter Azure Synapse Linked Service als Ziel für unsere Daten ausgewählt werden.</p>
<h3><strong>Quell- und Zieltabellen mappen</strong></h3>
<p>Unter dem Punkt Dataset können nun die Tabellen ausgewählt werden, in die die Daten geschrieben werden sollen. Standardmäßig legt Synapse hier automatisch Tabellen im Ziel an, die genau so heißen wie in der Datenquelle und die gleichen Spaltentypen haben. Unter dem Punkt &#8222;Konfiguration&#8220; können nun die einzelnen Spalten aufeinander abgebildet werden. Auch hier legt Synapse automatisch die gleichen Spalten wie in der Quelltabelle an und mappt die passenden Spalten aufeinander. Wichtig ist hier, dass wir die Option &#8222;Type conversion&#8220; deaktivieren. Nachdem wir dies getan haben, können wir mit dem &#8222;Next Button&#8220; zum &#8222;Settings&#8220;-Bildschirm gelangen.</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="774" height="842" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-8.png" class="attachment-large size-large" alt="ETL in Synapse Bild 8" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-8.png 774w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-8-276x300.png 276w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-8-368x400.png 368w" sizes="auto, (max-width: 774px) 100vw, 774px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Auf diesem Bildschirm kann unter anderem die Kopiermethode ausgewählt werden, mit der die Daten in die Quelle kopiert werden sollen. Mit der Option &#8222;Data consistency verification&#8220; werden nach dem Import der Daten zusätzliche Überprüfungsfunktionen angewendet, um sicherzustellen, dass alle Daten erfolgreich kopiert wurden. Unter anderem werden die Dateigrößen und die Anzahl der Zeilen in Quelle und Ziel verglichen. Da wir jedoch als Kopiermethode &#8222;Copy command&#8220; gewählt haben, können wir die Option &#8222;Data consistency verification&#8220; nicht aktivieren. Unter &#8222;Logging settings&#8220; können die Einstellungen für die Protokollierung während des Kopiervorgangs vorgenommen werden. Mit der Option &#8222;Storage connection name&#8220; können wir den Linked Service angeben, der die Verbindung zum Storage speichert, in dem die Logdateien gespeichert werden. Wenn ich auf &#8222;New&#8220; klicke, öffnet sich ein Fenster, in dem ich die Verbindung zum Storage erstellen kann.</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="616" height="882" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-7.png" class="attachment-large size-large" alt="ETL in Synapse Bild 7" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-7.png 616w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-7-210x300.png 210w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-7-279x400.png 279w" sizes="auto, (max-width: 616px) 100vw, 616px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3><strong>Azure Blob Storage</strong></h3>
<p>In diesem Fenster wird die Verbindung zu einem <a href="https://azure.microsoft.com/de-de/products/storage/blobs">Azure Blob Storage</a> definiert. Dazu wähle ich wieder meine Azure Subscription und einen Standard Storage Account meiner Subscription aus. Anschließend teste ich die Verbindung erneut und klicke auf &#8222;Create&#8220;.</p>
<p>Anschließend aktiviere ich noch die Option &#8222;Enable staging&#8220;. Dies ist der Storage account in dem die Staging Tabellen gespeichert werden und bei der Option &#8222;Storage connection name&#8220; kann der Linked Service für den &#8222;Staging Storage&#8220; angegeben werden. Die Staging Area ist ein temporärer Speicherbereich, in dem Daten vorübergehend zwischengespeichert werden, um sie zu transformieren oder zu überprüfen, bevor sie in die endgültige Datenbank geschrieben werden. Für das Staging wähle ich den gleichen Linked Service wie für die Speicherung der Logfiles. Wie oben beschrieben, wähle ich als Kopiermethode &#8222;Copy command&#8220;. Danach wähle ich &#8222;Next&#8220; und komme zum &#8222;Review and finish&#8220; Screen, wo wir unsere Einstellungen noch einmal überprüfen können. Danach können wir unser &#8222;Copy Data Tool&#8220; starten. Auf dem nächsten Bildschirm können wir sehen, welche Schritte des Deployments gerade ausgeführt werden und ob sie erfolgreich waren.</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1024" height="471" src="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-9-1024x471.png" class="attachment-large size-large" alt="ETL in Synapse Bild 9" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-9-1024x471.png 1024w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-9-300x138.png 300w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-9-870x400.png 870w, https://arelium.de/wp-content/uploads/2024/02/ETL-in-Synapse-Bild-9.png 1303w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Wenn alle Schritte erfolgreich waren, haben wir unsere Pipeline erstellt, mit der wir Daten von einem Azure SQL Server in unseren Synapse Studio Workspace schreiben können. Der nächste Schritt wäre nun, einen <a href="https://learn.microsoft.com/de-de/azure/data-factory/concepts-pipeline-execution-triggers">Trigger</a> für die Pipeline zu erstellen. Ein Trigger kann eine Pipeline automatisch starten. Zum Beispiel könnten wir für unsere neue Pipeline einen Trigger einrichten, der die Pipeline automatisch einmal am Tag durchlaufen lässt. Und mit dieser Pipeline können wir einen automatischen ETL-Prozess in Azure Synapse Analytics abbilden.</p>
<h3><strong>ETL oder ELT?</strong></h3>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>ETL (Extract, Transform, Load) und <a href="https://learn.microsoft.com/de-de/azure/synapse-analytics/sql-data-warehouse/design-elt-data-loading">ELT</a> (Extract, Load, Transform) sind zwei unterschiedliche Ansätze zur Datenintegration, die in Datenintegrationsprojekten verwendet werden. Der ETL-Transformationsprozess ermöglicht es Unternehmen, Daten zu bereinigen, zu harmonisieren und zu verbessern, um sie für die Verwendung in Data Warehouses oder anderen Zielspeichermedien vorzubereiten. Dazu gehört auch das Entfernen von Dubletten, so dass überflüssige Daten gar nicht erst in den Zielspeicher geladen werden müssen.</p>
<p>Beim ELT hingegen werden die Rohdaten in den Zielspeicher geladen, was das sogenannte Massively Parallel Processing oder kurz MPP ermöglicht. Dabei handelt es sich um eine moderne Architektur, bei der eine große Anzahl von Prozessoren parallel arbeitet. Dadurch werden die Daten in kleinere Teile aufgeteilt und können so gleichzeitig verarbeitet werden. Ein weiterer Vorteil von ELT ist die Flexibilität bei der Datentransformation. Da die Daten direkt in das Zielspeichermedium geladen werden, können Transformationen und Datenverarbeitungsschritte direkt auf die geladenen Daten angewendet werden. Dies ermöglicht es Unternehmen, komplexe Analysen und Berichte direkt auf den Rohdaten durchzuführen, ohne dass separate Transformationsschritte erforderlich sind.</p>
<p>Insgesamt bieten sowohl der ETL- als auch der ELT-Ansatz Vorteile für Datenintegrationsprojekte. Die Wahl zwischen beiden hängt von den spezifischen Anforderungen, der Arbeitslast und den Zielen eines Unternehmens ab. ETL bietet die Möglichkeit, Daten vor dem Laden in das Zielspeichermedium zu transformieren und zu bereinigen. ELT hingegen ermöglicht das direkte Laden von Daten, gefolgt von flexiblen Transformationen auf den Rohdaten. Letztendlich ist es wichtig, den Anwendungsfall sorgfältig zu prüfen, um die beste Lösung für die jeweiligen Anforderungen auszuwählen.</p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/etl-in-azure-synapse-analytics/">ETL in Azure Synapse Analytics</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Wie Microsoft die Sprache „T-SQL“ weiterentwickelt</title>
		<link>https://arelium.de/neuerung-t-sql/</link>
					<comments>https://arelium.de/neuerung-t-sql/#respond</comments>
		
		<dc:creator><![CDATA[Torsten Ahlemeyer]]></dc:creator>
		<pubDate>Thu, 01 Feb 2024 10:04:34 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQl]]></category>
		<guid isPermaLink="false">https://arelium.de/?p=16165</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/neuerung-t-sql/">Wie Microsoft die Sprache „T-SQL“ weiterentwickelt</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Neue Befehle kommen hinzu, andere fallen weg…</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>Eine natürliche Sprache wie Deutsch unterliegt ständigem Wandel. Aktuell stehen fast 150.000 Stichworte im Duden. Pro Jahr kommen ca. 3000 neue Begriffe hinzu, 300 andere werden gestrichen. So fanden in den letzten Jahren bspw. Ausdrücke wie „Insektensterben“, „Klimakrise“, „aufploppen“, „Lifehack“, „Enkeltag“, „Faktenfinder“, „Uploadfilter“ oder „Wiesn“ Eingang in das offizielle Rechtschreibwörterbuch. Lebende Sprachen passen sich so an veränderte Gegebenheiten und neue Entwicklungen an. Aber auch Vereinfachungen finden immer wieder den Weg in den Standard.</p>
<p>Ähnlich halten es die Datenbankenhersteller mit dem Umfang der eingesetzten Abfrage- und Programmiersprache. Microsoft als Hersteller des SQL Servers beobachtet sehr genau Foren, führt Gespräche mit Entwicklern auf Konferenzen weltweit und wertet das Feedback aus der eigenen Erwachsenenbildung aus. So entwickelt sich ein Gefühl, welche Funktionalitäten gewünscht sind aber momentan noch fehlen oder welche Befehle in der aktuellen Version zu kompliziert sind. Aus dieser Grundlage heraus bildetet Microsoft dann die Neuerung in T-SQL.</p>
</div></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Euer Wunsch ist unser Befehl</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>In den SQL Server 2022 haben so einige neue Befehle sehr zur Freude der Entwicklergemeinde Einzug erhalten. Im Gegenzug wurden einige wenige Ausdrücke als „auslaufend“ markiert. Sie werden in zukünftigen Versionen nicht mehr unterstützt. Eine <a href="https://learn.microsoft.com/de-de/sql/database-engine/discontinued-database-engine-functionality-in-sql-server?view=sql-server-ver16">genaue Auflistung</a> findet man auf den Hilfe- und Lernseiten des Unternehmens. In diesem Blogpost soll es aber um die neuen Möglichkeiten gehen. Ich habe mir zwei frische Befehle ausgesucht, um an ihnen beispielhaft zu zeigen, wie einfach nun Auswertungen werden, die vorher umständlich nachprogrammiert werden mussten.</p>
<p>Die Vorteile der neuen Befehle besteht allerdings nicht nur an der einfacheren Implementierung und der besseren Wartbarkeit von Quellcode, sondern oftmals wirken sie sich auch äußerst positiv auf das Laufzeitverhalten aus. Die Spezialisten von Microsoft haben hier nämlich die Möglichkeit der Optimierung (bspw. Parallelverarbeitung, Nutzung von Berechnungshardware, …) voll ausgenutzt und die Lösung ausführlich getestet. Bietet der Hersteller derartige Verbesserungen an, lohnt es sich sogar oft bestehenden Code nachträglich anzupassen. Auf jeden Fall sollte man aber zukünftig von diesen Optimierungen Gebrauch machen.</p>
</div></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Daten aus dem Nichts generieren</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>Oft kommen Entwickler in die Bedrängnis eine spezielle Liste von Werten zur Verfügung haben zu müssen. So sind bspw. alle Daten eines Geschäftsjahres in einer Tabelle sinnvoll, um darauf joinen und filtern zu können. Doch wie generiert man eine solche Datumstabelle? Bisher war diese Arbeit händisch zu programmieren – Lösungen bspw. zur Ablage einer Tabelle mit fortlaufend nummerierten Zahlwerten funktionierten analog. Ich selbst habe jahrelang die schnelle rekursive Variante bevorzugt:</p>
</div></div><div class="w-separator size_medium"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="606" height="277" src="https://arelium.de/wp-content/uploads/2024/02/t-SQL-Jahrestabelle-mit-Hilfe-einer-Rekursion.png" class="attachment-full size-full" alt="t-SQL Jahrestabelle mit Hilfe einer Rekursion" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/t-SQL-Jahrestabelle-mit-Hilfe-einer-Rekursion.png 606w, https://arelium.de/wp-content/uploads/2024/02/t-SQL-Jahrestabelle-mit-Hilfe-einer-Rekursion-300x137.png 300w" sizes="auto, (max-width: 606px) 100vw, 606px" /></div></div><div class="w-text us_custom_f86a7b6d"><span class="w-text-h"><span class="w-text-value">Beispielcode zur Erzeugung einer Jahrestabelle mit Hilfe einer Rekursion</span></span></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Microsoft hat erkannt, dass hier jeder Entwickler sein eigenes Süppchen kocht. Von einer unzähligen Sammlung INSERTS über diverse Schleifenkonstruktionen findet man in einschlägigen Foren viele Lösungen. Nun hat der Hersteller hier nachgebessert und die Generierung derartiger Folgen vereinheitlicht und deutlich vereinfacht:</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1024" height="103" src="https://arelium.de/wp-content/uploads/2024/02/t-SQL-GENERATE_SERIES--1024x103.png" class="attachment-large size-large" alt="t-SQL GENERATE_SERIES" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/t-SQL-GENERATE_SERIES--1024x103.png 1024w, https://arelium.de/wp-content/uploads/2024/02/t-SQL-GENERATE_SERIES--300x30.png 300w, https://arelium.de/wp-content/uploads/2024/02/t-SQL-GENERATE_SERIES--1300x130.png 1300w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></div></div><div class="w-text us_custom_f86a7b6d"><span class="w-text-h"><span class="w-text-value">Der Befehl GENERATE_SERIES ist nicht nur für nummerische Werte hilfreich</span></span></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Eine Frage der Größe</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>Auch mit den massenhaften Varianten der Größenvergleiche beschäftigt sich Microsoft mit Neuerung in T-SQL. Hier findet man bisher verschachtelte IF-Statements oder wüste WHERE-Blöcke mit aneinandergefügten Vergleichen. Da sich derartige Abfragen fachlich nicht direkt mit den Funktionen MIN() oder MAX() abbilden lassen (da diese nur Tabelleninhalte oder Inhalte von Tabellenwertvariablen vergleichen können), wurden die Funktionen GREATEST() und LEAST() geschaffen. Mit diesen kann man eine Auflistung von durch Komma getrennten Ausdrücken auswerten. Dabei darf es sich um bis zu 254 direkten Werte, Variablen oder Konstanten handeln. Möglich sind alle vergleichbaren Datentypen. Sogar Aggregatfunktionen und skalare Unterabfragen sind erlaubt.</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1024" height="94" src="https://arelium.de/wp-content/uploads/2024/02/T-SQL-die-Funktion-GREATEST-v02-1024x94.png" class="attachment-large size-large" alt="T-SQL die Funktion GREATEST" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2024/02/T-SQL-die-Funktion-GREATEST-v02-1024x94.png 1024w, https://arelium.de/wp-content/uploads/2024/02/T-SQL-die-Funktion-GREATEST-v02-300x27.png 300w, https://arelium.de/wp-content/uploads/2024/02/T-SQL-die-Funktion-GREATEST-v02-1300x119.png 1300w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></div></div><div class="w-text us_custom_f86a7b6d"><span class="w-text-h"><span class="w-text-value">Die Funktion GREATEST() erlaubt sogar unterschiedliche Datentypen als Vergleichswerte</span></span></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Weitere Informationen finden sich in der Onlinedokumentation von Microsoft: <a href="https://learn.microsoft.com/de-de/sql/t-sql/functions/logical-functions-greatest-transact-sql?view=sql-server-ver16">https://learn.microsoft.com/de-de/sql/t-sql/functions/logical-functions-greatest-transact-sql?view=sql-server-ver16</a></p>
</div></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Fazit</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>Um die Gunst der Nutzer zu erlangen und zu behalten, entwickeln die Hersteller ihrer Produkte stets weiter. Auch Microsoft beobachtet den Markt genau und optimiert hier bestehende Befehle und schafft neue Möglichkeiten, wo altbewährtes nicht ausreicht oder zu komplex in der Entwicklung ist. Es lohnt sich definitiv einen Blick in die Featureliste neuer Versionen zu werfen und sich wohlwollend zu überlegen seinen Quellcode anzupassen. Neuentwicklungen sollte man auf jeden Fall nach den aktuellen Standards vornehmen. Im Idealfall lernt man also nie aus… was sich mit guten Laufzeitverhalten und bequemer Programmierung und Wartung niederschlägt – wie schon diese zwei einfachen Beispiele zeigen. Die Neuerung in T-SQL sollten dabei immer im Auge behalten werden. Wir haben auch einen <a href="/das-kniffelige-teilsummenproblem-mit-t-sql-geloest/">weiteren Artikel</a> zu spannenden Themen in SQL.</p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/neuerung-t-sql/">Wie Microsoft die Sprache „T-SQL“ weiterentwickelt</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://arelium.de/neuerung-t-sql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fortgeschrittene Join-Typen in SQL</title>
		<link>https://arelium.de/fortgeschrittene-join-typen-in-sql/</link>
					<comments>https://arelium.de/fortgeschrittene-join-typen-in-sql/#respond</comments>
		
		<dc:creator><![CDATA[Dr. Oliver Lux]]></dc:creator>
		<pubDate>Fri, 05 Jan 2024 06:00:15 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQl]]></category>
		<category><![CDATA[SQL-Join]]></category>
		<guid isPermaLink="false">https://arelium.de/?p=15251</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/fortgeschrittene-join-typen-in-sql/">Fortgeschrittene Join-Typen in SQL</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"></div></div></div></div></div></div></section><section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><p>In einem vorherigen Beitrag hatten wir uns die <a href="/sql-joins-die-grundlegenden-join-typen-in-sql/">grundlegenden Join-Typen in SQL</a> angesehen. Doch es gibt noch weitaus mehr Möglichkeiten, SQL-Tabellen miteinander zu verknüpfen. Daher werfen wir hier einen Blick auf fortgeschrittene Join-Typen. Wir empfehlen Ihnen, zuerst den <a href="/sql-joins-die-grundlegenden-join-typen-in-sql/">vorherigen Beitrag</a> zu SQL-Joins zu lesen. Dort findet sich auch eine Beschreibung der Beispieldaten, die wir hier wieder aufgreifen.</p>
</div></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Left/Right Anti Join</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>Beim Anti-Join möchte man alle Einträge aus der linken/rechten Tabellen anzeigen, die nicht in der jeweils anderen Tabelle enthalten sind. Die andere Tabelle wird also nur als Filter gebraucht.</p>
</div></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1024" height="320" src="https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S4-1024x320.png" class="attachment-large size-large" alt="Left-/Right Anti Join" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S4-1024x320.png 1024w, https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S4-300x94.png 300w, https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S4-1282x400.png 1282w, https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S4.png 1397w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></div></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Dies kann zum Beispiel hilfreich sein, um in der Artikeltabelle Ladenhüter zu identifizieren, die nicht verkauft wurden. Dafür nutzen wir folgende Abfrage:</p>
<pre>SELECT ft.[PK_Transaktion], da.[Bezeichnung]
FROM [EinfacherHandel].[dbo].[FactTransaktionen] ft
RIGHT OUTER JOIN [dbo].[DimArtikel] da
ON ft.FK_Artikel = da.PK_Artikel
WHERE ft.FK_Artikel IS NULL</pre>
</div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Der Unterschied zum RIGHT OUTER JOIN ist also nur die letzte Zeile. Durch die WHERE-Klausel werden nur Artikel angezeigt, die in der Faktentabelle nicht enthalten sind. In dem Fall handelt es sich nur um den Toaster:</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="211" height="67" src="https://arelium.de/wp-content/uploads/2023/11/Result_AntiJoin.png" class="attachment-large size-large" alt="Ergebnis des Anti-Join" loading="lazy" /></div></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Self Join</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>Der Self Join verknüpft eine Tabelle mit sich selbst. Dies wird oft gebraucht, wenn sich unterschiedliche Hierarchie-Stufen in einer Tabelle befinden. Ein beliebtes Beispiel ist hierbei eine Mitarbeiter-Tabelle, wobei für jeden Mitarbeiter in einer zusätzlichen Spalte die ID des Vorgesetzten angegeben wird. Verknüpft man jeweils den Primärschlüssel mit der ID des Vorgesetzten, kann man für jeden Mitarbeiter den Namen des Vorgesetzten anzeigen.</p>
</div></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="542" height="437" src="https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S5.png" class="attachment-large size-large" alt="Self Join" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S5.png 542w, https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S5-300x242.png 300w, https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S5-496x400.png 496w" sizes="auto, (max-width: 542px) 100vw, 542px" /></div></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Wir wollen aber bei unserem Beispiel bleiben und einen Eindruck vermitteln, was mit dem Self Join noch möglich ist. Dazu stellen wir uns vor, dass unser Beispiel-Händler in einer fragwürdigen Rabatt-Aktion die Preise der Produkte aus der DimArtikel vertauschen will. Mit der folgenden Anweisung lässt sich jedem Artikel der Preis des jeweils vorherigen Artikels aus der Liste zuordnen:</p>
<pre>SELECT da1.PK_Artikel, da1.Bezeichnung, da1.Preis [alter Preis], da2.Preis [neuer Preis]
FROM [dbo].[DimArtikel] da1
LEFT OUTER JOIN [dbo].[DimArtikel] da2
ON da1.PK_Artikel = da2.PK_Artikel + 1</pre>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="314" height="200" src="https://arelium.de/wp-content/uploads/2023/11/Result_SelfJoin.png" class="attachment-large size-large" alt="Ergebnis des Self Join" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2023/11/Result_SelfJoin.png 314w, https://arelium.de/wp-content/uploads/2023/11/Result_SelfJoin-300x191.png 300w" sizes="auto, (max-width: 314px) 100vw, 314px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Dem Fahrrad lässt sich kein neuer Preis zuordnen, da es der erste Artikel in der Tabelle ist. Außerdem werden die Kunden vermutlich wenig Verständnis haben, wenn ein Fußball plötzlich 699€ kostet. Will man die Zuordnungen besser steuern, kann man eine zusätzliche Spalte anlegen, in die wir die passende ID schreiben. Dazu haben wir eine neue Tabelle DimArtikelPreise angelegt mit der Spalte TauschID. Wir erstellen folgende Abfrage:</p>
<pre>SELECT da1.PK_Artikel, da1.Bezeichnung, da1.Preis [alter Preis], da1.TauschID, da2.Preis [neuer Preis]
FROM [dbo].[DimArtikelPreise] da1
INNER JOIN [dbo].[DimArtikelPreise] da2
ON da1.TauschID = da2.PK_Artikel</pre>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="378" height="201" src="https://arelium.de/wp-content/uploads/2023/11/Result_SelfJoin2.png" class="attachment-large size-large" alt="Ergebnis des Self Join mit Tausch-Spalte" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2023/11/Result_SelfJoin2.png 378w, https://arelium.de/wp-content/uploads/2023/11/Result_SelfJoin2-300x160.png 300w" sizes="auto, (max-width: 378px) 100vw, 378px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Nun sehen wir, dass wir mithilfe der Spalte „TauschID“ angeben können, welcher Preis aus der Artikel-Tabelle dem jeweiligen Artikel neu zugeordnet werden soll. Dies ist das gleiche Prinzip, als wenn wir für Mitarbeiter ihre Vorgesetzten angeben. Statt der Spalte „TauschID“ hätten wir hier dann die IDs der Vorgesetzten, und statt „neuer Preis“ hätten wir die Namen.</p>
</div></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Cross Join</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>Fortgeschrittene Join-Typen haben einige Besonderheiten und das gilt auch für den Cross-Join. Bei diesem wird nicht nach passenden Schlüsseln gesucht, sondern es wird für jeden Eintrag aus der linken Tabelle jeder Eintrag aus der rechten aufgeführt. Die Zeilenzahl der Ergebnis-Tabelle entspricht also dem Produkt der Zeilenzahlen der Einzeltabellen. Den Cross-Join verwendet man in der Praxis eher selten. Bei <a href="/glossar/relationale-datenbank/">relationalen Datenbanken</a> würde man damit <a href="https://de.wikipedia.org/wiki/Redundanz_(Informationstheorie)" target="_blank" rel="noopener">redundante Ergebnisse</a> erzeugen.</p>
</div></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="672" height="427" src="https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S6.png" class="attachment-large size-large" alt="Cross Join" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S6.png 672w, https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S6-300x191.png 300w, https://arelium.de/wp-content/uploads/2023/11/Bilder_SQL_Joins_S6-630x400.png 630w" sizes="auto, (max-width: 672px) 100vw, 672px" /></div></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>Dennoch gibt es Beispiele, wo der Cross Join von Nutzen ist. Bei unserem Beispiel könnten wir uns vorstellen, dass jeder Artikel in verschiedenen Farben erhältlich ist, für die wir eine neue Tabelle DimArtikelfarbe_Faktor angelegt haben:</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="221" height="101" src="https://arelium.de/wp-content/uploads/2023/11/DimArtikelfarbe_Faktor.png" class="attachment-large size-large" alt="Tabelle DimArtikelfarbe_Faktor" loading="lazy" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>In der dritten Spalte geben wir einen Faktor an, über den wir den Preis anpassen wollen. Nun führen wir folgenden Cross Join aus:</p>
<pre>SELECT da.PK_Artikel, da.Bezeichnung, daf.Farbe, da.Preis * daf.Faktor [Preis]
FROM DimArtikel da
CROSS JOIN DimArtikelfarbe_Faktor daf
WHERE da. PK_Artikel NOT IN (3, 4, 7)</pre>
<p>Da man jede Zeile mit jeder verknüpft, brauchen wir, im Gegensatz zu den anderen Join-Typen, keine ON-Klausel. Über eine WHERE-Klausel entfernen wir noch jene Artikel, für die die Farbauswahl wenig Sinn macht. Wir erhalten:</p>
</div></div><div class="w-separator size_small"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="282" height="325" src="https://arelium.de/wp-content/uploads/2023/11/Result_CrossJoin_Faktor.png" class="attachment-large size-large" alt="Ergebnis des Cross Join" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2023/11/Result_CrossJoin_Faktor.png 282w, https://arelium.de/wp-content/uploads/2023/11/Result_CrossJoin_Faktor-260x300.png 260w" sizes="auto, (max-width: 282px) 100vw, 282px" /></div></div><div class="w-separator size_small"></div><div class="wpb_text_column"><div class="wpb_wrapper"><p>In der vierten Spalte sehen wir das Ergebnis der Multiplikation. Die Preise für die schwarzen Artikel sind die gleichen wie vorher, die grauen Artikel sind um 10% günstiger und dir roten um 20% teurer.</p>
<p>Die Erhöhung der Redundanz kann also durchaus gewollt sein, wenn wir eine detailliertere Ansicht wünschen. Auch der Cross-Join hat also seine Daseinsberechtigung, selbst in relationalen Datenbanken.</p>
</div></div><div class="w-separator size_small"></div><h2 class="w-text"><span class="w-text-h"><span class="w-text-value">Fazit</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p>In diesem Beitrag haben wir fortgeschrittene Join-Typen kennengelernt und damit einen kleinen Einblick erhalten, was T-SQL für eine <a href="/t-sql-am-beispiel-schiffeversenken/">Vielzahl an Möglichkeiten</a> bietet, um mit Daten zu arbeiten. Neben dem grundsätzlichen Aufbau haben wir am Beispiel des Self Join auch gesehen, dass sich Join-Bedingungen individuell verändern lassen. Darüber hinaus gibt es auch Fälle, in denen man mehrere Join-Bedingungen braucht, z.B. wenn die Tabellen keine eindeutige Schlüsselspalte haben. Während für einfache Abfragen meist die grundlegenden SQL-Joins ausreichen, sind die fortgeschrittenen SQL-Joins für anspruchsvollere Analysen sowie zur Datenbank-Entwicklung ein sehr mächtiges Werkzeug, sowohl on-premise als auch mit Azure SQL.</p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/fortgeschrittene-join-typen-in-sql/">Fortgeschrittene Join-Typen in SQL</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://arelium.de/fortgeschrittene-join-typen-in-sql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Data Architecture vs Data Governance</title>
		<link>https://arelium.de/data-architecture-vs-data-governance/</link>
		
		<dc:creator><![CDATA[Tobias Adler]]></dc:creator>
		<pubDate>Tue, 29 Aug 2023 09:33:49 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Cloud]]></category>
		<guid isPermaLink="false">https://arelium.de/?page_id=14968</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://arelium.de/data-architecture-vs-data-governance/">Data Architecture vs Data Governance</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></description>
										<content:encoded><![CDATA[<section class="l-section wpb_row height_auto"><div class="l-section-h i-cf"><div class="g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><h2 class="w-text us_custom_f84d3066"><span class="w-text-h"><span class="w-text-value">Die Unterschiede von Data Architecture und Data Governance</span></span></h2><div class="wpb_text_column"><div class="wpb_wrapper"><p><strong>Sowohl Data Architecture als auch Data Governance sind in Unternehmen wesentliche Bestandteile einer effektiven Datenverwaltung. </strong>Beide Konzepte zielen darauf ab, die Verwendung von Daten zu optimieren und sicherzustellen, dass man die gesamten Daten als strategische Ressource nutzen kann. Data Architecture bezieht sich sich auf die technische Seite der Datenverwaltung. Data Governance bezieht sich währenddessen auf die strategischen, organisatorischen und rechtlichen Aspekte der Datenverwaltung. Beide sind jedoch eng miteinander verbunden und arbeiten Hand in Hand. So kann man sicherstellen, dass man alle Daten in einem Unternehmen effizient, verantwortungsbewusst und erfolgreich nutzen kann.</p>
</div></div><div class="w-separator size_medium"></div><h3 class="w-text"><span class="w-text-h"><span class="w-text-value">Data Architecture vs Data Governance</span></span></h3><div class="g-cols wpb_row via_grid cols_2 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_middle type_default reversed stacking_default" style="--columns-gap:3rem;"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><h4><span style="color: #b71234;"><strong>Was ist Data Architecture?</strong></span></h4>
<p>Data Architecture konzentriert sich auf die Strukturierung von Daten, um sicherzustellen, dass sie effizient gespeichert, verarbeitet und abgerufen werden können. Sie legt die Rahmenbedingungen für den Umgang mit Daten fest und bietet Richtlinien und Strukturen. Diese Richtlinien stellen sicher, dass die Daten von hoher Qualität, sind um für verschiedene Geschäftsprozesse und Analysen verwendbar zu sein. Die Bestandteile der Datenarchitektur ist die Datenmodellierung und die Datenintegration. Bei der Datenmodellierung werden Datenmodelle erstellt, welche die Struktur, Beziehung und Eigenschaften von Daten beschreiben. Bei der Datenintegration geht es um die Gestaltung von Prozessen und Technologien, um Daten aus verschiedenen Quellen zu sammeln, zu transformieren und in die vorgegebene Struktur zu integrieren. Dieser <a href="https://www.ibm.com/de-de/topics/etl">ETL-Prozess</a> (Extract, Transform und Load) ist ein wesentlicher Bestandteil der Data Architecture.</p>
<p>Hier können Sie mehr dazu lesen: <a href="/data-architecture/">Data Architecture &#8211; arelium GmbH</a></p>
</div></div></div></div><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><h4><span style="color: #b71234;"><strong>Was ist Data Governance?</strong></span></h4>
<p>Während sich Datenarchitektur auf die Technische Seite der Datenverwaltung bezieht, konzentriert sich <a href="https://azure.microsoft.com/de-de/resources/cloud-computing-dictionary/what-is-a-data-governance/">Date Governance</a> auf die Organisation der Daten. Hierbei handelt es sich um eine Sammlung von Prozessen, Richtlinien und Verantwortlichkeiten, um sicherzustellen, dass Daten effektiv, verantwortungsbewusst und nachhaltig verwaltet sind. Ziel der Data Governance ist es, die Qualität, Verfügbarkeit, Sicherheit und Nutzbarkeit von Daten sicherzustellen, während gleichzeitig die Einhaltung von Gesetzen, Vorschriften und internen Standards gewährleistet wird. Ein Grundlegender Aspekt der Data Governance ist die Datenqualität. Dabei zielt Data Governance darauf ab, die Genauigkeit, Konsistenz, Vollständigkeit und Aktualität von Daten sicherzustellen. Dies gewährleistet, dass die Daten, auf die sich strategische und operative Entscheidungen und Analysen stützen, vertrauenswürdig und verlässlich sind.</p>
<p>Hier können Sie mehr dazu lesen: <a href="/data-governance/">Data Governance &#8211; arelium GmbH</a></p>
</div></div></div></div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3>Data Architecture und Data Governance Merkmale</h3>
<p>Obwohl Data Architecture und Data Governance sehr eng zusammenarbeiten, haben beide Bereiche ihre eigenen Aufgaben und Themengebiete die sie abdecken, um ein möglichst effektives Arbeiten mit den Daten zu gewährleisten. Im folgenden ist aufgelistet, welche Aufgaben unter Data Architecture und welche Aufgaben unter Data Governance fallen:</p>
</div></div><div class="w-separator size_medium"></div><div class="w-image align_center"><div class="w-image-h"><img decoding="async" width="1300" height="250" src="https://arelium.de/wp-content/uploads/2023/08/DA-vs-DG-1.png" class="attachment-us_1300_400 size-us_1300_400" alt="DA vs DG_Merkmale" loading="lazy" srcset="https://arelium.de/wp-content/uploads/2023/08/DA-vs-DG-1.png 1300w, https://arelium.de/wp-content/uploads/2023/08/DA-vs-DG-1-300x58.png 300w, https://arelium.de/wp-content/uploads/2023/08/DA-vs-DG-1-1024x197.png 1024w" sizes="auto, (max-width: 1300px) 100vw, 1300px" /></div></div><div class="w-separator size_medium"></div><div class="g-cols wpb_row via_grid cols_2 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default" style="--columns-gap:3rem;"><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><h4><span style="color: #b71234;"><strong>Data Architecture</strong></span></h4>
<p><strong>Datenmodellierung:</strong> Entwurf und Erstellung von Datenmodellen, die die Struktur, Beziehungen und Eigenschaften der Daten beschreiben. Dies umfasst die Festlegung von Entitäten, Attributen, Schlüsseln und Beziehungen zwischen den Daten.</p>
<p><strong>Datenbankdesign:</strong> Planung und Erstellung von Datenbanken, Indizes und anderen Elementen, um sicherzustellen, dass Daten effizient gespeichert und abgerufen werden können.</p>
<p><strong>Datenintegration:</strong> Entwicklung von Strategien und Prozessen zur Integration von Daten aus verschiedenen Quellen. Dies kann das Entwerfen von ELT-Prozessen umfassen, um Daten zu extrahieren, zu transformieren und in einheitlichen Formaten zu laden.</p>
<p><strong>Datenfluss:</strong> Definieren von Datenflüssen innerhalb einer Organisation, um sicherzustellen, dass Daten nahtlos zwischen verschiedenen Anwendungen, Systemen und Abteilungen fließen können.</p>
<p><strong>Skalierbarkeit und Performance:</strong> Berücksichtigung von Faktoren wie Datenwachstum und Zugriffsmuster, um sicherzustellen, dass die Dateninfrastruktur die erforderliche Leistung erbringen kann.</p>
</div></div></div></div><div class="wpb_column vc_column_container"><div class="vc_column-inner"><div class="wpb_text_column"><div class="wpb_wrapper"><h4><span style="color: #b71234;"><strong>Data Governance</strong></span></h4>
<p><strong>Datenqualität: </strong>Data Governance zielt darauf ab, die Genauigkeit, Konsistenz, Vollständigkeit und Aktualität von Daten sicherzustellen. Dies gewährleistet, dass die Daten, auf die sich Entscheidungen und Analysen stützen, vertrauenswürdig sind.</p>
<p><strong>Datensicherheit und Datenschutz: </strong>Data Governance legt Richtlinien und Maßnahmen fest, um sicherzustellen, dass Daten vor unbefugtem Zugriff und Verlust geschützt sind. Dies schließt den Schutz sensibler Informationen gemäß Datenschutzbestimmungen ein.</p>
<p><strong>Datenzugriff und Berechtigungen:</strong> Hierbei handelt es sich um Regelungen, die sicherstellen, wer auf welche Daten zugreifen kann und welche Berechtigungen für verschiedene Benutzer oder Gruppen gelten.</p>
<p><strong>Compliance und rechtliche Aspekte:</strong> Data Governance stellt sicher, dass die Nutzung von Daten im Einklang mit gesetzlichen Bestimmungen, regulatorischen Anforderungen und branchenspezifischen Vorschriften steht.</p>
<p><strong>Stakeholder-Management:</strong> Die Einbindung von Interessengruppen aus verschiedenen Abteilungen und Ebenen der Organisation, um deren Anforderungen und Bedürfnisse in Bezug auf Daten zu berücksichtigen.</p>
</div></div></div></div></div><div class="w-separator size_medium"></div><div class="wpb_text_column"><div class="wpb_wrapper"><h3>Zusammenfassung</h3>
<p>Zusammenfassend lässt sich festhalten, dass Data Architecture und Data Governance zwei essentielle Säulen der modernen Datenverwaltung darstellen. Beides sind unterschiedliche Konzepte, die sich auf eng miteinander verknüpfte Aspekte konzentrieren. Data Architecture fokussiert sich auf die technische Gestaltung, Strukturierung und Verwaltung von Daten. Data Governance legt den Schwerpunkt währenddessen auf die strategische Planung der Daten. Dadurch wird sichergestellt, dass die Daten vertrauenswürdig, sicher und den Vorschriften entsprechend genutzt werden.</p>
<p>Data Architecture bildet das Fundament, auf dem Data Governance aufbaut. Eine gut gestaltete Datenarchitektur ermöglicht eine effiziente Datenverarbeitung, Integration und Nutzung. Data Governance hingegen sorgt dafür, dass diese Daten qualitativ hochwertig sind, den Datenschutzbestimmungen entsprechen und den Anforderungen der Organisation gerecht werden. Beide Konzepte ergänzen sich und sind gleichermaßen wichtig, um sicherzustellen, dass Daten als strategische Ressource genutzt werden und einen nachhaltigen Mehrwert für Unternehmen schaffen.</p>
<p>In der heutigen datengetriebenen Welt sind sowohl eine solide Datenarchitektur als auch eine effektive Data Governance von entscheidender Bedeutung, um Wettbewerbsvorteile zu erzielen, fundierte Entscheidungen zu treffen und das Vertrauen der Kunden und Stakeholder zu gewinnen. Indem Organisationen sowohl in die Strukturierung ihrer Dateninfrastruktur als auch in die strategische Verwaltung und Kontrolle ihrer Daten investieren, können sie eine solide Grundlage für Innovation und Wachstum schaffen.</p>
</div></div></div></div></div></div></section>
<p>Der Beitrag <a href="https://arelium.de/data-architecture-vs-data-governance/">Data Architecture vs Data Governance</a> erschien zuerst auf <a href="https://arelium.de">arelium - Wir holen mehr aus deinen Daten</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
