Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Veritabanı Yönetim Sistemleri II

Benzer bir sunumlar


... konulu sunumlar: "Veritabanı Yönetim Sistemleri II"— Sunum transkripti:

1 Veritabanı Yönetim Sistemleri II
Öğr.Gör.Kenan KILIÇASLAN Web: 1

2 MySQL veritabanı

3 Genel MySQL, çok-kanallı (multi-threaded), çok kullanılıcılı (multi-user), hızlı ve sağlam (robust) bir veritabanı yönetim sistemidir. UNIX ve OS/2 platformları için ücretsiz dağıtılmakla birlikte Windows platformları için 30 günlük deneme sürümü sonunda lisans alınmak üzere sunulmaktadır. Kaynak kodu açık olan MySQL'in pekçok platform için binaryleri de hazır. ODBC sürücüleri de bulunuyor.

4 Genel Geliştiricileri, 500'den fazlası 7Milyon kayıt içeren 10,000 tablodan oluşan kendi veritabanlarını (100 gigabyte civarında veri) MySQL'de tuttuklarını söylüyorlar. MySQL, tuttuğu tablolarla, çok kullanıcılı bir sistemlerde sözkonusu olan erişim hakları sorununu çok güzel çözüyor.

5 Genel Negatif bir yön olarak MySQL'de transactionların desteklenmemesi, transactionların güvenliğini sağlama işini programcının üzerine yıkıyor. Ayrıca referential integrity(veri tutarlılığı) sağlama işinin programcıya bırakılması tercih edilmiş. Ancak bu bir dezavantaj olarak görülmeyebilir. Çünkü pek çok veritabanı programcısı VTYS'lerdeki referential integrity'nin esnek olmayan, zorlayıcı bir özellik olduğunu düşünmektedir.

6 MySQL'in Gelişimi İlk başta mSQL ile tablolarına kendi hızlı yordamları (ISAM) ile bağlanmak için işe girişmişdir. mSQL'in yeterince hızlı ve esnek olmadığı sonucuna varınca, mSQL ile aynı programlama arayüzüne (API) sahip yeni bir SQL arayüzü yazmıştır. mSQL API'sinin seçilmesinin nedeni piyasadaki kodların kolaylıkla kendi veritabanlarına aktarılabilmesidir.

7 MySQL'in Gelişimi "My"SQL isminin nereden geldiği tam olarak bilinmiyor. MySQL'den önce de ekip kendi yazdıkları araçlara "my" takısını ekliyordu. Öte yandan MySQL'in yaratıcısı Michael " Monty" Widenius'un kızının adı da My dır. MySQL'in sembolü olan yunusun adı 'Sakila'. İsim, dünya çapında yapı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 bir kelimedir

8 Neden MySQL? Çok hızlı, güvenilir ve kullanımı kolaydır.
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ın olarak kullanılır. Apache-PHP-MySQL üçlüsü için hazırlanmış çok geniş bir yazılım yelpazesi bulunmaktadır. Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahiptir.

9 MySQL'in Bazı Özellikleri
Unix türevlerinden Amiga'ya kadar birçok farklı platformda çalışabilir. Birden fazla CPU ile kolaylıkla çalışabilir. 60000'in üzerinde tablo, 5 milyarın üzerinde satır ile çalıştığı söylenen MySQL sistemler bulunmaktadır. Transaction ve/ya atomik işlem kullanan çeşitli tablo tiplerini desteklemektedir. Tabloların kontrolü, optimizasyonu ve tamiri hızlı bir biçimde yapılabilir. Windows için ODBC desteği bulunmaktadır, ODBC 2.5 komutları tamamen desteklenmektedir. Farklı karakter setlerini (iso8859-9, ...) ve onlara göre sıralama yapılmasını destekler, farklı dillerde hata mesajları verebilir. Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahiptir.

10 MySQL ve Diğer Veritabanı Sunucuları
MySQL gelişimi sırasında, veritabanı sunucularının yılların birikimi "gelenek"lerinin önemli bir kısmını yok saymıştır. "Olmazsa olmaz" denilen birçok özelliğin, aslında birçok durumda önemli olmadığını ortaya koymuştur. MySQL çeşitli "pratik" çözümler için geliştirilirken, diğer veritabanı 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, geleneksel veritabanı sunucularında yer alan gelişmiş özelliklere ihtiyaç duyabilirsiniz.

11 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 mi ihtiyacı olduğuna karar verebilir. Seçimler tablo bazında yapılabilir. Transaction'lı tablo ile atomik işlemle çalışan tablo arasındaki en büyük fark performans konusunda oluşur. Transactionlı tablolar çalışırken daha fazla bellek, daha fazla disk alanı ve daha fazla işlemci gücü harcanır. Eğer uygulamalarınız kritik durumlarda COMMIT yapmaya değil de, ROLLBACK yapmaya göre yazıldıysa transaction kullanmak daha elverişli olabilir. Çoğunlukla kritik transactionla çalışan güncellemeler, atomik olarak çalışacak şekilde tekrar yazılabilir. Transactionların çözdüğü tüm bütünlük problemleri LOCK TABLES, INSERT DELAYED ve benzeri yöntemlerle çözülebilir.

12 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

13 Tarihçe İlk ürün : 23 May 1995 Windows version için on 8 ocak 1998 ( Windows 95 ve NT) Version 3.23: beta Haziran 2000, kararlı sürüm Ocak 2001 Version 4.0: beta Agustos 2002, kararlı sürüm Mart 2003 Version 4.1: beta Haziran 2004, kararlı sürüm Kasım 2004 Version 5.0: beta Mart 2005, kararlı sürüm Kasım 2005 (cursors, stored procedures, triggers, views, XA transactions) Sun Microsystems satın aldı MySQL AB 26 Şubat 2008

14 Son sürümde bulunanlar
ANSI 99 SQL dili Çok platform desteği Stored procedures Triggers Cursors Views True VARCHAR desteği INFORMATION_SCHEMA

15 Son sürümde bulunanlar
İnnoDB motoru kullanıldığında Transaction desteği SSL desteği İç içe sorgular Replikasyon. MyISAM motoru ile full-text arama Gömülü veritabanı fonksiyonları Çok dil desteği

16 Data Tipleri (Sayı)‏ BIT TINYINT [UNSIGNED] [ZEROFILL]
Çok küçük tamsayı. İşaretli aralık: -128 ile 127. İşaretsiz aralık: 0 ile 255. BOOL, BOOLEAN TINYINT’e benzer. Değeri sıfır ise false. Değeri sıfırdan farklı ise true’dur

17 Data Tipleri (Sayı)‏ SMALLINT [UNSIGNED] [ZEROFILL]
Küçük tamsayı. İşaretli aralık ile İşaretsiz aralık 0 to MEDIUMINT [UNSIGNED] [ZEROFILL] , INT [UNSIGNED] [ZEROFILL] Orta uzunlukta tamsayı. İşaretli aralık ile İşaretsiz aralık 0 ile Normal uzunlukta tamsayı. İşaretli aralık ile İşaretsiz aralık 0 to BIGINT[(M)] [UNSIGNED] [ZEROFILL] Uzun tamsayı. İşaretsiz aralık ile İşaretsiz aralık: 0 ile

18 Data Tipleri (Sayı)‏ FLOAT [UNSIGNED] [ZEROFILL]
küçük (single-precision) ondalıklı sayı. Kullanılabilir değer : E+38 ile E-38 arası, 0, E-38 ile E+38 arası. DOUBLE [UNSIGNED] [ZEROFILL] , REAL[(M,D)] [UNSIGNED] [ZEROFILL] Normal uzunlukta (double-precision) ondalıklı sayı. Kullanılabilir değer : E+308 ile E-308, 0, ve E-308 ile E+308.

19 Data Tipleri (Sayı)‏ DECIMAL (M,D)] [UNSIGNED] [ZEROFILL]
Parabirimi yerine kullanılır. M toplam dijit sayısı D, ondalık sayısı

20 Data Tipleri (Tarih)‏ DATETIME 'YYYY-MM-DD HH:MM:SS' veya
'YY-MM-DD HH:MM:SS' formatında tarih ve saati tutar. TIMESTAMP 'YYYYMMDDHHMMSS' veya 'YYMMDDHHMMSS' formatında tarih ve saati tutar.

21 Data Tipleri (String)‏
5 bytes 'abcd' 4 bytes 'abcdefgh' 3 bytes 'ab' 'ab  ' 1 byte '' '    ' Alan İhtiyacı VARCHAR(4)‏ CHAR(4)‏ Değer

22 Operatörler AND, && :Mantıksal AND
BETWEEN ... AND ... : Aralığın içinde mi? &:Bitwise AND |: Bitwise OR ^:Bitwise XOR

23 Operatörler CASECase operator DIV(v4.1.0)Integer division
/Division operator <=>NULL-safe equal to operator =Equal operator >=Greater than or equal operator >Greater than operator IS NOT NULLNOT NULL value test IS NOTTest a value against a boolean IS NULLNULL value test ISTest a value against a boolean

24 Operatörler LIKE: NOT BETWEEN ... AND ... !=, <>:Eşitdeğil
NOT LIKE: NOT REGEXP: Negation of REGEXP NOT, ! : %: Modulo operator ||, OR : Logical OR +: Ekleme operatorü REGEXP>> XORLogical XOR

25 CREATE DATABASE Yazımı
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification ...] create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name

26 CREATE TABLE Syntax CREATE TABLE [IF NOT EXISTS] tbl_name
(oluşturma özellikleri,...)‏ [table_option ...] [partition_options]

27 Oluşturma Özellikleri
colon_adı column_özelliği [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option ...] | {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option ...] | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option ...] |

28 Kolon tanımı data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [reference_definition]

29 Data Tipleri BIT[(length)] TINYINT[(length)] [UNSIGNED] [ZEROFILL]
SMALLINT[(length)] [UNSIGNED] [ZEROFILL] MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] INT[(length)] [UNSIGNED] [ZEROFILL] INTEGER[(length)] [UNSIGNED] [ZEROFILL] BIGINT[(length)] [UNSIGNED] [ZEROFILL] REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL] NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]

30 Data Tipleri DATE TIME TIMESTAMP DATETIME YEAR

31 Data Tipleri CHAR(length) [CHARACTER SET charset_name] [COLLATE collation_name] VARCHAR(length) [CHARACTER SET charset_name] [COLLATE collation_name] TINYTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] TEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] MEDIUMTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] LONGTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name]

32 Data Tipleri BINARY(length) VARBINARY(length) TINYBLOB BLOB MEDIUMBLOB
LONGBLOB

33 Data Tipleri ENUM(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name] SET(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name]

34 CREATE INDEX Syntax CREATE [UNIQUE|FULLTEXT] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_option ...]


"Veritabanı Yönetim Sistemleri II" indir ppt

Benzer bir sunumlar


Google Reklamları