Kasım 21, 2008, 09:38:10 ÖS *
Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz
 
   Ana Sayfa   Yardım Ara Giriş Yap Kayıt  
Sayfa: [1]
  Yazdır  
Gönderen Konu: MySQL Nedir?  (Okunma Sayısı 892 defa)
Fesih
Yönetici
*****
Mesaj Sayısı: 414


Üyelik Bilgileri
« : Haziran 22, 2007, 08:38:48 ÖS »

Bir (ilişkisel) veritabanı yönetim sistemidir.

Tüm verileri tek bir ambara yığmak yerine farklı tablolarda ve veritabanlarında düzenli bir biçimde saklar.

SQL adı verilen, veritabanlarına erişmek için kullanılan en yaygın ve standart dil ile işlemler yapıyor.

Çifte lisanslı bir yazılımdır. Hem Genel Kamu Lisansı'na (GPL) sahipözgür bir yazılım, hem de GPL'in kısıtladığı alanlarda kullanmakisteyenler için ayrı bir lisansa sahiptir.

MySQL AB isimli (eski ismi TCX) bir İsveç firması tarafından geliştiriliyor.

MySQL'in son kararlı sürümü 4.1.7, yeni geliştirilen henüz alfa olan sürümü 5.0.2

MySQL AB NEDİR?
MySQL AB, MySQL kurucuları ve ana geliştiricileri tarafındanoluşturulan ve yürütülen bir ticari firma. 'AB', İsveç dilindeLtd.Şti., Inc., GmbH gibi kısaltmalara karşılık gelen kelime.

Firmanın ticari gelirinin önemli bir kısmı MySQL'i geliştirmeye harcanıyor.

Tüm MySQL geliştiricileri, MySQL firmasının birer ücretli çalışanı. Birçok ülkede çalışanı olan bir kuruluş.

MySQL yazılımı ilk baştan beri kendi kendini finanse ediyor, firmaMySQL üzerine verdiği ticari hizmetlerden para kazanıyor. Bir ticariGPL yazılım geliştirme modeli örneği.

MySQL'İN GELİŞİMİ
İlk başta mSQL ile tablolarına kendi hızlı yordamları (ISAM) ile bağlanmak için işe girişmişler.

mSQL'in yeterince hızlı ve esnek olmadığı sonucuna varınca, mSQLile aynı programlama arayüzüne (API) sahip yeni bir SQL arayüzüyazmışlar. mSQL API'sinin seçilmesinin nedeni piyasadaki kodlarınkolaylıkla kendi veritabanlarına aktarılabilmesi.

"My"SQL isminin nereden geldiği tam olarak bilinmiyor. MySQL'denönce de ekip kendi yazdıkları araçlara "my" takısını ekliyordu. Öteyandan MySQL'in yaratıcısı Michael "Monty" Widenius'un kızının adı daMy.

MySQL'in sembolü olan yunusun adı 'Sakila'. İsim, dünya çapındayapılan 'Yunusa isim verin' yarışmasının sonucunda, gelen birçokönerinin arasından yazılımın geliştiricileri tarafından seçildi.Sakila, Afrika'da Swaziland'de konuşulan yerel dilden alınma birkelime.

Neden MySQL?
Çok hızlı, güvenilir ve kullanımı kolay.

MySQL'e Python'dan Java'ya kadar birçok programlama dili ile erişilebilir.

Apache ve PHP ile beraber web-veritabanı uygulamalarında çok yaygınolarak kullanılır. Apache-PHP-MySQL üçlüsü için hazırlanmış çok genişbir yazılım yelpazesi bulunuyor.

Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahip.

MySQL'in Bazı Özellikleri
Unix türevlerinden Amiga'ya kadar birçok farklı platformda çalışabiliyor.

Birden fazla CPU ile kolaylıkla çalışabiliyor.

60000'in üzerinde tablo, 5 milyarın üzerinde satır ile çalıştığı söylenen MySQL sistemler bulunuyor.

Transaction ve/ya atomik işlem kullanan çeşitli tablo tiplerini destekliyor.

Tabloların kontrolü, optimizasyonu ve tamiri hızlı bir biçimde yapılabiliyor.

Windows için ODBC desteği var, ODBC 2.5 komutları tamamen destekleniyor.

Farklı karakter setlerini (iso8859-9, ...) ve onlara göre sıralamayapılmasını destekliyor, farklı dillerde hata mesajları verebiliyor.

Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahip.

