Sowohl Oracle als auch SQL Server sind Datenbanken mit gemeinsam genutzten Festplatten, sodass sie bei Abfragen, die große Datenmengen in Tabellen scannen, durch die Festplattenbandbreite eingeschränkt sind. Produkte wie Teradata , Netezza oder DB/2 Parallel Edition sind 'shared nothing' Architekturen, bei denen die Datenbank horizontale Partitionen auf den einzelnen Knoten speichert. Diese Art von Architektur bietet die beste parallele Abfrageleistung, da die lokalen Festplatten auf jedem Knoten nicht durch einen zentralen Engpass in einem SAN eingeschränkt werden.
Shared-Disk-Systeme (wie Oracle Real Application Clusters ). oder Clustered SQL Server Installationen erfordern weiterhin ein gemeinsam genutztes SAN , die eine begrenzte Bandbreite für das Streaming hat. Auf einer VLDB kann dies die erreichbare Table-Scanning-Leistung ernsthaft einschränken. Die meisten Data-Warehouse-Abfragen führen Tabellen- oder Bereichsscans über große Datenblöcke aus. Wenn die Abfrage mehr als ein paar Prozent der Zeilen trifft, ist ein einzelner Tabellenscan oft der optimale Abfrageplan.
Mehrere lokale Direct-Attach-Festplattenarrays auf Knoten sorgen für mehr Festplattenbandbreite.
Allerdings ist mir ein Oracle DW-Shop (ein großes europäisches Telekommunikationsunternehmen) bekannt, der über ein Oracle-basiertes Data Warehouse verfügt, das 600 GB pro Tag lädt, sodass die Shared-Disk-Architektur keine unüberwindbaren Einschränkungen auferlegt.
Zwischen MS-SQL und Oracle gibt es einige Unterschiede. IMHO hat Oracle aus folgenden Gründen eine bessere VLDB-Unterstützung als SQL Server:
-
Oracle bietet native Unterstützung für Bitmap-Indizes , bei denen es sich um eine Indexstruktur handelt, die für Hochgeschwindigkeits-Data-Warehouse-Abfragen geeignet ist. Sie machen im Wesentlichen einen Kompromiss zwischen CPU und E/A, da sie lauflängencodiert sind und relativ wenig Platz beanspruchen. Andererseits behauptet Microsoft, dass Index Intersection ist nicht merklich langsamer.
-
Oracle verfügt über bessere Möglichkeiten zur Tabellenpartitionierung als SQL Server. IIRC Die Tabellenpartitionierung in SQL Server 2005 kann nur für eine einzelne Spalte durchgeführt werden.
-
Oracle kann auf etwas
größer Hardware als SQL Server, obwohl man SQL Server auf einigen ziemlich ausführen kann anständig groß Systeme. -
Oracle bietet eine ausgereiftere Unterstützung für materialisierte Ansichten und Umschreiben der Abfrage um relationale Abfragen zu optimieren. SQL2005 hat einige Funktionen zum Umschreiben von Abfragen, aber es ist schlecht dokumentiert und ich habe es nicht in einem Produktionssystem verwendet gesehen. Microsoft wird Ihnen jedoch vorschlagen, Analysedienste , das tatsächlich Shared-Nothing-Konfigurationen unterstützt.
Wenn Sie nicht wirklich biblische Datenmengen haben und zwischen Oracle und einer Shared-Nothing-Architektur wie Teradata wählen, werden Sie wahrscheinlich kaum einen praktischen Unterschied zwischen Oracle und SQL Server feststellen. Insbesondere seit der Einführung von SQL2005 werden die Partitionierungsmöglichkeiten in SQL Server als ausreichend gut angesehen und es gibt viele von Beispielen von Multi-Terabyte Systeme, die darauf erfolgreich implementiert wurden.