Sia Oracle che SQL Server sono database a disco condiviso, quindi sono vincolati dalla larghezza di banda del disco per le query che eseguono la scansione di tabelle su grandi volumi di dati. Prodotti come Teradata , Netezza o DB/2 Parallel Edition sono 'shared Nothing' architetture in cui il database memorizza le partizioni orizzontali sui singoli nodi. Questo tipo di architettura offre le migliori prestazioni di query parallele poiché i dischi locali su ciascun nodo non sono vincolati da un collo di bottiglia centrale su una SAN.
Sistemi di dischi condivisi (come Oracle Real Application Cluster o SQL Server in cluster le installazioni richiedono ancora un SAN condiviso , che ha limitato la larghezza di banda per lo streaming. Su un VLDB ciò può limitare seriamente le prestazioni di scansione delle tabelle che è possibile ottenere. La maggior parte delle query di data warehouse esegue scansioni di tabelle o intervalli su grandi blocchi di dati. Se la query raggiunge più di una piccola percentuale di righe, una singola scansione della tabella è spesso il piano di query ottimale.
Più array di dischi ad attacco diretto locali sui nodi offrono una maggiore larghezza di banda del disco.
Detto questo sono a conoscenza di un negozio Oracle DW (una delle principali telco europee) che dispone di un data warehouse basato su Oracle che carica 600 GB al giorno, quindi l'architettura del disco condiviso non sembra imporre limitazioni insormontabili.
Tra MS-SQL e Oracle ci sono alcune differenze. IMHO Oracle ha un supporto VLDB migliore rispetto al server SQL per i seguenti motivi:
-
Oracle ha il supporto nativo per indici bitmap , che sono una struttura di indice adatta per query di data warehouse ad alta velocità. Essenzialmente fanno una CPU per il compromesso di I/O poiché sono codificate run-length e utilizzano relativamente poco spazio. D'altra parte, Microsoft afferma che Index Intersection non è sensibilmente più lento.
-
Oracle ha strutture di partizionamento delle tabelle migliori rispetto a SQL Server. IIRC Il partizionamento della tabella in SQL Server 2005 può essere eseguito solo su una singola colonna.
-
Oracle può essere eseguito su un po' più grande hardware rispetto a SQL Server, sebbene sia possibile eseguire SQL Server su alcuni abbastanza rispettosamente grande sistemi.
-
Oracle ha un supporto più maturo per Viste materializzate e Riscrittura query per ottimizzare le query relazionali. SQL2005 ha alcune capacità di riscrittura delle query ma è scarsamente documentato e non l'ho visto utilizzato in un sistema di produzione. Tuttavia, Microsoft suggerirà di utilizzare Analysis Services , che in realtà non supporta le configurazioni del nulla condiviso.
A meno che tu non abbia volumi di dati veramente biblici e scegli tra Oracle e un'architettura nulla condivisa come Teradata, probabilmente vedrai poche differenze pratiche tra Oracle e SQL Server. In particolare dall'introduzione di SQL2005, le funzionalità di partizionamento in SQL Server sono considerate sufficientemente buone e sono disponibili molto di esempi di multi-terabyte sistemi che sono stati implementati con successo su di esso.