MySQL'in Eksikleri
Oracle SQL'de kullanılan SELECT ... INTO table ... komutunudesteklemiyor. Ancak Ansi SQL'de hemen hemen aynı işi gören INSERT INTO... SELECT ... mevcut.

Stored procedure / trigger desteği bulunmuyor.

Kullanıcı kısıtlamak için kullanılan "view" özelliği yok. AncakMySQL'in gelişmiş bir erişim kısıtlama sistemi olduğu için ihtiyaçduyulmuyor.
MySQL ve Diğer Veritabanı Sunucuları
MySQL gelişimi sırasında, veritabanı sunucularının yıllarınbirikimi "gelenek"lerinin önemli bir kısmını yok saymıştır. "Olmazsaolmaz" denilen birçok özelliğin, aslında birçok durumda önemliolmadığını ortaya koymuştur.

MySQL çeşitli "pratik" çözümler için geliştirilirken, diğerveritabanı sunucuları akademik düzeyde belirli kurallar ve "veritabanıbilimi" ışığında geliştirilirler.

Veritabanı uygulamalarının %80'inin, SQL özelliklerinin sadece%20'lik bir kısmına gerek duyduğu ilkesi çerçevesinde geliştirilir.

MySQL size farklı tablo tipleri ve işleme türleri ile esneklik sağlar.

Eğer teknik olarak 'basit' bir projeniz varsa, MySQL sizin için biçilmiş kaftan olabilir.

Eğer teknik olarak 'karmaşık' bir projeniz varsa, gelenekselveritabanı sunucularında yer alan gelişmiş özelliklere ihtiyaçduyabilirsiniz.

Atomik İşlem / Transaction
MySQL her iki tür işlemi de desteklediği için kullanıcı,uygulamasında atomik işlemlerin hızına mı transaction özelliklerine miihtiyacı olduğuna karar verebilir. Seçimler tablo bazında yapılabilir.

Transaction'lı tablo ile atomik işlemle çalışan tablo arasındaki enbüyük fark performans konusunda oluşur. Transactionlı tablolarçalışırken daha fazla bellek, daha fazla disk alanı ve daha fazlaişlemci gücü harcar.

Eğer uygulamalarınız kritik durumlarda COMMIT yapmaya değil de,ROLLBACK yapmaya göre yazıldıysa transaction kullanmak daha elverişliolabilir.

Çoğunlukla kritik transactionla çalışan güncellemeler, atomikolarak çalışacak şekilde tekrar yazılabilir. Transactionların çözdüğütüm bütünlük problemleri LOCK TABLES, INSERT DELAYED ve benzeriyöntemlerle çözülebilir.
MySQL Tablo Tipleri
MySQL, iki farklı tür tablo yapısını destekler :
Transaction Tabloları :
- InnoDB
- Berkeley DB

Atomik İşlem Tabloları :
- MyISAM
- HEAP
- MERGE
- ISAM

Tablo tipleri, her tablo için farklı seçilebilir. Bir veritabanındaiki ya da daha fazla tablo tipini bir arada kullanabilirsiniz.
InnoDB
%100 ACID uyumlu, commit, rollback ve göçmeden kurtarma özelliklerine sahip bir tablo yapısını size sağlar.

Satır seviyesinde kilitleme kullanır, Oracle-stili kilitleme olmaksızın SELECT işlemleri yapılmasını destekler.

Yabancı anahtar kısıtlamalarına uyar.

Veri ve indeksleri ana bellekte cache'lemek için kendi tampon havuzu vardır.

Tabloları ve indeksleri tablo alanı olarak tanımladığı sanal ciltte tutar.

Bir tablo alanı birçok dosya ya da disk bölümünden oluşabilir.

InnoDB, MySQL'in standart transaction destekli tablo tipidir.

MyISAM : MyISAM, MySQL'in "klasik" tablo tipidir. Çok hızlı, az kaynak harcayan ve verimli çalışmak için tasarlanmıştır.

MERGE : Birden fazla eş MyISAM tablosunun tek bir tablo gibikullanılması için kullanılır. Özellikle çok büyük tabloların daha hızlıtarama yapılabilmesi için küçük eş tablolara bölunmesi durumunda işeyararlar.

HEAP : Hashlenmiş indeksler kullanırlar ve tüm veriler bellektetutulur. Bu nedenle çok hızlı çalışırlar ama MySQL kapandığında tümverileri kaybedersiniz. Geçici tablolar için çok yararlıdırlar.

Auto_increment
Auto_increment özelliği, yeni satırlar için biricik bir değer oluşturmak için kullanılabilir.

