1.1 Ders oluşturma ilkesi
Sen ve ben veritabanlarıyla tanışmamıza aşağıdan başladık . Bu, insanlara öğretme konusundaki kişisel yaklaşımımın bir özelliğidir. Yeni konulardan bahsederken, her zaman önce belirli araçları pratikte nasıl kullanacağınızı anlatırım. Ve zaten bir kişinin bunları nasıl kullanacağını bildiğini bildiğimde, her şeyin nasıl çalıştığını anlatmaya başlıyorum.
Bu yaklaşımın birkaç nedeni vardır, ancak bunlardan en önemlisi, öğrenme sürecindeki en değerli ve en eksik kaynağın öğrenci motivasyonu olmasıdır .
Bu yaklaşım, okullarda ve üniversitelerde kullanılan alışık olduğumuz yaklaşımdan biraz farklıdır. Ancak her şey açık: okulda veya üniversitede okurken doğru önceliklere sahipsiniz: şu anda hayattaki en önemli şey ders çalışmaktır.
Yetişkinlikte kendi kendine eğitimle uğraşıyorsanız, genellikle çalışmalarınızı iş, ev işleri, çocuklara veya yaşlı ebeveynlere bakmakla birleştirmek zorunda kalırsınız. Ve burada genellikle eğitim birinci öncelik olmayacaktır.
Her şey önceliklerle ilgili. Başlangıç dünyasında böyle bir kavram bile var - Hızlı Başarısız Olun, olabildiğince çabuk başarısız olun . Kulağa garip geliyor ama aslında çok mantıklı: Bir girişimin görevi, hipotezinin doğru olup olmadığını hızlıca kontrol etmektir. Ve eğer bu doğru değilse, o zaman hayatınızın yıllarını buna harcamanıza gerek yok, belirli bir hizmet veya ürüne talep olmadığını olabildiğince erken anlamak daha iyidir.
Java ve SQL öğretirken aynı yaklaşımı kullanıyorum: Size programlamadan acele edip etmediğinizi olabildiğince erken anlama fırsatı veriyorum . Programlamayı seviyorsanız ve döngüler ve dizilerle nasıl çalışılacağını kendiniz çözebildiyseniz, o zaman mentorların ve iyi tasarlanmış bir programın yardımıyla, çalışmalarınızı tamamlama ve bir iş bulma şansınız var.
Ancak başka bir gerçek daha az önemli değil: Birkaç gün sonra programlamanın size göre olmadığını anlayabilirsiniz. Bununla ilgilenmiyor olabilirsiniz ve sorun değil . Yani, hayatınızın aylarını bunun için harcamanıza gerek yok.
Mezunların sadece %40'ı üniversitede aldıkları uzmanlık alanında çalışmaktadır. Bir düşünün, insanlar 5-6 yıl okudu ve %60'ı uzmanlık alanında çalışmamaya karar verdi. Evet, kazanılan bilgilerin bir kısmı hala kullanılıyor, ancak yaklaşık yarısı kullanılmıyor.
Fail Fast konseptinin değeri budur - belirli bir mesleğin, belirli bir kişinin veya belirli bir hobinin size uygun olmadığını olabildiğince erken anlamak. Ve zamanınızı ve enerjinizi bunlarla boşa harcamayın. Uzun vadede, bu çok iyi bir stratejidir.
1.2 SQL ve hepsi, hepsi, hepsi
Felsefi girişle işimiz bitti, hadi SQL öğrenmeye geri dönelim.
SQL dili ve DBMS biraz farklı şeylerdir. SQL dilinin kendisi, SQL sorgularında veritabanına nelerin yazılabileceğini açıklayan bir tür standarttır. DBMS zaten bu standardın uygulamalarıdır. Bazı DBMS, standardın bazı işlevlerini uygular, ikincisi - diğerleri vb.
DBMS ne kadar pahalıysa, uyguladığı standardın o kadar çok özelliği vardır. Ayrıca, birçok DBMS genellikle kendi benzersiz özelliklerini SQL standartlarının dışında uygular. Bazen bu, taşınabilirlik sorunlarına yol açar: Bir DBMS için yazılan SQL sorguları, bir başkası için iyi çalışmayabilir.
Java'da da benzer bir durum var. Bir Java programı Windows altında yazılmışsa, Linux'ta normal şekilde çalışmayacaktır. Bu sorunu çözmek için Java, farklı işletim sistemleri için farklı uygulamaları olan özel sınıflar sunar. Örnek: WindowsPath, LinuxPath, vb. uygulamalarına sahip olan Path sınıfı.
Sorunun ikinci kısmı versiyonlama yardımı ile çözülmüştür. Farklı dillerden veya DBMS'den gelen tüm başarılı yenilikler, yeni JDK veya SQL standardına eklenir. JDK'nın farklı sürümleri olduğunu zaten biliyorsunuz ve sürüm ne kadar yeniyse o kadar çok özelliği var. SQL'de de aynı.
SQL dilinde, standardının yıllara göre adlandırılan birkaç versiyonu vardır:
- SQL:1999
- SQL:2003
- SQL:2006
- SQL:2011
- SQL:2016
- SQL:2019
İyi haber : Bu standartları incelemeyeceğiz. İlk olarak, tüm bunları incelemek ve ustalaşmak yıllar alacak. İkincisi, bu standartlar Android'in sürümleri gibidir: piyasaya sürüldükten yalnızca 5-10 yıl sonra, standart büyük ölçüde yaygınlaşır.
Büyük miktarda veri içeren veritabanlarında, insanlar güvenilirlik ve kararlılığa ihtiyaç duyar. “Çalışıyor, dokunma” veritabanlarıyla çalışan herkesin mottosudur. Ve veritabanlarının yeni bir sürümüne geçiş, her 5 yılda bir, böyle bir çözümün tüm avantajları zaten açıkken yapılır.
1.3 Parantezlerin ötesinde
Yukarıda da söylediğim gibi, veritabanı uzmanı olmak yıllar alır. Bir profesyonel, bizim öğrenemeyeceğimiz birçok şey bilir. Ama veritabanlarında başka neler olduğundan biraz bahsedeceğim.
Hemen hemen tüm modern veritabanları şunları destekler:
1 Usul Dili (PL)
RDBMS, SQL Server üzerinde çalışan ve sorgular sırasında verilerle birçok şey yapabilen prosedürler ve işlevler yazma becerisini destekler. Örneğin, Oracle sunucusuna PL SQL sorguları yazdığımda, bu sorguya yanıt olarak veri içeren bir HTML sayfası oluşturdu. Evet yapabilirsin.
2 Olay (Tetikleyici)
Tüm modern DBMS, SQL dilinde tetikleyiciler olarak adlandırılan olay mekanizmasını destekler. Bazı eylemlere yanıt olarak bir tetikleyici oluşur. Örneğin, veritabanına yazmaya yönelik tüm girişimleri durdurabilir ve değişikliklerinin tam zamanını yeni satırlara ekleyebilirsiniz.
3 Günlük
Modern veritabanları süper hızlı olmaya çalışır, bu nedenle genellikle tüm değişiklikler (yeni satırlar, silinen satırlar, değiştirilen satırlar) önce günlük adı verilen özel bir dosyaya yazılır. Ve ancak bir süre sonra, SQL sunucusu bu kayıtları ana veritabanıyla birleştirecektir.
Bazı açılardan bu, Java'daki Çöp Toplayıcı'nın davranışına benzer: aynı zamanda nesneleri ilk başta silinmiş olarak işaretler ve boşta kalma sürelerinde bellek temizleme ve optimizasyon gerçekleştirir.
4 Eklenti
DBMS'ye ve birçok programa kendi eklentilerinizi yazabilirsiniz. Bu tür eklentiler, benzersiz veri türleri, bunlarla çalışmak için işlevler eklemenize veya DBMS'nin standart davranışını değiştirmenize olanak tanır. Bu, özellikle açık kaynaklı bir veritabanıyla çalışırken ve bazı hatalar olduğunda kullanışlıdır.
5 Dağıtılmış çalışma (kümeler)
Modern bir SQL sunucusu için tipik bir senaryo, birkaç sunucudan oluşan bir kümedir. En basit seçenek, verilerin bir sunucuya yazılması ve bir grup sunucudan okunmasıdır. Bu durumda, SQL sunucuları arasında veritabanı senkronizasyonu için çeşitli senaryolar yapılandırabilirsiniz.
6 parçalama
Çok fazla veri olduğunda, farklı veritabanlarına bölünmeye başlarlar. Bir tablonun farklı veritabanlarındaki parçalarda saklanabileceği gerçeğine kadar.
Parçalama dikey ve yatay olabilir. Dikey parçalama, tablonun olduğu gibi dikey çizgilerle kesilmesi, yatay parçalamanın ise yatay çizgilerle kesilmesi anlamına gelir.
Örneğin, tablodaki tüm verileri yıllara bölmeye karar verdik: 2019 için - bir tablo, 2020 verileri için - ikincisi vb. Bu, yatay parçalama olacaktır.
7 itme olmayanı itme
Veritabanlarının geliştirilmesinde belirli bir aşamada, bunlara giderek daha fazla iş mantığı eklenmeye başlandı. Her şey prosedürler, işlevler, sunucular tarafından web sayfaları oluşturmakla başladı ve neredeyse tüm popüler dillerin DBMS'ye eklenmesiyle sona erdi: Python, JavaScript ve hatta Java ve C ++.
Ayrıntılara girmeye başlayana kadar kulağa harika geliyor: JDK, java kitaplıkları, çerçeveler, az bellek ve pek çok şeyin olmadığı bir SQL sunucusu içinde yürütülecek olan web uygulaması iş mantığınızı gerçekten Java'da yazmak istiyor musunuz? diğer kısıtlamalar?