MySQL ile MS SQL Arasındaki Fark

Pek çok kimse MySQL ile MS SQL’i birbirine karıştırır ya da aralarındaki farkı anlamakta zorluk çeker. Belki siz de bu kişilerden birisinizdir. Eğer öyleyse aşağıda detaylı bir şekilde bu iki teknoloji arasındaki farkı açıklamaya çalışacağım.

SQL vs MySQL

SQL Structured Query Language kısaltmasıdır. Türkçe yapısal sorgulama dili gibi bir anlama gelir. Veritabanlarına erişmek ve maniple etmek için kullanılan standart bir dildir. MySQL ise SQL Server, Oracle, Informix ve Postgres gibi bir veritabanı yönetim sistemidir. MySQL RDMS (Relational Database Management System) olarak da adlandırılır yani ilişkisel veritabanı yönetimi demektir.

MySQL ile MS SQL Arasındaki Fark

Veri yönetimi aracı konusunda seçim yapacağınız zaman önünüzde iki popüler seçenek vardır: MySQL ve MS SQL. Her iki araç da verilerinizi organize ve düzenli tutabilmeniz için çok etkili iki teknolojidir. Kolay kullanılabilen kullanıcı arayüzleri sayesinde veriye hızlı erişim imkanı sunarlar. Her iki teknoloji de veri depolamada schema adı verilen tablo depolama konseptini kullanır.

SQL bir dildir. Yapısal sorgulama dilidir. Yani bir yapısı vardır.

Şimdi MySQL ile MS SQL arasındaki farkları konu konu irdeleyelim.

Üretici Farklılığı

MySQL development projesi kapsamında MySQL kodları open-source yani açık kaynak kodlu yapılmış ve GNU lisansı ile herkesin kullanımına açılmıştır. MySQL önceleri İsveç firması MySQL AB’ye aitti fakat daha sonra Oracle tarafından satın alındı.

MS SQL ya da diğer adıyla SQL Server ise Microsoft‘a aittir ve genelde Microsoft SQL Server adıyla da bilinir. MS SQL’in çok uzun bir geçmişi vardır ve sürekli olarak yeni teknoloji ve trendlere bağlı olarak güncellenir ve dolayısıyla piyasadaki en güvenilir veritabanı uygulamalarından biridir.

Güçlü Noktaları

MySQL daha çok veri seçmeye odaklanmıştır. MySQL veri seçme, görüntüleme, güncelleme ve tekrar kaydetme noktalarında güçlüdür. Buna karşılık olarak veri ekleme ve silme noktalarında ise daha zayıftır. MySQL veri depolama ve veri referansı noktalarında ise mükemmel bir seçimdir.

ANSI SQL standartları noktasından MySQL ile SQL Server arasındaki bazı spesifik teknik farklılıklara bakalım: stored procedure, trigger, view cursor gibi bazı özellikler 5.0 versiyondan itibaren MySQL database server’ın bir parçası haline geldi fakat development fonksiyonları ve kapasitesi bakımından çok geniş bir yelpazede seçenek sunmaz. MySQL’in stored kod objeleri (code-objects) ANSI standartlarına yakındır fakat yine de T-SQL, Microsoft ve Sysbase’in eklentileri kadar geniş ve derin değildir.

Güvenlik

Veri yönetiminde en büyük kaygılardan biri güvenliktir. Hem MySQL hem de MS SQL EC2 uyumludur ve özellikle e-devlet kapsamındaki uygulamalar gibi güvenlik gerektiren uygulamalar için geniş güvenlik destekleri vardır. Misrosoft’un Baseline Security Analyzer aracı sayesinde SQL server kurulumunun güncel ve eksiksiz olduğu kontrol edilebilir fakat MySQL’de böyle bir özellik yoktur.

Destek

Hem MS SQL hem de MySQL satıcılarından ücretsiz ve ücretli olmak üzere destek alırlar. MySQL’in satıcısı ve sahibi Oracle, MS SQL’in satıcısı ve sahibi ise Microsoft’tur. Her iki veritabanı için internet üzerinde de destek alınabilecek binlerce topluluk ve forum sitesi mevcuttur.

MySQL ile MS SQL Arasındaki Fark

MySQL MS SQL
Arayüz SQL GUI, SQL
Dil Desteği C, C#, C++, D, Java, Ruby, Objective C Java, Ruby, Python, VB, .Net ve PHP
Kaynak Kod Açık kaynak kodlu, ücretsiz. Kapalı kaynak kod. Tescilli marka. Express sürümü ücretsizdir.
İşletim Sistemi Windows, Linux, OS X, FreeBSD, Solaris Windows
Derived Engine Sysbase, Berkeley DB, Heap, InnoDB  Sysbase
Disk Alanı Çok az disk alanına ihtiyaç duyar. Çok fazla disk alanına ihtiyaç duyar.
Kullanımı Yeni başlayanlar için idealdir. Yeni başlayanlar için biraz kompleks gelebilir.
Yönetim Araçları GUI tabanlı yönetim araçları yoktur. GUI tabanlı pek çok yönetim aracı vardır.

 

MySQL ile MS SQL arasındaki fark özetle bu şekilde. Sizin de eklemek istedikleriniz varsa yorum bırakabilirsiniz.

HashMap ile Hashtable Arasındaki Fark

Anahtar fark: Bilgisayar bilimlerinde HashMap ile Hashtable isimlerle değerleri bağlayan bir veri yapısına referanstır. Java’da bu iki konsept arasında önemli bazı farklılıklar vardır: Hashtable senkronizedir, HashMap ise senkronize değildir. Hashtable null yani geçersiz ve boş değerler kabul etmezken, HashMap bir null anahtarını ve herhangi bir null değerini kabul eder.

