Η μεγάλη μάχη στις βάσεις δεδομένων – SQL Server vs Oracle Database

Η μεγάλη μάχη στις βάσεις δεδομένων – SQL Server vs Oracle Database
Η μεγάλη μάχη στις βάσεις δεδομένων – SQL Server vs Oracle Database

Τα δύο πιο γνωστά RDBMS (Relational Database Management Systems) με τα μεγαλύτερα μερίδια στην αγορά είναι ο Microsoft SQL Server και η Oracle Database.

Έχουν πολλά κοινά αλλά και πολλές διαφορές μεταξύ τους.

Πάμε να δούμε αναλυτικά:

Η μεγάλη μάχη στις βάσεις δεδομένων – SQL Server vs Oracle DatabaseΗ μεγάλη μάχη στις βάσεις δεδομένων – SQL Server vs Oracle Database
Filegroups: Είναι ένα σύνολο από datafiles τα οποία ορίζουν μια ομάδα στην οποία μπορούμε αποθηκεύουμε objects όπως πίνακες. To default filegroup ονομάζεται primary.Tablespaces: Αντίστοιχη δουλειά κάνουν τα tablespaces. Το default tablespace που αποθηκεύονται όλα τα objects ονομάζεται USERS.
Το μικρότερο μέγεθος αποθήκευσης είναι τα Page (8K) και είναι σταθερό.Έχουμε μεταβαλλόμενο db_block_size ανάλογα την χρήση που θέλουμε. Συνήθως ορίζουμε μικρότερο μέγεθος για transactional βάσεις και μεγαλύτερο για data-warehouses.
Fill Factor: Είναι το ποσοστό που επιτρέπεται να γεμίσει ένα Page σε ένα Index (default συμπεριφορά είναι στο 100%) και είναι σημαντικό για την αποφυγή page split. Ο χώρος αυτός δεσμεύεται για μελλοντικά inserts και updates.PCTFREE: είναι το ποσοστό που επιτρέπεται να γεμίσει ένα Block. Ο χώρος αυτός δεσμεύεται για μελλοντικά updates και δεν μπορεί δεσμευτεί από inserts.

