- Katılım
- 11 Eylül 2025
- Mesajlar
- 22
- Tepkime puanı
- 0
- Puanları
- 1
Knight Online Database (DB): Bir Dijital Krallığın Hafıza Sarayı
Oyuna her giriş yaptığınızda, karakterinizin tam bıraktığınız gibi, aynı itemler, aynı seviye ve aynı statülerle sizi karşılamasını sağlayan şeyin ne olduğunu hiç düşündünüz mü?
Veya bankanıza (Inn Hostess) koyduğunuz o değerli item'in, aylar sonra bile aynı slotta sizi beklemesinin ardındaki teknolojiyi?
İşte tüm bu soruların ve daha fazlasının cevabı, o sihirli iki harfte gizli: “DB” yani Database (Veritabanı).
Eğer server files (Ebenezer vb.) oyunun kurallarını işleten ve anlık kararları veren "beyin" ise, Database o beynin kullandığı "hafızadır". Beyin, yani sunucu dosyaları, bir aksiyon gerçekleştirir ama o aksiyonun sonucunu, o anıyı kalıcı olarak kaydeden yer veritabanıdır.
O olmadan, her oyundan çıktığınızda karakteriniz sıfırlanırdı. Kısacası, emeğinizin, zamanınızın ve karakterinizin dijital karşılığı, bu veritabanının içinde güvenle saklanır. Genellikle herhangi bir ko serverprojesinde bu iş için Microsoft SQL Server gibi güçlü ve profesyonel bir veritabanı yönetim sistemi kullanılır.
Krallığın Arşivi: Tablolar (Tables) Nasıl Çalışır?
Bir Knight Online veritabanını, devasa bir kütüphane gibi düşünebilirsiniz. Bu kütüphanenin içinde, her biri farklı bir konuya ayrılmış yüzlerce bölüm bulunur. İşte bu bölümlere "tablo" (table) diyoruz. Her tablo, belirli bir veri türünü saklamakla görevlidir. Gelin en temel tablolardan bazılarına ve ne işe yaradıklarına bakalım:- USERDATA Tablosu: Bu, kütüphanenin girişindeki ana kayıt defteridir. Tüm oyuncuların hesap bilgileri (kullanıcı adı, şifresi - tabii ki şifrelenmiş halde-, e-posta adresi, Knight Cash bakiyesi vb.) burada tutulur.
- K_CHARACTER Tablosu: Oyuna girdiğinizde gördüğünüz her karakterin ana kimlik kartı bu tablodadır. Karakterinizin adı, ırkı, sınıfı (job), seviyesi, statü puanları (str, hp, dex...) ve haritadaki son konumu gibi bilgiler burada saklanır.
- WAREHOUSE Tablosu: Bankanızdaki her bir item, bu tabloda ayrı bir satır olarak kaydedilir. Hangi hesaba ait olduğu, hangi slota konulduğu, sayısı ve upgrade seviyesi gibi tüm detaylar burada bulunur.
- ITEM_INFO Tablosu: Oyundaki aklınıza gelebilecek her item'in tanımı bu tablodadır. Bir Iron Bow'un ne kadar hasar vereceği, bir shell'in ne kadar defans sağlayacağı gibi statik bilgiler burada yer alır. Ebenezer, bir item'in ne işe yaradığını öğrenmek istediğinde bu tabloya başvurur.
Bu konuşma sadece bankayı açtığınızda veya envanterinize baktığınızda gerçekleşmez; oyun içinde yaptığınız her kalıcı eylem, bu ikili arasında bir diyalog başlatır.
Örneğin, saatlerce farm yaptıktan sonra o çok beklediğiniz Bus (Blessed Upgrade Scroll) düştüğünde, Ebenezer anında veritabanına bir "INSERT" (Ekle) komutu gönderir: "K_CHARACTER_ITEMtablosuna, şu karakterin envanterine bir adet Bus ekle." O komut başarıyla işlendiği an, artık o item kalıcı olarak sizindir; bir saniye sonra sunucu çökse bile, geri geldiğinizde o Bus envanterinizde sizi bekliyor olacaktır. Benzer şekilde, Anvil'e gidip o değerli +7 Raptor'ınızı +8'e denediğinizde, eğer başarılı olursa Ebenezer veritabanına bir "UPDATE" (Güncelle) komutu yollar ve item'inizin seviyesini 8 olarak değiştirir.
Oyuncunun Dilinden Sıkça Sorulan Sorular
Soru: Sunucuda "rollback" veya "geri alma" işlemi nasıl yapılıyor? Bu DB ile mi ilgili?Cevap: Kesinlikle evet, bu işlem %100 veritabanıyla ilgilidir. "Rollback", bir sunucuda yaşanan çok büyük bir problem (örneğin, ciddi bir dupeaçığıyla ekonominin çökmesi) sonrasında, yönetimin veritabanının daha önceki bir tarihe ait sağlıklı bir yedeğini geri yüklemesi işlemidir. Örneğin, sorun saat 15:00'te yaşandıysa ve yöneticinin elinde saat 14:00'te alınmış bir yedek varsa, o yedeği yükleyerek sunucuyu 1 saat öncesine geri döndürür. Bu, o 1 saat içinde yapılan tüm işlemlerin (alınan item'ler, atlanan leveller, yapılan upgrade'ler) silinmesi anlamına gelir. İşte bu yüzden bir sunucu yöneticisinin en kutsal görevi, düzenli aralıklarla veritabanı yedeği almaktır.
Soru: Database (DB) optimizasyonu nedir ve neden bu kadar önemlidir? Oyundaki lag ile bir ilgisi var mı?
Cevap: Çok yakından ilgisi var! Sunucu kalabalıklaştıkça ve veritabanındaki veri miktarı (milyonlarca item, on binlerce karakter) arttıkça, SQL sorguları yavaşlamaya başlayabilir. DB optimizasyonu, bu sorguları hızlandırmak için yapılan teknik işlemlerdir. Tablolara "index" eklemek (kütüphanedeki bir kitabın yerini anında bulmayı sağlayan bir fihrist oluşturmak gibi), gereksiz verileri temizlemek ve yavaş çalışan sorguları yeniden yazmak bu işlemlerden bazılarıdır. Özellikle Ronark Land'de yüzlerce kişinin aynı anda savaştığı anlarda veya kale savaşlarında (CSW) yaşanan o anlık takılmaların ve lag'ların en büyük sebeplerinden biri, anlık binlerce sorguya cevap vermekte zorlanan, optimize edilmemiş bir veritabanıdır. Akıcı bir pvp server deneyimi için hızlı bir DB şarttır.
Soru: "Database sıfırlanması" ne anlama geliyor ve sunucular neden bunu yapar?
Cevap: "Database sıfırlanması" ya da "wipe", bir sunucu yönetiminin, genellikle USERDATA, K_CHARACTER ve WAREHOUSE gibi oyuncularla ilgili tüm ana tabloların içini tamamen silmesi demektir. Bu, sunucudaki tüm karakterlerin, item'lerin ve ilerlemelerin kalıcı olarak yok olması anlamına gelir. Sunucular bunu genellikle eskiyen ekonomiyi canlandırmak, oyuncu sayısını artırmak ve herkese eşit bir başlangıç şansı sunmak için "yeni sezon" veya "yeni sunucu" adı altında yaparlar. Bu, pvp server dünyasının bir nevi yaşam döngüsüdür. Her şeyin sıfırlanması, rekabeti yeniden alevlendirir ve yeni bir başlangıç yapmak isteyen oyuncular için büyük bir çekim merkezi oluşturur.