HashMap ve Hashtable Java koleksiyonunda yer alan veri yapılarıdır. Nesneleri saklamak için anahtar-değer çiftleri kullanırlar. İkisinin de ortak bazı noktaları vardır: örneğin her ikisi de java.util.Map arayüzünü uygularlar ve hashleme prensibi üzerine çalışırlar. Fakat Java programlama dilinde bu iki konsepti incelediğimizde aralarında ciddi bazı farklılıkların olduğunu görüyoruz.

HashMap ile Hashtable Arasındaki Fark

Hashtable bir değeri saklamak ve çağırmak için bir anahtar kullanır. Bu anahtarun eşsiz(unique) olması gerekir. Anahtar ve değerleri saklayan tabloya hash table ya da Türkçe adıyla hash tablosu denir. Hash table anahtarları hashleyen bir algoritma kullanır. Bu hash fonksiyonu sayıları input verisine atar ve veri dizin indeksi şeklinde saklanır.

Hashtable’da olduğu gibi HashMap de aynı hashleme prensipleri üzerine çalışır. HashMap’i Map arayüzünün bir hash tablosuna implementasyonu olarak da düşünebiliriz. Fakat Hashtable’dan birkaç noktada ayrılır. HashMap senkronize değildir, Hashtable ise senkronizedir. Senkronize derken şunu kastediyoruz: aynı anda sadece bir thread tabloyu modifiye edebilir. Bu yüzden Hashtable üzerinde bir güncelleme işlemi yapacaksanız, tablonun öncelikle kilitlenmesi gereklidir. Bu esnada diğer thread’ler beklemek zorundadır. İşlem bittikten sonra kilit kalkar ve diğer thread’ler de tablo üzerinde işlem yapmaya başlayabilir. HashMap ile Hashtable arasındaki bir diğer büyük fark da; Hashtable null değerlere izin vermez. HashMap ise bir null anahtarını ve herhangi bir null değerini kabul eder.

HashMap Hashtable
Senkronizasyon Senkronize değildir. Senkronizedir.
Null değerler Null değer kabul eder. Null değer kabul etmez.
Java  versiyonu 1.2 Java Development Kit’in ilk sürümü
Performans Diğerine kıyasla daha iyi Diğerine kıyasla daha kötü
Uygulama Non-threaded uygulamalarda iyi. Multi-threaded uygulamalarda iyi.
Serialization  Not-Serialized  Serialized

varchar ile nvarchar Arasındaki Fark

Anahtar fark: hem varchar hem nvarchar veri tipidir. varchar ASCII veri saklar, nvarchar ise Unicode veri saklar.

Veri tipleri veri formlarını tanımlamakta çok önemli bir yer tutar. Verinin saklanmasında doğru veri tipini belirlemek önemlidir. Basitçe söylemek gerekirse varchar sütunda tutulan karakter sayısı kadar bellekte byte işgal eder. non-Unicode olmayan karakterler saklanacağı zaman varchar kullanılır. Karakter sayısı kadar bellekte yer ayırır. Örneğin varchar(30) eğer herhangi bir data yoksa sadece 0 yer işgal eder, fakat mesela 20 karakterlik bir veri girilirse o zaman 20 karakterlik bellek ayrılır.

varchar ile nvarchar Arasındaki Fark

nvarchar da varchar ile hemen hemen aynıdır. Fakat nvarchar Unicode karakterlerin saklanmasında kullanılır. Dolayısıyla farklı dildeki verileri saklamayı sağlar. Genelde nvarchar varchar’a tercih edilir çünkü nvarchar şifreleme dönüşümleri gerektirmez.

nvarchar herhangi bir Unicode verisini saklayabilir. varchar ise sadece 8-bit kod sayfası (code page) ile sınırlıdır. Bazı insanlar varchar’ı daha az yer tuttuğu için kullanırlar. Aslında bu doğru bir yaklaşım değildir. Kod sayfası, karakter seti uyumsuzlukları çok can sıkıcı şeylerdir ve Unicode bu codepage problemlerinin ilacıdır. Her tarafta ucuz disk ve bellekler ile günümüzde code page sorunlarıyla uğraşmaya çok gerek yoktur artık aslında.

Bütün modern işletim sistemleri ve geliştirme platformları içerde Unicode kullanır. varchar yerine nvarchar kullanarak veritabanına yazacağınız ya da veritabanından okuyacağınız zaman şifreleme dönüşümlerinden kurtulabilirsiniz. Dönüştürme işlemleri zaman alır ve hatalara açıktır.

Sadece ASCII kullanan bir uygulama ile arayüz oluşturuyorsanız veritabanında Unicode kullanmanız tavsiye edilir. İşletim sistemi ve veritabanı algoritmaları Unicode ile daha iyi çalışır. Unicode diğer sistemlerle etkileşime girerken dönüştürme problemleri yaşamaz.

varchar ile nvarchar Arasındaki Fark

varchar ile nvarchar arasındaki fark özetlenecek olursa;

varchar: Değişken uzunlukta, non-Unicode karakter verisi. Database karakter ailesi verinin tutulduğu hangi codepage’in kullanıcılacağına karar verir.

nvarchar: Değişken uzunlukta, Unicode karakter verisi. Karşılaştırma için database karakter ailesine bağlıdır. nvarchar ile örneğin kore, japon, çin alfabesindeki karakterleri de saklayabilirsiniz.

varchar kullandığınızda her bir karakter için 1 byte yer kaplar, nvarchar’da ise her bir karakter için 2 byte yer kaplar.