High Water Mark: Είναι το όριο μεταξύ του ελεύθερου χώρου και του κατειλημμένου σε ένα σύνολο από data blocks / pages (segment). Όσο μεγαλώνει το μέγεθος του, ανεβαίνει και το HWM. Το HWM δεν μειώνεται με deletes αλλά μόνο αν γίνει ένας πίνακας truncate, redefinition, shrink ή deallocate.
Schema:  Είναι μια λογική ομάδα που επιτρέπει τον διαχωρισμό των αντικειμένων της βάσης δεδομένων όπως π.χ. τα tables. Το κάθε schema ανήκει σε έναν user της βάσης. Ως default schema έχουμε το dbo.User/Schema: Ο κάθε χρήστης που δημιουργεί ένα object βρίσκεται κάτω από το schema του και για να το δει κάποιος άλλος χρήστης θα πρέπει να έχει τα ανάλογα δικαιώματα. Ως default schema έχουμε το users.
Auto commit: Όποτε κάνουμε ένα transaction όπως π.χ. ένα update μιας εγγραφής γίνεται μόνο του commit (save). *εκτός και εάν βρίσκεται μέσα σε explicit transaction (begin tran).No auto commit: Κάθε φορά που κάνουμε ένα transaction θα πρέπει να κάνουμε commit ή rollback για να ολοκληρωθεί.
Το select δημιουργεί blocking με το default isolation level (read committed): Όταν ένας χρήστης κάνει select σε έναν πίνακα και ταυτόχρονα ένας άλλος χρήστης κάνει update στον ίδιο πίνακα, αυτές οι εγγραφές θα είναι σε αναμονή (blocked) μέχρι να τελειώσει ο πρώτος χρήστης. Εάν υπάρχει και τρίτος χρήστης, θα πρέπει να περιμένει τον δεύτερο και ούτω κάθεξής.Το select δεν δημιουργεί blocking (με εξαίρεση του select for update): Λόγο της αρχιτεκτονικής της (με το undo tablespace) ότι κομμάτι block από τα datafiles διαβάζεται ή ενημερώνεται κατά τη διάρκεια ενός select, η αρχική εικόνα των blocks παραμένει στο undo tablespace. Οπότε στη περίπτωση αλλαγών, τα δεδομένα διαβάζονται από το undo και έτσι δεν υπάρχουν blockings. *Όταν έχουμε το γνωστό Error ORA-01555 contains the message, “snapshot too old.” σημαίνει ότι θα πρέπει να δώσουμε περισσότερο χώρο στο undo tablespace.  
Temporal Tables: Είναι η τεχνολογία που ενεργοποιεί row versioning στον πίνακα ώστε να μπορούμε να καλέσουμε παρελθοντικά ερωτήματα . Για παράδειγμα:
SELECT *, [SysStartTime],[SysEndTime]   FROM [dbo].EMP  FOR SYSTEM_TIME AS OF ‘2020-05-04 09:30:00’  
Flashback query: Η αντίστοιχη τεχνολογία στην Oracle είναι το flashback query που λειτουργεί παρόμοια. Για παράδειγμα:
SELECT * FROM EMP AS OF TIMESTAMP    TO_TIMESTAMP(‘2020-05-04 09:30:00’, ‘YYYY-MM-DD HH:MI:SS’)  
Δεν έχει μια σύγχρονη Αctive/Αctive λύση αλλά πλέον σε ασύγχρονη μορφή έχει το Azure Data Sync. Ως Αctive/Passive έχει την τεχνολογία Always On Availability Groups και Failover Cluster Instance.Active/Active Clustering με το Oracle Real Application Cluster (Oracle RAC): Ένα από τα πιο δυνατά χαρτιά που σου επιτρέπει να έχεις πολλαπλά nodes και να είναι συνδεδεμένα στην ίδια συστοιχία δίσκων για ταυτόχρονη προσπέλαση read/write.
Log shipping with Norecovery: Μπορούμε να έxουμε  ως disaster recovery solution έναν server ο οποίος θα στέλνει τα logs σε έναν άλλον όπου η βάση θα παραμένει κλειστή έως ότου θελήσουμε να την ανοίξουμε.Passive Data Guard: Αντίστοιχη τεχνολογία.
Always On Availability Groups / Log shipping with standby / Transactional replication: Disaster recovery solutions με έναν server να στέλνει τη πληροφορία σε άλλους servers, με τη διαφορά ότι η βάση μπορεί να είναι ανοιχτή για ανάγνωση readonly στα remote nodes.Active Data Guard: Αντίστοιχη τεχνολογία με δυνατότητα readonly.
Full Backup: Είναι το backup ολόκληρης της βάσης.Level 0 backup: Είναι το backup ολόκληρης της βάσης.
Differential Backup: Είναι το backup των block που έχουν αλλάξει από την στιγμή που πάρθηκε το τελευταίο full backup.Level 1 backup: Είναι το backup των block που έχουν αλλάξει από την στιγμή που πάρθηκε το τελευταίο level 0 backup.
Transaction Log:  Καταγράφει όλες τις συναλλαγές που έχουν πραγματοποιηθεί στη βάση.Redo Log: Καταγράφει όλες τις συναλλαγές που έχουν πραγματοποιηθεί στην βάση.
Transaction Log Backup: Είναι το backup του transaction log.Archived Log / backup: Είναι το redo log που έχει γίνει archived από το service του archiver. Στα archived logs μπορούμε να καλέσουμε ένα archived log backup.
Simple Recovery Model:  Όταν η βάση είναι σε simple recovery model το transaction log μπορεί να επανεγγραφεί χωρίς να έχει παρθεί backup το ίδιο. Αυτό έχει σαν αποτέλεσμα να μη μπορεί να γίνει restore η βάση σε point in time.Noarchivelog Recovery Model: Είναι το αντίστοιχο όσον αφορά το redo log με την διαφορά όπου όταν η βάση είναι σε noarchivelog στην Oracle, δεν έχει την δυνατότητα να παρθεί backup της βάσης online. Θα πρέπει σε αυτή την περίπτωση η βάση να μην είναι προσπελάσιμη ώστε να παρθεί backup.
Full Recovery Model:  Όταν η βάση είναι σε full recovery model, ο μόνος τρόπος να μην συνεχίσει να γεμίζει/μεγαλώνει το transaction log είναι με transaction log backup ώστε το υπάρχων να μπορεί να επαναχρησιμοποιηθεί. Σε αυτό το recovery model υπάρχει η δυνατότητα σε restore point in timeArchivelog Recovery Model: Όταν η βάση είναι σε archivelog recovery model ο μόνος τρόπος να μην συνεχίσει να γεμίζει το redo log είναι με archivelog backup, ώστε το υπάρχων να μπορεί να επαναχρησιμοποιηθεί. Σε αυτό το recovery model υπάρχει η δυνατότητα σε restore point in time
TSQL: Είναι επέκταση της γλώσσας SQL από την Microsoft. Έχουν διαφορές στη σύνταξη όπως και στη συμπεριφορά π.χ. μια τιμή null με ένα κενό κείμενο ‘ ‘ είναι διαφορετικάPLSQL: Είναι επέκταση της γλώσσας SQL από την Oracle. Στην Oracle στο ίδιο παράδειγμα μια τιμή null με ένα κενό κείμενο ‘ ‘ είναι το ίδιο, μιας και γίνεται μετατροπή.
Snapshot Database: Έχουμε τη δυνατότητα να μπορούμε να αποθηκεύσουμε την εικόνα της βάσης δεδομένων σε μια συγκεκριμένη χρονική στιγμή, ώστε σε περίπτωση που πραγματοποιηθούν πολλές αλλαγές και χρειαστεί να γυρίσουμε πίσω άμεσα χωρίς να πρέπει να γίνει restore, αυτό να είναι εφικτό.Flashback Database: Αντίστοιχα στην Oracle, μπορούμε να πάρουμε ένα guarantee restore point ώστε σε περίπτωση που πραγματοποιηθούν πολλές αλλαγές και χρειαστεί να γυρίσουμε πίσω άμεσα χωρίς να πρέπει να γίνει restore, αυτό να είναι εφικτό.
Server Memory: Είναι η μνήμη που είναι ορισμένη για χρήση από το instance.SGA+PGA: Η μνήμη χωρίζεται σε System Global Area και Program Global Area. Η πρώτη είναι κοινή για όλα τα sessions ενώ στη δεύτερη το κάθε session έχει δική του.
bcp in / bcp out: Είναι εφαρμογή του SQL Server με δυνατότητα εξαγωγής και εισαγωγής δεδομένων από τους πίνακες με την χρήση γραμμών εντολών.impdb / expdb: Είναι εφαρμογές της Oracle με δυνατότητα εξαγωγής και εισαγωγής διαφόρων object όπως πίνακες, procedures, meta-data, indexes κλπ. Η χρήση του είναι δυνατή από γραμμές εντολών.
Το primary key γίνεται clustered index key εξορισμού: Όταν ένα πεδίο ορίζεται ως primary key, αυτομάτως δημιουργείται ο πίνακας με clustered index (δομή btree) στο πεδίο αυτό.Δεν υπάρχει default clustered index συμπεριφορά. Οι πίνακες με primary key μπορούν να είναι heap. Θα πρέπει κατά τη δημιουργία του, να έχει την παράμετρο organization index (για αντίστοιχη δομή btree).
Sqlcmd: Είναι η εφαρμογή του SQL Server, ώστε να μπορεί να γίνει η διαχείριση ερωτημάτων στην βάση μέσα από γραμμές εντολών.Sqlplus: Είναι η αντίστοιχη εφαρμογή της Oracle, ώστε να μπορεί να γίνει η διαχείριση ερωτημάτων στην βάση μέσα από γραμμές εντολών.
Instance: Ένα σύνολο resources με πολλές βάσεις δεδομένωνInstance: Ένα σύνολο resources με μία βάση δεδομένων το καθένα
Indexed views: Σε αντίθεση με τα απλά views – που δείχνουν σε πραγματικούς πίνακες/views – τα indexed views έχουν δική τους φυσική υπόσταση. Θα πρέπει μετά την δημιουργία τους, να φτιαχτεί ένα clustered index στο view ώστε να θεωρείται indexed.Materialized views: Λειτουργούν όπως και τα indexes views, με την διαφορά ότι η δημιουργία τους γίνεται εύκολα με μία εντολή.

Φυσικά δεν γίνεται να γίνει πλήρης σύγκριση σε ένα άρθρο. Έγινε μια προσπάθεια να καλυφτεί η γενική εικόνα των βασικών διαφορών των δυο βάσεων δεδομένων.

Το καθένα από αυτά προτείνεται για χρήση ανάλογα της περίπτωσης. Επίσης έχουν και αρκετά διαφορετική τιμολογιακή πολιτική.

Πηγές:

Μοιράσου το

3 σκέψεις σχετικά με το "Η μεγάλη μάχη στις βάσεις δεδομένων – SQL Server vs Oracle Database"

Αφήστε μία απάντηση