VERİ TABANI SUNUCUSU
Tags: learning, database, coding, sql
Published: 2024-05-20 11:20:06

Merhaba bu makalemde size veri tabanı sunucusu hakkında bilgi vereceğim.

Veri tabanı sunucusu, verilerin saklanması, işlenmesi ve yönetilmesi için tasarlanmış özel bir bilgisayar programıdır. Bu sunucular, genellikle büyük ölçekli işletmelerde ve kuruluşlarda kullanılır ve yüksek performans, güvenlik ve düzenli çalışma için gerekli altyapıyı sunarlar. 

Örneğin bir organizasyonun veya şirketin belirli veri tabanlarını barındırmak ve yönetmek için kullanılır. Sadece büyük işlemler veya kuruluşlarda mı kullanılır. Kesinlikle **HAYIR**.
Veri gerektiren en ufak bir programda bile veri tabanı kullanılır.

Veri tabanı sunucusunun temel işlevleri şunlardır:

 **1. Veri Saklama ve Yönetim:**

- Veri tabanı sunucusu, verileri düzenli bir şekilde saklar ve yönetir. Bu veriler, metin, sayılar, resimler, videolar veya diğer türde bilgiler olabilir.

- Veri tabanı sunucusu, veri tabanında tablolar, sütunlar ve satırlar şeklinde organize edilmiş verileri barındırır.

**Bir Şirketin Veri Tabanı Örneği**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p6t9br3mdkjn36cmqe5e.PNG)

**2. Veri Erişimi ve İşleme:**
İstemciler (örneğin web uygulamaları veya masaüstü uygulamaları), veri tabanı sunucusuna istekler gönderir. Daha sonra bu istekleri işler ve veri tabanından verileri çeker veya günceller. Örneğin, bir kullanıcının oturum açması veya bir ürünün stok durumunu sorgulaması gibi işlemler bu aşamada gerçekleşir.

**-Veri Ekleme (Insert):** Yeni verilerin veri tabanına eklenmesi. Örneğin, yeni bir müşteri kaydı oluşturmak.

**- Veri Sorgulama (Query):** Veri tabanından bilgi çekme işlemi. SQL (Structured Query Language ) kullanarak veri sorguları yapılır.

**- Veri Güncelleme (Update):** Mevcut verilerin değiştirilmesi. Örneğin, bir ürünün fiyatını güncellemek.

**- Veri Silme (Delete):** Veri tabanından veri kaldırma işlemi. Örneğin, artık kullanılmayan bir müşteri kaydını silmek.

**3. Güvenlik ve Yetkilendirme:**
Veri tabanı sunucusu, verilere yetkisiz erişimi önlemek için güvenlik önlemleri alır. Kullanıcıların kimlik doğrulamasını sağlar ve sadece yetkilendirilmiş kullanıcıların verilere erişmesine izin verir. Verilerin bütünlüğünü korumak için şifreleme ve diğer güvenlik yöntemlerini kullanır.

**- Şifreleme:** Verilerin şifrelenmesi, yetkisiz erişimi önlemek için önemlidir. Veri tabanı sunucusu ve iletişim kanalları şifrelenmelidir.

**- Güvenlik Duvarları:** Veri tabanı sunucusuna gelen istekleri filtrelemek için güvenlik duvarları kullanılmalıdır.

**- Güncel Yazılım ve Yama Yönetimi:** Veri tabanı yazılımının güncel ve yamalanmış olması önemlidir. Güvenlik açıklarını kapatmak için düzenli olarak güncellemeler yapılmalıdır.

**- Yetkilendirme ve Kimlik Doğrulama:** Kullanıcıların veri tabanına erişim haklarını belirlemek için yetkilendirme ve kimlik doğrulama mekanizmaları kullanılmalıdır.

**Yetkilendirme**:

**- Kullanıcı Rollerini Tanımlama:** Kullanıcı rolleri (örneğin yönetici, okuma/yazma, sadece okuma) tanımlanmalıdır. Her rolün belirli yetkilendirmeleri olmalıdır.

