Både Oracle och SQL Server är databaser med delad disk så att de begränsas av diskbandbredden för frågor som tabell skannar över stora datavolymer. Produkter som Teradata , Netezza eller DB/2 Parallel Edition är 'delade ingenting' arkitekturer där databasen lagrar horisontella partitioner på de enskilda noderna. Denna typ av arkitektur ger den bästa parallella frågeprestanda eftersom de lokala diskarna på varje nod inte är begränsade genom en central flaskhals på ett SAN.
Delade disksystem (som Oracle Real Application Clusters eller Clustered SQL Server installationer kräver fortfarande ett delat SAN , som har begränsad bandbredd för streaming. På en VLDB kan detta allvarligt begränsa tabellskanningsprestanda som är möjlig att uppnå. De flesta datalagerfrågor kör tabell- eller intervallsökningar över stora datablock. Om frågan kommer att träffa mer än några procent av raderna är en enkel tabellskanning ofta den optimala frågeplanen.
Flera lokala direktanslutna diskarrayer på noder ger mer diskbandbredd.
Med det sagt känner jag till en Oracle DW-butik (ett stort europeiskt telekomföretag) som har ett oraclebaserat datalager som laddar 600 GB per dag, så arkitekturen för delad disk verkar inte medföra oöverstigliga begränsningar.
Mellan MS-SQL och Oracle finns det vissa skillnader. IMHO Oracle har bättre VLDB-stöd än SQL-server av följande skäl:
-
Oracle har inbyggt stöd för bitmappsindex , som är en indexstruktur som är lämplig för höghastighetsfrågor i datalager. De gör i huvudsak en CPU för I/O-avvägning eftersom de är körlängdskodade och använder relativt lite utrymme. Å andra sidan hävdar Microsoft att Index Intersection är inte nämnvärt långsammare.
-
Oracle har bättre tabellpartitioneringsmöjligheter än SQL Server. IIRC Tabellpartitioneringen i SQL Server 2005 kan endast göras på en enda kolumn.
-
Oracle kan köras på något större hårdvara än SQL Server, även om man kan köra SQL-server på vissa ganska respektabelt a> stor system.
-
Oracle har mer moget stöd för materialiserade vyer och Omskrivning av sökfråga för att optimera relationsfrågor. SQL2005 har viss kapacitet för omskrivning av frågor men den är dåligt dokumenterad och jag har inte sett den användas i ett produktionssystem. Microsoft kommer dock att föreslå att du använder Analystjänster , som faktiskt stöder delade ingenting-konfigurationer.
Om du inte har verkligt bibliska datavolymer och väljer mellan Oracle och en delad ingenting-arkitektur som Teradata kommer du förmodligen att se liten praktisk skillnad mellan Oracle och SQL Server. Särskilt sedan introduktionen av SQL2005 ses partitioneringsfaciliteterna i SQL Server som tillräckligt bra och det finns mycket av exempel av multi-terabyte system som framgångsrikt har implementerats på den.