Yeni satır girilirken auto_increment kolonuna herhangi bir değergirilmediği takdirde, kolonda bulunan en yüksek değerin bir fazlasıotomatik olarak atanacaktır.

last_insert_id() SQL fonksiyonu ile, son girilen satıra otomatik olarak atanan değerin ne olduğu alınabilir.

Bir tabloda sadece bir kolon auto_increment özelliğine sahip olabilir.

Indeksler
İndeksler, belirli bir değeri olan satırları daha hızlı bulmak için kullanılırlar.

İndeks olmazsa, MySQL birinci kayıttan başlayarak, ilgili kayıtlarıbulana kadar tablonun sonuna kadar gitmek zorunda kalır. Indekslersayesinde rasgele tarama yapılabilir.

İstenirse, kolonun tamamı değil sadece belirli bir kısmı da indekslenebilir.

Text/Blob tipi alanların tamamı değil sadece bir kısmı indekslenebilir.

Text/Blob alanların tamamını indekslemek için fulltext isimli özel bir indeks tipi kullanılabilir.

Bir tabloda en fazla 32 kolonda indeks oluşturulabilir.

Bir indeks birden fazla kolonu kapsayacak şekilde de yapılabilir.Bir indeks en fazla 15 kolonu kapsayabilir. Çoklu indeks, içerdiğikolonları kapsayan AND işlemleri sırasında kullanılır.

MySQL'in indeksi kullanması tablonun %30'undan fazlasına erişmesinigerektirecekse, o zaman MySQL var olmasına karşın indeksi kullanmamayıtercih edecektir. Çünkü böyle bir sorguda, sıralı arama yapmak büyükolasılıkla rasgele aramadan daha hızlı olacaktır
Indekslerin Kullanıldığı Sorgular
WHERE ifadesine uyan satırları hızlıca bulmak

Belirli bir kolonun MAX() ve MIN() değerlerini bulmak

Sıralama ve gruplama işlemleri

Join işlemleri için diğer tablolardan satırları almak

Wildcard ile başlamayan LIKE ifadelerinde

Tüm Metinde Arama (Full-text Search)
Tabloda indeks olarak ayarlandığı kolon(lar)da doğal dil aramasıyapar. Tıpkı bir arama motoru gibi ilgili metinleri kelimelere ayırarakindeks oluşturur. Arama yapılan metinler ne kadar büyük olursa, o kadarverimli çalışır.

Tüm metinde arama özelliği sadece MyISAM tablo tipindekullanılabilir. Standart bir indeks gibi, tablo yaratılırken ya da dahasonra oluşturulabilir.

FULLTEXT indeksleri; CHAR, VARCHAR ya da TEXT/BLOB veri tipleri için kullanılabilir.

Tüm metinde arama MATCH() fonksiyonu ile gerçekleştirilir.

FULLTEXT indeks, alanın tamamına uygulanmak zorundadır. Sadece belirli bir kısmına yapılamaz.

Sorgu Cache'i (Query Cache)
MySQL, bir kullanıcı tarafından yapılan bir SELECT sorgusununmetnini ve sorgunun sonucunu cache'ler. Aynı sorgu tekrar yapıldığındaise veritabanında tarama yapmak yerine cache'deki veriyi kullanıcıyagönderir.

Cache, bayat veri göndermez. Bir tablo güncellendiğinde, o tabloda yapılmış olan tüm sorgular cache'ten silinir.

Verilerin çok fazla okunduğu ancak nadiren güncellendiği uygulamalarda büyük kazanç sağlar.

Replikasyon
Tek yönlü replikasyon, hem sistemin sağlamlığını hem de hızını arttırmak için kullanılabilir.

Sağlamlık için, iki sisteminiz olabilir ve ana sunucuda problem çıktığında yedek olana geçebilirsiniz.

Hız için ise, güncelleme içermeyen sorguları yedek sunucuya yönlendirebilirsiniz.

Veritaban(lar)ının birkaç farklı fiziksel mekanda bulunmasıgerekiyorsa, replikasyon ile verilerin sürekli güncel olmasısağlanabilir.

Replikasyon sırasında dikkat edilmesi gereken en önemli nokta, tümgüncelleme işlemlerinin ana sunucuda yapılmasıdır. Aksi takdirdedikkatli olunmadığında veri kaybına yol açılabilir
Logged
Sayfa: [1]
  Yazdır  
 

Ahtapot 2
Bu Sayfa 0.148 Saniyede 18 Sorgu ile Oluşturuldu

Bugün 02:33:49 ÖS