И Oracle, и SQL Server са бази данни със споделен диск, така че са ограничени от честотната лента на диска за заявки, които таблицата сканира върху големи обеми данни. Продукти като Teradata , Netezza или DB/2 Parallel Edition са 'не споделя нищо' архитектури, при които базата данни съхранява хоризонтални дялове на отделните възли. Този тип архитектура осигурява най-добрата производителност на паралелни заявки, тъй като локалните дискове на всеки възел не са ограничени от централно тясно място в SAN.
Споделени дискови системи (като Oracle Реални клъстери на приложения или Клъстерен SQL сървър инсталациите все още изискват споделен SAN , който има ограничена честотна лента за поточно предаване. При VLDB това може сериозно да ограничи производителността на сканиране на таблици, която е възможно да се постигне. Повечето заявки за хранилище на данни изпълняват сканиране на таблици или диапазони в големи блокове от данни. Ако заявката ще достигне повече от няколко процента от редовете, сканирането на една таблица често е оптималният план за заявка.
Множество локални дискови масиви с директно свързване на възли осигуряват повече дискова честотна лента.
Като казах, че знам за магазин на Oracle DW (голяма европейска телекомуникационна компания), който има базирано на Oracle хранилище за данни, което зарежда 600 GB на ден, така че споделената дискова архитектура не изглежда да налага непреодолими ограничения.
Между MS-SQL и Oracle има някои разлики. IMHO Oracle има по-добра VLDB поддръжка от SQL сървъра поради следните причини:
-
Oracle има собствена поддръжка за индекси на растерни изображения , които са индексна структура, подходяща за високоскоростни заявки за хранилище на данни. Те по същество правят CPU за I/O компромис, тъй като са кодирани по дължина и използват сравнително малко пространство. От друга страна, Microsoft твърди, че Index Intersection не е значително по-бавен.
-
Oracle има по-добри възможности за разделяне на таблици от SQL Server. IIRC Разделянето на таблицата в SQL Server 2005 може да се извърши само на една колона.
-
Oracle може да се изпълнява на донякъде по-голям хардуер отколкото SQL Server, въпреки че човек може да стартира SQL сървър на някои съвсем с уважение голям системи.
-
Oracle има по-зряла поддръжка за Материализирани изгледи и Пренаписване на заявка за оптимизиране на релационни заявки. SQL2005 има някои възможности за пренаписване на заявки, но е лошо документиран и не съм го виждал да се използва в производствена система. Microsoft обаче ще ви предложи да използвате Analysis Services , което всъщност поддържа споделени нищо конфигурации.
Освен ако нямате наистина библейски обеми от данни и избирате между Oracle и споделена нищо архитектура като Teradata, вероятно ще видите малка практическа разлика между Oracle и SQL Server. Особено след въвеждането на SQL2005 съоръженията за разделяне в SQL Server се смятат за достатъчно добри и има много от примери от мултитерабайт системи, които са успешно внедрени върху него.