Articles

Microsoft SQL Server vs. Oracle: To samo, ale co innego?

Posted on
Share on FacebookTweet about this on TwitterShare on LinkedIn
Written by Josh Stansfieldon March 13, 2014
Share on FacebookTweet about this on TwitterShare on LinkedIn

Istnieje wiele różnych systemów zarządzania relacyjnymi bazami danych (RDBMS). Prawdopodobnie słyszałeś o Microsoft Access, Sybase i MySQL, ale dwa najbardziej popularne i szeroko stosowane to Oracle i MS SQL Server. Chociaż istnieje wiele podobieństw między tymi dwoma platformami, istnieje również wiele kluczowych różnic. W tym blogu przyjrzę się kilku z nich, w szczególności w zakresie ich języka poleceń, sposobu obsługi kontroli transakcji oraz organizacji obiektów bazodanowych.

Język

Prawdopodobnie najbardziej oczywistą różnicą pomiędzy tymi dwoma RDBMS jest język, którego używają. Chociaż oba systemy używają wersji Structured Query Language, czyli SQL, MS SQL Server używa Transact SQL, czyli T-SQL, który jest rozszerzeniem SQL pierwotnie opracowanym przez Sybase i używanym przez Microsoft. Oracle natomiast używa PL/SQL, czyli Procedural Language/SQL. Oba języki są różnymi „smakami” lub dialektami SQL i oba mają różną składnię i możliwości. Główną różnicą pomiędzy tymi dwoma językami jest sposób obsługi zmiennych, procedur składowanych i funkcji wbudowanych. PL/SQL w Oracle może również grupować procedury w pakiety, czego nie można zrobić w MS SQL Server. Moim skromnym zdaniem, PL/SQL jest bardziej złożony i potencjalnie bardziej potężny, podczas gdy T-SQL jest znacznie prostszy i łatwiejszy w użyciu.

Kontrola transakcji

Kolejną z największych różnic pomiędzy Oracle i MS SQL Server jest kontrola transakcji. Na potrzeby tego artykułu, transakcja może być zdefiniowana jako grupa operacji lub zadań, które powinny być traktowane jako pojedyncza jednostka. Przykładowo, zbiór zapytań SQL modyfikujących rekordy, które wszystkie muszą być aktualizowane w tym samym czasie, gdzie (przykładowo) brak aktualizacji pojedynczego rekordu z zestawu powinien skutkować tym, że żaden z rekordów nie zostanie zaktualizowany. Domyślnie MS SQL Server wykona i zatwierdzi każde polecenie/zadanie osobno, a cofnięcie zmian będzie trudne lub niemożliwe, jeśli po drodze napotkamy błędy. Aby poprawnie grupować polecenia, użyj polecenia „BEGIN TRANSACTION” do zadeklarowania początku transakcji, a na końcu użyj polecenia COMMIT. Polecenie COMMIT powoduje zapisanie zmienionych danych na dysk i zakończenie transakcji. W ramach transakcji, ROLLBACK odrzuca wszelkie zmiany dokonane w bloku transakcji. ROLLBACK, jeśli jest poprawnie używany z obsługą błędów, pozwala na pewien stopień ochrony przed uszkodzeniem danych. Po wydaniu COMMIT nie jest możliwe cofnięcie się dalej niż do polecenia COMMIT.

W ramach Oracle, z drugiej strony, każde nowe połączenie z bazą danych jest traktowane jako nowa transakcja. Podczas wykonywania zapytań i wydawania poleceń, zmiany dokonywane są tylko w pamięci i nic nie jest przekazywane, dopóki nie zostanie wydana jawna instrukcja COMMIT (z kilkoma wyjątkami dotyczącymi poleceń DDL, które zawierają polecenia „implicit” i są przekazywane natychmiast). Po COMMIT, następne wydane polecenie zasadniczo inicjuje nową transakcję, a proces zaczyna się od nowa. Zapewnia to większą elastyczność i pomaga również w kontroli błędów, ponieważ żadne zmiany nie są przenoszone na dysk, dopóki DBA nie wyda polecenia, aby to zrobić.

Organizacja obiektów bazy danych

Ostatnią różnicą, którą chcę omówić, jest sposób, w jaki RDBMS organizuje obiekty bazy danych. MS SQL Server organizuje wszystkie obiekty, takie jak tabele, widoki i procedury, poprzez nazwy baz danych. Użytkownicy są przypisani do loginu, który daje im dostęp do konkretnej bazy danych i jej obiektów. Ponadto, w SQL Server każda baza danych posiada prywatny, nie współdzielony plik dyskowy na serwerze. W Oracle wszystkie obiekty bazodanowe są pogrupowane w schematy, które są podzbiorem obiektów bazodanowych, a wszystkie obiekty bazodanowe są współdzielone pomiędzy wszystkimi schematami i użytkownikami. Nawet jeśli wszystko jest współdzielone, każdy użytkownik może być ograniczony do określonych schematów i tabel poprzez role i uprawnienia.

W skrócie, zarówno Oracle jak i SQL Server są potężnymi opcjami RDBMS. Chociaż istnieje wiele różnic w sposobie ich działania „pod maską”, oba mogą być używane w mniej więcej równoważny sposób. Żaden z nich nie jest obiektywnie lepszy od drugiego, ale niektóre sytuacje mogą być bardziej korzystne dla konkretnego wyboru. Tak czy inaczej, Segue może wesprzeć te systemy i pomóc w przygotowaniu rekomendacji, w jaki sposób poprawić, uaktualnić lub utrzymać kluczową infrastrukturę krytyczną, aby upewnić się, że mogą Państwo skupić się na prowadzeniu biznesu.

Potrzebujesz pomocy? Skontaktuj się z nami

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *