Veritabanına Giriş Devrim GÜNDÜZ TR.NET Teknik Destek Uzmanı devrim@oper.metu.edu.tr http://seminer.linux.org.tr http://belgeler.linux.org.tr Linux Kullanıcıları Derneği • Kuruluş • • • http://www.linux.org.tr • • INET-TR 1995 ilk kullanıcı grubu • Türkiye Linux Kullanıcıları Grubu 2000 – Dernekleşme • Kasım 2001 – İlk Genel Kurul Günlük 15.000 hit bilgi@lkd.org.tr - bilgi@linux.org.tr 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Linux Kullanıcıları Derneği • E-posta listeleri • • • Aylık 1 milyon dolayında e-posta dağıtılmaktadır. http://liste.linux.org.tr FTP sunucusu • • 12.06.2002 Çarşamba Veritabanlarına Giriş 180 GB alan ile Türkiye’nin en büyük ve hızlı Linux ve Özgür Yazılım FTP sunucusu Birçok özgür yazılımın resmi yansısı Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Linux Kullanıcıları Derneği • Amaçlarımız • • • • • • Özgür Yazılım Felsefesini Türkiye’de tanıtıp yaygınlaştırmak ve özgür yazılımların gelişmesine katkıda bulunmak Yerelleştirme Yeni yazılımların geliştirilmesi Türkçe belgelendirme Düzenli eğitim seminerleri Dernek Üyeliği 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Linux Kullanıcıları Derneği • Desteklediğimiz Etkinlikler • • • • Düzenlediğimiz Etkinlikler • • • • Akademik Bilişim Konferansı İnternet Haftası kapsamında etkinlikler Türkiye’de İnternet Konferansları Türkiye Linux ve Özgür Yazılım Şenliği Ankara ve İstanbul’da düzenli seminerler Gezici Seminerler Piknik 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Giriş • Bu seminerde, aşağıdaki konular anlatılacaktır: • • • • • • • • 12.06.2002 Çarşamba Veritabanlarına Giriş Veritabanı tanımı Veritabanı türleri SQL nedir? Veritabanlarının kullanım alanları İlişkisel (Relational) veritabanlarının açıklanması Veritabanı çeşitleri ve açıklamaları Hangi veritabanı nerede kullanılmalıdır? e-posta listeleri Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Nedir? www.m-w.com : “a usually large collection of data organized especially for rapid search and retrieval (as by a computer.” 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Nedir? • Belirli bir tarzda organize edilmiş bilgi “koleksiyon”udur. • En az bir tablodan oluşmak zorundadır. • Veritabanı programını oluşturan tablolar ise veri alanlarından oluşur (data field). 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Nedir? • • • Kitaplıklar, uygulamalar ve yardımcı programların birleşmesinden oluşur. Verilerin saklanması ve yönetilmesi ile ilgili konulardaki ayrıntılardan veritabanı yöneticilerini kurtarır. Kayıtların güncellenmesi ve kayıtlar üzerinde araştırma yapılması da mümkündür. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Tipleri • Hiyerarşik Veritabanı • İlişkisel Veritabanı (Relational Type) • Nesnesel Veritabanı 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Hiyerarşik Veritabanı VTP Tablo 1 12.06.2002 Çarşamba Veritabanlarına Giriş Tablo 2 Adı Malzeme Soyadı Tutar Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • • 1970: “A Relational Model of Data for Large Shared Data Banks” E. F. Codd • • 12.06.2002 Çarşamba Veritabanlarına Giriş Relation mantığı Tablolar -> Gerçek dünyadaki nesneler Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • • • Birden fazla tablodan oluşabilir. Birbirlerinin yerine kullanılabilir. Tablolar satır ve sütundan oluşur. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • Kullanıcının programı kullanırken ona sık sık soracağı soruların neler olacağı tespit edilir. • “Gerçekleştirilecek olan veritabanı programından beklenilen neler ve bu veritabanında hangi bilgilerin olması gerekli?” sorusunun yanıtı bulunur. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • • • Tablolardaki kayıtlar matematiksel açıdan tuple olarak tanımlanırlar. Bir tuple, tanımlanmış bir veri tipi olan bileşenlerden oluşan sıralı grup olarak tanımlanır. Tüm tuplelar aynı sayıda ve tipte bileşenlerden oluşur. • • 12.06.2002 Çarşamba Veritabanlarına Giriş {“10”, “Veritabanlarına Giriş”, “2002-06-12”} {“11”, “Progress Veritabanı Sunucusu”, “2002-06-26”} Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • • Örnekteki her bir tuple da 3 bileşen bulunmaktadır: • Ankara’daki 2002 yılındaki kaçıncı seminer olduğu (integer) • Seminerin konusu (char) • Seminerin tarihi (timestamp) İlişkisel veritabanlarında bu “kümeye” ya da tabloya eklenen tüm kayıtlar aynı yapıda olmalıdırlar. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • { “Veritabanlarına Giriş”, “2002-06-12”} • eksik bileşen • {“10”, “Veritabanlarına Giriş”, “2002-06-12” , “Devrim GÜNDÜZ”} • • fazla bileşen {“2002-06-12”, “Veritabanlarına Giriş”, “10”} • 12.06.2002 Çarşamba Veritabanlarına Giriş yanlış bileşen tipleri (yanlış sırada) Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • tuple lardan oluşan bir tabloda aynı veriler bulunmaz.(No duplicate record). • • • • İlişkisel veritabanlarındaki herhangi bir tabloda birbiriyle tamamen aynı iki kayıt (row or record) bulunamaz. Gereksiz sınırlama? Sorun : İki kez aynı ürünün siparişi Çözüm : Tabloya eklenecek bir fazla bileşen 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı • Bir kayıttaki her bir bileşen “atomik”, yani bir veri olmalıdır • • Başka bir kayıt ya da diğer bileşenlerin listesi olamaz. Tablodaki bileşenlerin veri tipleri de üsttekilerle ve dolayısıyla tablo tanımlarındakilerle aynı olmalıdır. • 12.06.2002 Çarşamba Veritabanlarına Giriş Veritabanı tarafından desteklenen veri tiplerinden biri olmalıdır. Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr İlişkisel Veritabanı - Anahtarlar • key: Birbiriyle eş kayıtları ayırmak için kullanılan bileşenlerdir. • primary key :Tablodaki bir kaydı diğer tüm kayıtlardan ayırmak için kullanılan bileşendir. • • 12.06.2002 Çarşamba Veritabanlarına Giriş “unique” yapar. Tüm ilişkisel veritabanlarında her bir tablo ya da relationda mutlaka primary key olmalıdır. Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Tablolar • Aynı konu ile ilgili olan bilgiler belirlenmelidir. • Index olarak kullanılacak alanlar, zaman icinde değiştirilebilecek şekilde belirlenir. • Olası olan en yüksek seviyede yapısal bir şekilde tabloların oluşturulması sağlanmalıdır. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veri alanları • Aynı konu ile ilgili alanların kendi tablolarında toplanması sağlanmalı • Veri tekrarı olmamalı • Gereksiz alanlar kullanılmamalı • Alanlar basite indirgenmelidir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanından beklenenler • Her düzeyde rapor alınabilme özelliği • Doğru ve hızlı sonuç verebilme özelliği • Sorulabilecek bütün sorulara yanıt verebilecek sorgulama dili • Bilgilerin ve sonuçların tutarlılığı 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr SQL Nedir? • • • • • SQL: Structured Query Language Veritabanı dilidir. Veri eklerken, silerken, güncellerken veya sorgularken kullanılır. ANSI ve ISO standardıdır. Select, Delete, Update, Insert 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Neden Veritabanı? • Gerçekten veritabanına gereksinmeniz var mı? • Veritabanları, verilerin saklanması ve yönetilmesi için kullanılmalıdır. • Küçük bilgiler için metin dosyaları yeterli olabilir. • Amacınızın iyi belirlenmesi gerekir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Neden Veritabanı? • Veri sadece bir konuyu içeren bir listenin içinde mi? • Sorun karmaşık mı? • İstatiksel bir analiz mi yapmak istiyorsunuz? 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Neden Veritabanı? • Bir yönetim mi yapacaksınız? • Metinsel veritabanları • Kullanım kolaylığı 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Neden Veritabanı? • Bilimsel formüllere gereksinmeniz olacak mı? • Veriyi paylaşma gereksinmeniz olacak mı? • Veriyi webde sunacak mısınız? 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Çeşitleri • Öncelikle ne yapılacağına karar verilmelidir: 1 2 12.06.2002 Çarşamba Veritabanlarına Giriş Bu veritabanı ile neler yapacaksınız? Küçük bir şirket çalışanlarının özel bilgileri mi tutulacak, yoksa büyük bir şirketin binlerce müşterilerinin bilgileri mi? Sitenizi günde kaç kişi ziyaret edecek? Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Çeşitleri 3 Aynı anda kaç işlem yapılacak? 4 Güvenlik ne ölçüde olacak? 5 Verilerinizin güvenliği ne ölçüde olacak? 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Çeşitleri • • Yanlış bir kanı : “Paralı ürünler iyidir, ücretsiz ürünler iyi değildir!” • Linux! Bir veritabanının ücretsiz olup olmamasından çok işinizi görüp görmeyeceği önemlidir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanı Çeşitleri 1 2 3 4 5 Microsoft Access MySQL IBM DB2 Interbase Informix 12.06.2002 Çarşamba Veritabanlarına Giriş 6 7 8 9 Progress Microsoft SQL Server PostgreSQL Oracle Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr MS Access • • • • • • Microsoft Office ürünüdür. Küçük ölçekli uygulamalar içindir. Tablo başına 2 GB a kadar veri depolayabilir. Aynı anda 255 bağlantıya izin verebilir. MS Windows dışındaki sistemlerde kullanılamaz. “Transaction logging” özelliğine sahiptir, ancak “trigger” ve “stored procedure” özelliklerine sahip değildir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr MySQL • • • • MySQL Inc. Windows, Linux, OS/2,Solaris, AIX vb. “trigger” ve “stored procedure” özelliklerine sahiptir, ancak “Transaction logging” özelliği bulunmamaktadır. Tablo başına 4 TB veri depolayabilir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr IBM DB2 • • • • IBM Access ve MySQL e göre daha performanslı, ancak küçük işletmelere göre daha yüksek maliyete sahiptir. *nix ve Windows üzerinde çalışabilir. Transaction logging”, “trigger” ve “stored procedure” özelliklerine sahiptir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Informix • • • • Illustra Ücretli ve güçlü bir veritabanıdır. Orta ölçekli işletmelerin yükünü kaldırabilecek kapasitededir. 1994’deki Postgres kodundan geliştirilmeye başlanmıştır. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr MS SQL Server • • Microsoft Dezavantajları: • • • • • Sadece Windows üzerinde çalışabilir. Yüksek maliyet Kullanım kolaylığı, güvenilirliği,işlem gücü Tablo başına 4 TB veri. “Transaction logging”, “trigger” ve “stored procedure” özelliklerine sahiptir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr PostgreSQL • • • • • • • PostgreSQL Global Development Group Linux, Unix, BSD, Windows, AIX vb. Ücretsiz, akademik bir veritabanı Çok güçlü işlem yapısı Veri güvenliği ön planda Tablo başına 64 TB veri tutabilme özelliği “Transaction”, “Inheritance” “trigger” ve “stored procedure” özelliklerine sahiptir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Oracle • • • • • Oracle, Inc. Dünyanın en güçlü ve güvenilir veritabanı olarak gösterilmektedir. Çok yüksek maliyet Windows, Unix, Linux, ... Oracle, sınırsız sayıda tabloları desteklemektedir. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Hangi veritabanını seçmeli? • • • • Küçük yoğunlukta trafik: Access Web uygulamaları için: MySQL Daha büyük ve orta ölçekli uygulamalar içinse, Progress, MS SQL ya da Linux üzerinde PostgreSQL . Oracle ise çok yüksek güvenilirlik ve işlem gücü gerektirdiğinde tercih edilen bir veritabanı sunucusudur. 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr E-posta listeleri • vts@linux.org.tr Veritabanları için tartışma listesi (üye olmak için, http://liste.linux.org.tr web arayüzünü kullanabilirsiniz.) • pgsql-tr-genel@postgresql.org (PostgreSQL Türkiye E-Posta Listesi . PostgreSQL üzerinde her türlü konu.) 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Web sayfaları • • • • • • • 12.06.2002 Çarşamba Veritabanlarına Giriş http://foundries.sourceforge.net/databases http://gborg.PostgreSQL.org http://techdocs.PostgreSQL.org http://techdocs.oper.metu.edu.tr http://www.mysql.com http://www.oracle.com http://otn.oracle.com Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Belgenin güncel hali • http://devrim.oper.metu.edu.tr/belgeler.php • http://seminer.linux.org.tr • http://www.linux.org.tr/belgeler.php 12.06.2002 Çarşamba Veritabanlarına Giriş Linux Kullanıcıları Derneği devrim.gunduz@linux.org.tr Veritabanına Giriş Devrim GÜNDÜZ TR.NET Teknik Destek Uzmanı devrim@oper.metu.edu.tr http://seminer.linux.org.tr http://belgeler.linux.org.tr