Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Uygun kayıt motoru tercihi nasıl yapılır?
#11
(12-07-2017, Saat: 22:37)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Paylaştığınız linklerin tamamını okumadım fakat gördüğüm kadarıyla trigger kullanımının genelde kaynak olduğu ve yakınıldığı karmaşadan bahsediyor. Yani siz bir tabloya bir işlem yaptığınızda sistemde siz farkında olmadan yapılan başka insertler, update'ler, deleteler hatta belki drop ya da daha başka şeyler. Doalyısıyla bu oracle'ın bir şey kaçırdığını göstermez, verdiğiniz linkte spesifik işaret ettiğiniz bir yer varsa orayı okuyup tekrar konuşalım ama yıllardır çok yoğun şekilde oracle kullanıyorum ve yazılım/tasarım hataları dışında bahsettiğiniz gibi bir sorunla karşılaşmadım.


Aslında konu MySQL kayıt motorları ile ilgiliydi. Ancak bonus olarak sorduğum bir soruya verilen çeşitli cevaplarla konu ve algı çok başka yerlere uzandı. Oracle konusunda herhangi bir problem olduğunu iddia etmiyor, suç yada iftira atmıyorum. Sadece kronikleşmiş bir triger arızasının MySQL'de başıma gelip gelmeyeceğini soruyorum.

Şüphesiz ki beceriksizliğimizden kaynaklanan çok büyük hatalar olmuştur. Ancak Oracle'ın dahi kendi sayfasından duyurdu "avoiding triggers" meselesini bizim yazılım/tasarım hatalarına bağlamak çok uygun olmayacaktır.

Trigger, stored procedure, function yada view yapılarını veritabanı sistemlerinde kullanmayan binlerce firma vardır muhakkak. Buna ihtiyaç duymayan sistemler olacağı kadar, Oracle kullanan büyük firmaların bu tarz ihtiyaçlarını backend kodlarında yada API/service katmanında çözerek işi Business katmanının ötesine taşımadığı da aşikar.

Bizim gibi bu tarz sistematik olayları kod blokları arasında, farklı geliştiricilerin insiyatif yada denetimine bırakmadan temel sistemleri kurgularken üzerine düştüğümüz veritabanlarının içerisinde çözme arzumuz tamamen geçmiş tecrübelerden kaynaklanıyor.

Oracle ile yaşadığımız tek hata ise trigger'ların veri kaçırması eylemidir. Bu sorun servis atarak çözülebilen ancak rutin uğraşılması sıkıntılı bir süreçtir. Tekrar konuya dönmemiz gerekirse;

Orjinal bonus soru şöyleydi; "Ek olarak bonus bir soru daha sormak istiyorum. Oracle'da yaşadığımız trigger sorunlarındaki veri kaçırma meselesini burada da yaşıyor muyuz?"

İyi akşamlar.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#12
Merhaba,

Bildiğim kadarıyla MyISAM tabloları transaction desteklemiyor. Hatta ForeignKey vs bile desteklemiyor olabilir. Ama çok hızlı işlem yapıyor Smile Tabii hiçbir şeyi kontrol etmiyorsan hızlı işlem yaparsın. Öte yandan innoDB transaction, foreinkey, trigger, stored procedure, stored function vs gibi modern bir ilişkisel veri tabanının özelliklerinin tamamını destekliyor. Hız olarak çok iyi. Genel olarak Oracle, PosgreSQL ve SQL Server'dan hızlı. Kısaca eğer MySQL kullanacaksanız, özel bir sebebi yoksa, kullanmanız gereken tablo yapısı InnoDB'dir.

Oracle'daki trigger tartışması da biraz karışık. Metinlerde bahsedilen sorunların büyük bir kısmı tasarımla ilgili. Örneğin trigger içinden e-posta gönderip, transaction'i rollback yaparsam mail gitmiş oluyor diyor. Ama bunun doğru tasarımı gönderilecek e-postalar tablosuna insert etmek ve daha sonra transaction bittikten sonra bu tabloyu işlemek değil midir? Ya da trigger içinden çok sayıda satır/sütun değiştirilmesi de programcının bile isteye verdiği bir kadar değil midir? Ben kişisel olarak trigger kullanmayı sevmiyorum, çünkü insan ister istemez "business logic" kısmını da trigger'a yazıyor ve bu da çok katmanlı mimariyi bozuyor. Bu yüzden kontrollerin hepsini veri katmanında değil, iş mantığını yürüten katmanda (genelde bir sunucu programı oluyor) yapıyorum. Trigger'ları da çok özel durumlarda kullanıyorum. Eğer çok katmanlı bir mimari kullanıyorsanız size de aynısını tavsiye ederim.

İyi çalışmalar
Cevapla
#13
(12-07-2017, Saat: 17:43)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhabalar,

MySQL kullanarak çok gelişmiş aplikasyonlar geliştirmedim. Web tabanlı bazı projelerde tercih ettim. Anladığım kadarıyla MyISAM ve InnoDB adında 2 tane yaygın kayıt motoru bulunuyor. Hangisini tercih etmem gerektiğini, avantajlarını ve dezavantajlarını, yedekleme, import-export, raporlama, transaction hızı, işlem hacmi, oturum adedi gibi parametreleri hesaba katarsak, en uygun tercih hangisi olur? İhtiyaç duyulan veri büyüklüğü etkili bir unsur mudur?