**- Kullanıcı Hesapları Oluşturma ve Yönetme:** Kullanıcı hesapları oluşturulmalı, şifreleri güçlü olmalı ve düzenli olarak değiştirilmelidir.

**- Kullanıcı Erişim Kontrolleri:** Kullanıcıların hangi verilere erişebileceği ve hangi işlemleri yapabileceği belirlenmelidir.

**4. Yedekleme ve Kurtarma işlemleri**
Veri tabanında yedekleme ve kurtarma işlemleri, verilerin güvenliğini sağlamak ve veri kaybını önlemek için önemlidir. Bir hata veya kaza sonucu tüm verilerinizin kaybolma riski vardır.

**- Veri Yedekleme (Backup):**Veri yedekleme, veri tabanının düzenli aralıklarla yedek kopyalarının oluşturulmasıdır. Bu kopyalar veri tabanının tamamını veya belirli tablolarını içerebilir ve verilerin kaybolmasını önlemek için kritik öneme sahiptir.

**- Veri Kurtarma (Restore):**Veri kurtarma, yedeklenmiş verilerin geri yüklenmesi işlemidir. Veri tabanı hataları, sistem çökmeleri veya veri kaybı durumunda veri kurtarma işlemi yapılır. Bu dosyaları kullanılarak veriler geri yükler.

**_VERİ TABANI SUNUCU TÜRLERİ_**

Veri tabanı sunucusu türleri, veri tabanlarını yönetmek ve verileri depolamak için kullanılan farklı sistemlerdir.

1. **İlişkisel Veri Tabanı Sunucuları**

- İlişkisel veri tabanı sunucuları, verileri tablolar halinde saklar ve bu tablolar arasındaki ilişkileri yönetir.

- Her tablo, belirli bir veri türünü temsil eder (örneğin, no, müşteriler, siparişler, ürünler).

- İlişkisel veri tabanları, SQL (Structured Query Language) ile sorgulanır ve yönetilir.

İlişkisel veri tabanında genellikle **Microsoft SQL Server**, **MySQL**, **Microsoft Access Database** kullanılır.

**2. Belge Tabanlı Veri tabanları**

- Belge tabanlı veri tabanları, JSON veya XML benzeri formatta ama daha da sıkıştırılmış ve boyutu daha küçültülmüş halde tutulmasıdır. Böylelikle boyutun küçülmesinin yanında işlem hızı da daha iyi seviyede olmaktadır.

- Her belge, verileri içeren bir yapıya sahiptir.

- Örnek veri tabanı sunucuları: MongoDB, Couchbase.

**3. Anahtar-Değer Veri Tabanları**

- Belirli bir NoSQL veri tabanına , genellikle bir anahtar-değer deposu olarak adlandırılan bir anahtar-değer veri tabanı denir. Anahtar-değer veri Tabanları, basit bir anahtar-değer çifti ile verileri saklar.

- Hızlı okuma ve yazma işlemleri için uygundur.

- Örnek veri tabanı sunucuları: Redis, Riak.

**_Veri Tabanı Tasarımı ve Normalizasyon_**

Veri tabanı tasarımına başlamadan önce ihtiyaçları belirlemeliyiz. Hangi tablolara, kolonlara ve tiplere ihtiyacımız var? Bunları düşünmemiz gerekir. Bunları ister kağıt kalem ister excel veya diyagram oluşturucu programlar ile nasıl kolayınıza geliyorsa tasarlayıp sonra veri tabanı oluşturma aşamasına geçmemiz daha iyi olur.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4zvigycgxdgfbu78lcgi.jpg)


**Normalizasyon**
Normalizasyon, ilişkisel veri tabanları planlanırken lüzumsuz veri tekrarını veya yetersiz verileri önlemek için oluşturulan kurallardır. Bu kurallar sayesinde aynı zamanda veri tabanı performansını da sağlamış oluruz. Bu kurallara Normal Form (NF) denir.

**1.Normal Form (1NF)**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u4qa6pjv43cwhjw1cp7x.PNG)

- Aynı tablo içinde tekrarlayan kolonlar olmamalıdır.

- Her kolonda yalnızca bir değer bulunmalıdır.

-  Her satır bir eşsiz anahtarla tanımlanmalıdır.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/he85f9kp9kigq3cklqdl.PNG)

**KitapTur** kolonundaki tekrarlayan kitap türlerini düzenledik fakat satır sayımız yükseldi ve sorunlarımız devam ediyor. Seçme, ekleme, güncelleme, silme gibi işlemlerimizi yaparken karışık ve zor olacak, bunun için diğer kuralımıza geçiyoruz.

**2.Normal Form (2NF)**

- Tablo 1NF olmalıdır.

- Anahtar olmayan değerler ile bileşik anahtarlar arasında kısmi bağımlılık durumu oluşmamalıdır. Kısmi bağımlılık durumu, anahtar olmayan herhangi bir değer bileşik bir anahtarın sadece bir kısmına bağıl ise oluşur.

- Ana tablo ile yeni tablolar arasında, foreign key kullanılarak ilişkiler tanımlanmalıdır.

- Herhangi bir veri alt kümesi birden çok satırda tekrarlanmamalıdır. Bu tür veri alt kümeleri için yeni tablolar oluşturulmalıdır.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxtfpfnnqox4bc6jkycm.PNG)

Aynı verileri tekrar edenleri tablolara böldük ve ilişkilendirdik fakat yine bir sorunumuz var Kitaplar tablosunun KitapTur kolonundaki verilerimiz tekrar ediyor bunun için diğer kuralımıza geçiyoruz.

**3.Normal Form (3NF)**

- Tablo 2NF olmalıdır.

- Anahtar olmayan hiçbir kolon bir diğerine (anahtar olmayan diğer bir kolona) bağlı olmamalı diğer bir deyişle her kolon eşsiz anahtara tam bağımlı olmak zorundadır.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e6psil7int9835ugddwa.PNG)

Kitap Türlerimizi ayrı bir tabloya alarak ilişkilendirdik fakat yine bir sorunumuz var bu sefer de Id numaralarımız tekrar ediyor bu sorun için diğer kuralımıza geçiyoruz.

**4.Normal Form (4NF)**

- Satır tekrarlarını azaltmak için N-N yani çoka çok ilişkili tablolar oluşturulmalıdır.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bhdmbo8i53zqldjosy4a.PNG)

Bir kitabın birden fazla türü olabiliyor. Kitaplar tablosunda ki KitapTurId kolonunu kaldırdık. Kitaplar_KitapTurleri tablosu oluşturduk çoka çok ilişki kurduk.

Bir müşteriye birden fazla satış yapılabilir. SatislarDetay adında bir tablo oluşturduk.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7onda67zwf3lqrhk1vyv.PNG)

Özet olarak veritabanı sunucusu, bir bilgisayar ağı üzerinde verilerin depolandığı ve yönetildiği bir yazılım veya donanım sistemidir. Temel olarak, veritabanı sunucusu, kullanıcıların verilere erişmesine, bu verileri güncellemesine ve sorgulamasına olanak tanır.

İlgi gösterip okuduğunuz için teşekkür ederim.

KAYNAKÇA

- https://netuv.com/blog/veri-tabani-sunucusu-nedir/
- https://www.ibm.com/docs/tr/db2/11.1?topic=clients-options-connecting-databases
- https://jetdestek.radore.com/hosting/veritabani-sunucu-adresiniz-nedir.html
- https://learn.microsoft.com/tr-tr/aspnet/web-forms/overview/deployment/configuring-server-environments-for-web-deployment/configuring-a-database-server-for-web-deploy-publishing
- https://www.daha.net/blog/veri-tabani-sunucusu-nedir/
- https://ikas.com/tr/blog/server-nedir