MySQL, verilerin etkili bir şekilde depolanması, yönetilmesi ve geri alınması konusunda önemli bir rol oynayan güçlü ve yaygın olarak kullanılan bir açık kaynak ilişkisel veritabanı yönetim sistemidir (RDBMS). Geniş özellik seti, güçlü performansı ve ölçeklenebilirliği ile MySQL, dünya çapındaki işletmeler ve geliştiriciler için popüler bir tercih haline gelmiştir. Bu makale, sizleri MySQL’in temel özelliklerini, iç yapısını ve taşınabilirliğini detaylı bir şekilde incelemeye davet ediyor.
MySQL Nedir?
MySQL, en popüler açık kaynak SQL veritabanı yönetim sistemidir ve Oracle Corporation tarafından geliştirilmekte, dağıtılmakta ve desteklenmektedir.
MySQL Bir Veritabanı Yönetim Sistemidir
Bir veritabanı, yapılandırılmış veri koleksiyonudur. Basit bir alışveriş listesinden resim galerisine veya kurumsal ağdaki büyük miktarda bilgiye kadar herhangi bir şey olabilir. Bir bilgisayar veritabanında depolanan verilere eklemek, erişmek ve işlemek için MySQL Server gibi bir veritabanı yönetim sistemine ihtiyaç duyarsınız.
Bilgisayarlar büyük miktarda veriyi işlemede çok iyidir, bu nedenle veritabanı yönetim sistemleri, bağımsız yardımcı programlar olarak veya diğer uygulamaların bir parçası olarak bilgisayar kullanımında merkezi bir rol oynar.
MySQL veritabanları ilişkisel yapıdadır
Bir ilişkisel veritabanı, tüm veriyi tek bir büyük depoya koymak yerine veriyi ayrı tablolarda depolar. Veritabanı yapıları, hız için optimize edilmiş fiziksel dosyalara organize edilir. Veritabanı, veritabanları, tablolar, görünümler, satırlar ve sütunlar gibi nesnelerle birlikte esnek bir programlama ortamı sunar.
Farklı veri alanları arasındaki ilişkileri yöneten birer bir, bir çok, benzersiz, gereklilik veya isteğe bağlı ve farklı tablolar arasındaki “işaretçiler” gibi kuralları belirleyebilirsiniz. Veritabanı bu kuralları zorlar, böylece iyi tasarlanmış bir veritabanıyla uygulamanız tutarsız, yinelenen, yetim, güncel olmayan veya eksik veriyle karşılaşmaz.
“MySQL” in SQL kısmı “Structured Query Language” anlamına gelir. SQL, veritabanlarına erişmek için kullanılan en yaygın standartlaştırılmış bir dildir. Programlama ortamınıza bağlı olarak, SQL’yi doğrudan girebilirsiniz (örneğin, raporlar oluşturmak için), başka bir dilde yazılan kodlara SQL ifadelerini yerleştirebilirsiniz veya SQL sözdizimini gizleyen dil özel API’lerini kullanabilirsiniz.
SQL, ANSI/ISO SQL Standardı tarafından tanımlanmıştır. SQL standardı 1986’dan beri gelişmektedir ve birkaç sürümü bulunmaktadır. Bu kılavuzda, “SQL-92” 1992’de yayınlanan standartı, “SQL:1999” 1999’da yayınlanan standartı ve “SQL:2003” ise mevcut standartın güncel sürümünü ifade etmektedir. “SQL standardı” ifadesini herhangi bir zamandaki SQL Standard’ın güncel sürümünü ifade etmek için kullanırız.
MySQL yazılımı Açık Kaynak kodludur
Açık Kaynak, yazılımı herkesin kullanması ve değiştirmesi için mümkün kılar. MySQL yazılımını herhangi birinden indirebilir ve ücretsiz olarak kullanabilirsiniz. İsterseniz kaynak kodunu inceleyebilir ve ihtiyaçlarınıza göre değiştirebilirsiniz.
MySQL yazılımı, farklı durumlarda yazılımın ne yapılıp yapılamayacağını belirleyen GPL (GNU Genel Kamu Lisansı) http://www.fsf.org/licenses/ kullanır. GPL ile rahatsızsanız veya MySQL kodunu ticari bir uygulamaya gömmeniz gerekiyorsa, ticari olarak lisanslanmış bir sürümünü satın alabilirsiniz.
MySQL Veritabanı Sunucusu çok hızlı, güvenilir, ölçeklenebilir ve kullanımı kolaydır
Eğer bunu aradığınız şeyse, denemelisiniz. MySQL Sunucusu, masaüstü veya dizüstü bilgisayarda diğer uygulamalarınız, web sunucularınız vb. yanında rahatlıkla çalışabilir ve neredeyse hiç dikkat gerektirmez. Eğer MySQL’e tüm bir makineyi adarsanız, tüm hafıza, CPU gücü ve G/Ç kapasitesinden faydalanmak için ayarları yapabilirsiniz. MySQL ayrıca birbirine bağlı makinelerin kümeleşmesine kadar ölçeklenebilir.
MySQL Sunucusu, başlangıçta mevcut çözümlerden daha hızlı büyük veritabanlarını işlemek üzere geliştirilmiş ve birkaç yıldır başarılı bir şekilde talep edilen üretim ortamlarında kullanılmaktadır. Sürekli geliştirilmekte olmasına rağmen, MySQL Sunucusu bugün zengin ve kullanışlı bir fonksiyon seti sunmaktadır. Bağlantısı, hızı ve güvenliği, MySQL Sunucusunu internet üzerindeki veritabanlarına erişmek için son derece uygun hale getirir.
MySQL Sunucusu, istemci/sunucu veya gömülü sistemlerde çalışır
MySQL Veritabanı Yazılımı, farklı arka uçları destekleyen çok iş parçacıklı bir SQL sunucusundan, bir dizi farklı istemci programından ve kütüphanelerden, yönetim araçlarından ve geniş bir uygulama programlama arayüzü (API) yelpazesinden oluşan bir istemci/sunucu sistemidir.
Birçok katkıda bulunulan MySQL yazılımı bulunmaktadır
MySQL Sunucusu, kullanıcılarımızla yakın işbirliği içinde geliştirilen pratik bir özellik setine sahiptir. Sizin favori uygulamanızın veya dilinizin MySQL Veritabanı Sunucusunu desteklemesi oldukça olasıdır.
“MySQL” kelimesini resmi olarak “My Ess Que Ell” şeklinde telaffuz edin (“my sequel” veya başka bir yerel şekilde telaffuz etmenizde de bir sakınca yoktur).
MySQL Nasıl Çalışır?
Aşağıdaki resim, istemci-sunucu yapısının temel yapısını açıklar. Bir veya daha fazla cihaz (istemciler), belirli bir ağ üzerinden sunucuya bağlanır. Her istemci, ekranlarında bulunan grafiksel kullanıcı arayüzü (GUI) üzerinden istekte bulunabilir ve sunucu, her iki tarafın da talimatı anladığı sürece istenen çıktıyı üretecektir. Teknik detaylara girmeden, MySQL ortamında gerçekleşen temel süreçler aşağıdaki gibidir:
MySQL, her bir tablonun ilişkisini tanımlayarak verileri depolamak ve manipüle etmek için bir veritabanı oluşturur.
İstemciler, belirli SQL ifadelerini MySQL’e yazarak isteklerde bulunabilir.
Sunucu uygulaması, istenen bilgilerle yanıt verir ve bunlar istemcilerin tarafında görüntülenir.
Bu kadar basit. İstemcilerin tarafından genellikle hangi MySQL GUI’sinin kullanılacağı vurgulanır. GUI ne kadar hafif ve kullanıcı dostu ise, veri yönetimi faaliyetleri o kadar hızlı ve kolay olacaktır.
En popüler MySQL GUI’leri arasında MySQL WorkBench, SequelPro, DBVisualizer ve Navicat DB Admin Tool bulunur. Bunlardan bazıları ücretsizken, bazıları ticari amaçlıdır, bazıları sadece macOS için çalışırken bazıları da major işletim sistemleriyle uyumludur. İstemciler ihtiyaçlarına göre GUI’yi seçmelidirler. Bir WordPress sitesi de dahil olmak üzere web veritabanı yönetimi için en açık seçenek phpMyAdmin‘dir.
MySQL’in Temel Özellikleri
- İç Yapı ve Taşınabilirlik
- C ve C++ ile yazılmıştır.
- Farklı derleyicilerle geniş bir test edilmiştir.
- Çok farklı platformlarda çalışır.
- Taşınabilirlik için CMake kullanılarak yapılandırılır.
- Purify (ticari bir bellek sızıntısı dedektörü) ve GPL bir araç olan Valgrind ile test edilir (http://developer.kde.org/~sewardj/).
- Bağımsız modüllerle çok katmanlı sunucu tasarımı kullanır.
- Mevcut olanaklar dahilinde tamamen çok iş parçacıklıdır, böylece mevcutsa birden fazla CPU kullanımını kolayca sağlar.
- İşlem tabanlı ve işlem dışı depolama motorları sağlar.
- Dizin sıkıştırmasıyla birlikte çok hızlı B-ağacı disk tabloları (MyISAM) kullanır.
- Diğer depolama motorlarını eklemek oldukça kolaydır. Bu, şirket içi bir veritabanı için SQL arayüzü sağlamak istiyorsanız faydalıdır.
- Çok hızlı bir iş parçacığı tabanlı bellek tahsis sistemi kullanır.
- Optimize edilmiş iç içe döngü birleştirmeleri kullanarak çok hızlı bir şekilde birleştirme işlemleri gerçekleştirir.
- Geçici tablolar olarak kullanılan bellek tabloları uygular.
Mümkün olduğunca hızlı olması için yüksek optimize edilmiş bir sınıf kütüphanesi kullanarak SQL işlevlerini uygular. Genellikle sorgu başlatıldıktan sonra hiçbir bellek tahsisi yapılmaz.
Sunucuyu bir istemci/sunucu ağ ortamında kullanmak üzere ayrı bir program olarak sağlar.
Veri Tipleri
Birçok veri tipi: 1, 2, 3, 4 ve 8 baytlık işaretli/işaretsiz tamsayılar, FLOAT, DOUBLE, CHAR, VARCHAR, BINARY, VARBINARY, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM ve OpenGIS mekansal tipleri.
Sabit uzunluklu ve değişken uzunluklu dize tipleri.
İfadeler ve İşlevler
- Sorgulamaların SELECT listesinde ve WHERE kısmında tam operatör ve işlev desteği.
- SQL GROUP BY ve ORDER BY ifadelerine tam destek. Grup işlevleri için destek (COUNT(), AVG(), STD(), SUM(), MAX(), MIN() ve GROUP_CONCAT()).
- SQL standardı ve ODBC sözdizimiyle LEFT OUTER JOIN ve RIGHT OUTER JOIN desteği.
- Standart SQL tarafından gerektirilen tablo ve sütunlar için takma ad desteği.
- DELETE, INSERT, REPLACE ve UPDATE işlemlerini gerçekleştirerek değiştirilen (etkilenen) satır sayısını veya eşleşen satır sayısını döndürmek için destek sağlar.
- Veritabanları, depolama motorları, tablolar ve dizinler hakkında bilgi almak için MySQL’e özgü SHOW ifadeleri desteği. SQL standardına uygun olarak uygulanan INFORMATION_SCHEMA veritabanı desteği.
- Bir sorgunun nasıl çözümlendiğini gösteren bir EXPLAIN ifadesi.
- İşlev adlarının tablo veya sütun adlarından bağımsız olması. Örneğin, ABS geçerli bir sütun adıdır. Tek kısıtlama, işlev çağrısı için işlev adı ile onu takip eden “()” arasında boşluk olmamasıdır.
- Aynı ifadede farklı veritabanlarındaki tablolara başvurabilirsiniz.
Güvenlik
Esnek ve güvenli bir ayrıcalık ve parola sistemi sağlar ve ana bilgisayara dayalı doğrulamayı mümkün kılar.
Sunucuya bağlandığınızda tüm parola trafiğini şifreleyerek parola güvenliği sağlar.
Ölçeklenebilirlik ve Sınırlar
Büyük veritabanlarına destek sağlar. 50 milyon kayıt içeren veritabanlarında MySQL Sunucusu kullanıyoruz. Ayrıca, 200.000 tabloya ve yaklaşık 5.000.000.000 satıra sahip olan kullanıcılar olduğunu biliyoruz.
Her tablo için 64 dizin desteği sağlar. Her dizin 1 ila 16 sütundan veya sütun parçalarından oluşabilir. InnoDB tabloları için maksimum dizin genişliği 767 bayt veya 3072 bayttır. MyISAM tabloları için maksimum dizin genişliği 1000 bayttır.
Bağlantı
Müşteriler, TCP/IP soketlerini kullanarak MySQL Sunucusuna bağlanabilir.
Windows sistemlerinde, müşteriler, sunucu named_pipe değişkeni etkinleştirildiğinde adlandırılmış boruları kullanarak bağlanabilir. Windows sunucuları ayrıca shared_memory değişkeni etkinleştirildiğinde paylaşımlı bellek bağlantılarını da destekler. İstemciler, –protocol=memory seçeneğini kullanarak paylaşımlı bellek aracılığıyla bağlanabilir.
Unix sistemlerinde, müşteriler Unix etki alanı soket dosyalarını kullanarak bağlanabilir.
MySQL istemci programları birçok dilde yazılabilir. C ile yazılmış bir istemci kitaplığı, C veya C++ ile yazılmış istemciler veya C bağlantıları sağlayan herhangi bir dil için mevcuttur.
C, C++, Eiffel, Java, Perl, PHP, Python, Ruby ve Tcl için API’ler mevcuttur, bu da MySQL istemcilerinin birçok dilde yazılabilmesini sağlar.
Connector/ODBC (MyODBC) arabirimi, ODBC (Açık Veritabanı Bağlantısı) bağlantılarını kullanan istemci programlarına MySQL desteği sağlar. Örneğin, MySQL sunucunuza MS Access ile bağlanabilirsiniz. İstemciler Windows veya Unix üzerinde çalıştırılabilir. Connector/ODBC kaynak kodu mevcuttur. Tüm ODBC 2.5 işlevleri desteklenir ve diğer birçok işlev desteklenir.
Connector/J arabirimi, JDBC bağlantılarını kullanan Java istemci programlarına MySQL desteği sağlar. İstemciler Windows veya Unix üzerinde çalıştırılabilir. Connector/J kaynak kodu mevcuttur.
MySQL Connector/NET, MySQL ile güvenli, yüksek performanslı veri bağlantısı gerektiren .NET uygulamalarının kolayca oluşturulabilmesini sağlar. Gerekli ADO.NET arabirimlerini uygular ve ADO.NET destekli araçlarla entegre olur. Geliştiriciler, tercih ettikleri .NET dillerini kullanarak uygulamalar oluşturabilirler. MySQL Connector/NET, tamamen yönetilen bir ADO.NET sürücüsü olup %100 saf C# ile yazılmıştır.
Yerelleştirme
Sunucu, birçok dilde hata mesajlarını istemcilere sağlayabilir.
latin1 (cp1252), alman, big5, ujis, birkaç Unicode karakter seti ve daha fazlası dahil olmak üzere birçok farklı karakter setine tam destek sağlar. Örneğin, “å”, “ä” ve “ö” gibi İskandinav karakterlerine izin verilir tablo ve sütun adlarında.
Tüm veri seçilen karakter setinde kaydedilir.
Sıralama ve karşılaştırmalar, varsayılan karakter setine ve karşılaştırmaya göre yapılır. MySQL sunucusu başlatıldığında bunu değiştirmek mümkündür.
MySQL Faydaları
- MySQL hızlı, güvenilir, ölçeklenebilir ve kullanımı kolaydır. Başlangıçta büyük veritabanlarını hızlı bir şekilde işlemek üzere optimize edilmiştir.
- Açık kaynak kodlu olması, kullanıcıların kaynak kodunu incelemesine ve ihtiyaçlarına göre değiştirmesine olanak tanır.
- Mevcut çözümlerden daha hızlı ve daha verimli bir şekilde çalışır.
- Farklı platformlar, işletim sistemleri ve linux web hosting ile uyumludur.
- Uzun bir geçmişi vardır ve güvenilirlik konusunda kanıtlanmış bir kayıda sahiptir.
- Popüler bir SQL veritabanı yönetim sistemidir ve birçok dil ve platform tarafından desteklenir.
- Düşük maliyetlidir ve işletmeler ve bireyler için ekonomik bir seçenektir.
- Ölçeklenebilirlik sağlar, yani büyüyen veri hacimleriyle başa çıkmak için kolayca genişletilebilir.
- Güçlü veri koruması ve güvenlik önlemleri sunar.
- Geniş bir topluluk ve kaynaklar mevcuttur, bu da sorunların çözümü ve bilgi paylaşımı için destek sağlar.
- MySQL Bir Veritabanı Yönetim Sistemidir
- MySQL veritabanları ilişkisel yapıdadır
- Birçok katkıda bulunulan MySQL yazılımı bulunmaktadır
- MySQL Sunucusu, istemci/sunucu veya gömülü sistemlerde çalışır
MySQL Kullanım Alanları
MySQL, birçok farklı kullanım senaryosunda yaygın olarak kullanılmaktadır. İşte MySQL’in bazı popüler kullanım alanları:
- Web Uygulamaları: MySQL, web uygulamalarının veritabanı gereksinimlerini karşılamak için yaygın bir seçimdir. Dinamik web siteleri, içerik yönetim sistemleri, e-ticaret platformları, bloglar ve forumlar gibi birçok web uygulaması MySQL kullanır.
- Veri Analitiği: MySQL, büyük miktarda veriyi depolama ve analiz etme yetenekleri nedeniyle veri analitiği projelerinde de kullanılır. Veritabanında saklanan verileri sorgulamak ve raporlamak için kullanılabilir.
- Mobil Uygulamalar: MySQL, mobil uygulamaların veri depolama ihtiyaçlarını karşılamak için de kullanılabilir. Mobil uygulamaların kullanıcı verilerini, ayarlarını veya diğer bilgilerini saklamak için MySQL kullanılabilir.
- Gömülü Sistemler: MySQL, düşük kaynaklı cihazlar ve gömülü sistemler için uygun hafif bir veritabanı çözümü olarak da kullanılabilir. İnternet of Things (IoT) cihazları, akıllı ev sistemleri ve diğer gömülü sistemlerde MySQL kullanılabilir.
- Veri Depolama ve Yedekleme: MySQL, veri depolama ve yedekleme amacıyla da kullanılabilir. Büyük miktarda veriyi güvenli bir şekilde saklamak ve gerektiğinde geri yüklemek için MySQL kullanılabilir.
Bu sadece bazı örneklerdir ve MySQL’in kullanım alanları oldukça geniştir. MySQL’in esnekliği ve kullanım kolaylığı, farklı projelerde yaygın olarak tercih edilmesini sağlamaktadır.
MySQL ile SQL aynı mı?
MySQL ve SQL farklı kavramları ifade eder. SQL (Structured Query Language), veritabanı yönetim sistemlerinde verileri yönetmek, sorgulamak ve işlemek için kullanılan bir dildir. SQL, veritabanlarına erişmek ve verileri çekmek, ekleme, güncelleme veya silme gibi işlemleri gerçekleştirmek için kullanılan standart bir dil olarak kabul edilir.
SQL, veritabanı işlemlerinin yönetilmesi ve düzenlenmesi için temel komutları içerir. Veritabanı yönetim sistemlerinde, MySQL de dahil olmak üzere birçok farklı türde veritabanı, SQL kullanılarak yönetilir.
MySQL ise açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir. SQL dili, MySQL’in veritabanı işlemlerini gerçekleştirmek için kullandığı bir araçtır. Yani, MySQL SQL dilini kullanarak veritabanı işlemlerini yapar.
Ancak, SQL genel bir terimken, MySQL özel bir veritabanı yönetim sistemidir. Yani, MySQL sadece SQL dilini kullanarak çalışan bir veritabanıdır ve SQL dilini kullanarak veritabanı işlemleri gerçekleştirir.
Sonuç
Sonuç olarak, MySQL, ilişkisel veritabanı yönetim sistemleri arasında önemli bir yere sahip olan güçlü bir araçtır. Veritabanlarını etkili bir şekilde yönetmek, depolamak ve işlemek için kullanılan SQL dilini temel alarak çalışır. Açık kaynaklı yapısı, geniş kullanıcı topluluğu ve esnekliği sayesinde, birçok farklı ölçekteki projede tercih edilen bir seçenektir.
MySQL’in temel özelliklerini anlamak, veritabanı yönetimi konusunda sağlam bir temel oluşturmanın ilk adımıdır. Bu makaledeki bilgiler, MySQL’in ne olduğunu anlamanıza ve gelecekteki projelerinizde bu güçlü veritabanı yönetim sistemini nasıl kullanabileceğinizi keşfetmenize yardımcı olmalıdır.
Sıkça Sorulan Sorula
En sık sorulan sorulardan bazılarının yanıtları.
MySQL Nedir?
MySQL, açık kaynaklı bir ilişkisel veritabanı yönetim sistemi (RDBMS) olup, verilerin depolanması, yönetilmesi ve erişilmesi için kullanılan bir yazılımdır. MySQL, hızlı, güvenilir ve ölçeklenebilir bir veritabanı çözümü olarak popülerdir ve geniş bir kullanıcı ve geliştirici kitlesine sahiptir.
MySQL Hangi Programlama Dilleriyle Entegre Çalışabilir?
MySQL, C, C++, Eiffel, Java, Perl, PHP, Python, Ruby ve Tcl gibi birçok programlama diline destek sağlar.
MySQL Hangi İşletim Sistemlerinde Kullanılabilir?
MySQL, farklı platformlarda çalışabilir ve Windows, Unix ve Linux gibi çeşitli işletim sistemlerinde kullanılabilir. Linux web hosting, MySQL’i destekleyen en popüler barındırma hizmetlerinden biridir.
MySQL’in Veri Türleri Nelerdir?
MySQL birçok veri türünü destekler, bu arada işaretli/işaretsiz tamsayılar, FLOAT, DOUBLE, CHAR, VARCHAR, BINARY, VARBINARY, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM ve OpenGIS mekansal tipleri bulunur.
MySQL’in Güvenlik Özellikleri Nelerdir?
MySQL, esnek ve güvenli bir yetkilendirme ve parola sistemi sunar ve sunucuya bağlandığınızda tüm parola trafiğini şifreleyerek parola güvenliği sağlar.
MySQL Hangi Bağlantı Protokollerini Destekler?
MySQL istemcileri TCP/IP soketleri, adlandırılmış borular (named pipes) (Windows sistemlerde), Unix alanı soket dosyaları (Unix sistemlerde) veya C ile uyumlu diller için C kütüphanesi gibi farklı protokollerle MySQL Sunucusuna bağlanabilir.