Ek olarak bonus bir soru daha sormak istiyorum. Oracle'da yaşadığımız trigger sorunlarındaki veri kaçırma meselesini burada da yaşıyor muyuz?


Teşekkürler,
İyi çalışmalar.

  Genel de sunucular varsayılan olarak MyISAM kayıt motorunu verir, bende onu kullanırım. InnoDB ile MyISAM arasında pekte bir fark olduğunu düşünmesem de MyISAM ile bir uygulama içinde forum tarzı kod paylaşım uygulaması yapmıştım ve bir sorun yaşamamıştım.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#14
Bildiğim kadarıyla MyISAM motorunda tablolardaki veri çoğaldıkça hız azalıyordu. Yani ufak tefek az miktarda veri olacaksa hızlı ama tersi durumda yavaş bir performans verecektir. InnoDB'nin böyle bir sorunu yok + Bahadır.Alkaç arkadaşımızın söylediklerine de katılıyorum...
P.Safa:Yaşlanarak değil, yaşayarak tecrübe kazanılır.Zaman insanları değil,armutları olgunlaştırır
C.Yücel:Toprak gibi olmalısın! Ezildikçe sertleşmelisin!Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı
S.Canan:Bildiğini zannettiğin an hiç bir şey öğrenemezsin
Bilgi uçar
WWW
Cevapla
#15
Merhabalar ,
MySQL ile Delphi ile tanıştığım gün tanıştım, bir çok sürümünde irili ufaklı projelerde yer aldım, aktif bir şekilde MySQL kullanmayı sürdürüyorum.
Şuan 5.6 sürümünü kullanıyorum , motor olarak MyISAM da Transaction desteği bulunmaz bence tercih edilmemesi için yeterli bir sebep, InnoDB öneririm, Trigger , stored procedure/function, event ve VIEW gibi ajanları yoğun olarak kullanıyoruz , uzmanlık düzeyinde başka bir RDMS kullanmadığım için karşılaştırmam gerçekçi olmaz, ancak aynı anda üzerinde 500 den fazla kullanıcının yoğun bir şekilde veri kaydedip raporlar aldığı 50milyon satırlık tabloların olduğu masaüstü uygulamalarımız halen rahatsız edici bir yavaşlığa ulaşmış değil bizce performans sorunu yaşanmıyor, ancak sorgularınızı yazarken dikkat etmeli index kulanımlarını sürekli analiz etmelisiniz, çok aşırı büyüyebilecek tablolarınızda PARTITION yapılarını kullanmalısınız, trigger larda bahsettiğiniz gibi veri kaçırma olayına hiç denk gelmedim bu arada MySQL trigger' ları etkilenen her satır için çalışır, MyISAM ın bir diğer çok önemli dezavantajı ise kolay bozulabilmesi ve onarıldığında (REPAIR TABLE komudu ile) kayıt kayıplarına sebep olmasıdır diyebiliriz. özellikle merak ettikleriniz varsa değinelim.
Cevapla
#16
Herkese Merhaba,
Mysql'in kurulu olduğu işletim sistemi fark ettirebilir diye düşünüyorum.
windows mu? linux mu?
benim tercihim linux.
bir dönem, çalıştığım özel bir okulda (2500+ öğrenci, 200 öğretmen, 20 memur) MySQL linux üzerine kurulu idi, pc 24 saat açıktı ve UPS yoktu Smile
elektrik gidince, gelmesini beklerdik, gelince de açardık, ne linux'ta bir bozulma ne de veritabanında bir sıkıntı olurdu
Cevapla
#17
Şuana kadar MySQL kullanımlarımın tamamında InnoDB kullandım. MyIsam'da transaction ve foreign key olmaması sebebiyle...


(13-07-2017, Saat: 09:35)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Mysql'in kurulu olduğu işletim sistemi fark ettirebilir diye düşünüyorum.
windows mu? linux mu?

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. soruyu sorarken ekstradan sorduğu küçük bir soru bile konuyu bu derece dağıtmışken bir de siz bunu burada sormayın lütfen. Mümkün oldukça konu başlıkları içerikle ilişkili olursa ileride arama yapanlar daha rahat çözüme ulaşabilirler.
İsterseniz bunu yeni bir konu başlığı altında sorun.
There's no place like 127.0.0.1
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Soru : MySQL Veritabanı' nda Explode İşlemi Nasıl Yapılır mad85 9 1.583 22-03-2018, Saat: 21:48
Son Yorum: uparlayan
  Not in yada Not Exists ile Kayıt silme mcuyan 4 1.148 25-12-2017, Saat: 22:47
Son Yorum: mcuyan
  MySQL configurasyon nasıl olmalı yhackup 15 6.362 01-10-2016, Saat: 20:57
Son Yorum: Kostebech
  SQL'i nasıl daha sade yazabilirim? Fesih ARSLAN 4 3.065 24-08-2016, Saat: 08:34
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi