Forum: Diğer Konular RSS
Veritabanındaki veriler nerede saklanıyor?
agora #1
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Veritabanındaki veriler nerede saklanıyor?
Selam merak ettiğim bir konu var

MySQL, MS-SQL, Oracle olsun bu tip veritabanlarında veriler nerede saklanıyor?

Örnek verecek olursak

MySQL veritabanı çalışma anında o bilgileri bize gösteriyor. Ancak veritabanı durdurulduğu anda herhangi bi işlem çalışmadığında o veriler nasıl saklanıyor?

Bu verilerin saklanma şekli nedir?

Yani sormak istediğim

bi proje geliştirildi o proje için "proje_vt" adinda bi vt ve icinde sutunlar, tablolar vs. olusturuldu diyelim.

Bu bilgilerin saklandigi fiziksel alanlar nereler acaba?

Ornegin: /usr/bin/veritabani_ne_ise/storage

gibi ya da windows için

C:\Veritabani_Ornegin_DSql\Veriler

bu tip şekilde mi saklanır?

Bu veriler nasıl işlenir? Merak ettiğim bir konu oldu hep :)
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
"mysql directory structure linux" diye aratınca öğrendim:

Benim ortamımda /etc/my.cnf dosyasının içinde datadir=/var/lib/mysql diye bir satır var.

Ali
agora #3
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
"mysql directory structure linux" diye aratınca öğrendim:

Benim ortamımda /etc/my.cnf dosyasının içinde datadir=/var/lib/mysql diye bir satır var.

Ali

Bende de aynı şekilde hocam. Ancak merak ettiğim şey şöyle diyeyim

Bu konu başlığı, mesajlar ve mesaj yazanlar bu işin web tabanlı yüzü olan PhpMyAdmin tarafından kontrol edilebiliyor.

Bu veriler fiziksel olarak nereye kaydediliyor?

Varsayalım ki çalışma zamanında bir başka program derleniyor duruma göre. Sonuçta derlenen program bir yere kaydediliyor.

Burada veritabanının verileri "ddilorgforum.txt" gibi kaydedilip örneğin 1 milyon mesaj, 1 milyon konu, 1 milyon üye bilgisi de o txt'in içinde mi saklanıyor gibisinden.
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
agora:
Burada veritabanının verileri "ddilorgforum.txt" gibi kaydedilip örneğin 1 milyon mesaj, 1 milyon konu, 1 milyon üye bilgisi de o txt'in içinde mi saklanıyor gibisinden.

Neden olmasın? Ama ayrıntılarını hiç bilmiyorum. :)

Ali
agora #5
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
agora:
Burada veritabanının verileri "ddilorgforum.txt" gibi kaydedilip örneğin 1 milyon mesaj, 1 milyon konu, 1 milyon üye bilgisi de o txt'in içinde mi saklanıyor gibisinden.

Neden olmasın? Ama ayrıntılarını hiç bilmiyorum. :)

Ali

Eğer böyle bir durum var ise aynı şekilde dosyaları arayarak verileri orada saklayan ve çalışma zamanında bunları kullanıma sunan bi veri işleme aracı yapılabilir gibi geliyor aklıma :)

Tabii bunun txt değil de özelleştirilmiş, fikirdi araca uygun uzantılarda saklanması olabilir :)
Avatar
huseyin #6
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Eğer böyle bir durum var ise aynı şekilde dosyaları arayarak verileri orada saklayan ve çalışma zamanında bunları kullanıma sunan bi veri işleme aracı yapılabilir gibi geliyor aklıma :)

Aslında ben bu işlere giriştim ancak yeterli bilgi bulamamıştım beni de haberdar edersen sevinirim yeniden yazılması gereken benzer bir sistem var :D
Huseyin
Avatar
Salih Dinçer #7
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Her veritabanı yazılımı, birbirine göre bazı farklılıkları olsa da genelde her yeni bir veritabanı 1 adet dosyada saklanıyor. Siz onun içine veritabanı kuralları dahilinde birbirinden farklı yapıları kayıt edip işleyebiliyorsunuz...

Tabi soru bu değil...:)

Fiziki olarak dosyanın, işletim sistemin neresinde olduğu soruluyor olsa ki ben de bilmiyorum. Ama bunu öğrensek bile kilitli olması muhtemel. Hadi yazılımı kapattınız ve dosyanın niteliklerini işletim sistemi olanakları ile (sahipliğini) değiştirdiniz diyelim. Yine de iç yapısını tüm kuralları ile birlikte bilmek gerekir diye düşünüyorum...

Son olarak veritabanları birden fazla dosyadan da meydana gelebileceğini belirtmeden geçemeyeceğim. Çünkü siz verileri düzenlerken ve/veya tamamen silerken, bunun hızlı bir şekilde yapılabilmesi için bazı teknikler uygulanır...

Örneğin, çok büyük bir veritabanına sahipsiniz diyelim ve bir kaydı sileceksiniz. Muhtemelen yapı ve/veya değişken isimlerinin (tanımlayıcı bilgilerin) yer aldığı dosya(lar)dan bunu sileceksinizdir. Ancak asıl verinin karşılığının tutulduğu yerde bu bilgiler (yakın zamanda bakım yapılmadıysa) duracaktır. Tıpkı bir dosyayı sildiğinizde, aslında FAT üzerinde işlem yapıldığı ve kendisinin fiziki olarak (üzerine bir dosya yazılana kadar) muhafaza edildiği gibi!
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
huseyin #8
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Her veritabanı yazılımı, birbirine göre bazı farklılıkları olsa da genelde her yeni bir veritabanı 1 adet dosyada saklanıyor. Siz onun içine veritabanı kuralları dahilinde birbirinden farklı yapıları kayıt edip işleyebiliyorsunuz...

Bu sanırım serializasyon denilen olay oluyor eğer ismini doğru hatırladıysam :) Bir class ın dosyaya aktarılıp çalışırken tekrar oradan çekilmesi olayı. Veritabanlarının çalışma prensibinde bunun olduğu görüşündeyim
Huseyin
agora #9
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
@Salih Dincer

Hocam merak etme sebebim su mesela

Verilerin fiziksel saklandığı yerleri bilirsek, fiziksel olarak saklanan dosyaları görüntüleyebilirsek içerisindeki kuralları görmüş olacağız

Smarty Engine denen sistem vardır PHP'de

Burada da aynı Template sistemi olabilir.

Örnek kurallı yapıdan bahsedecek olursak

/usr/bin/ddiliveritabani/veriler

dizininde veritabanındaki bilgilerin fiziksel halleri saklanıyor

ornek_veritabani.ddx

uzantisinda saklantidigi dusunelim ve bu dosyanin kurallarini belirtelim

icerik olarak

ornek_veritabani.ddx fiziksel dosyanın kural ifadeleri

$[]veritabani_adi->ornek_veritabani;
$[]veritabani_tablosu->ornek_veritabani->forum;
$[]veritabani_bilgileri->ornek_veritabani->forum->bilgiler;

gibi kurallı bi yapı olsa ve bu yapıların bağıntısı da

$[]veritabani_adi->ornek_veritabani;
$[]veritabani_tablosu->ornek_veritabani->forum;
$[]veritabani_bilgileri->ornek_veritabani->forum->bilgiler;
$->isle->ornek_veritabani_islem.ddx;

olsa ve isle'nin gosterdigi dosyaya mi islenecek bu bilgiler. Peki bu bilgiler biriktikte bu dosyanin boyutu artmiyor mu? Merak ettigim bir diger nokta da bu

Tabii bu yukaridaki verdigim sahte kodlar, ornegin bizim yazdigimiz veritabani sisteminin ornek olarak "Kanuni Veritabani Sistemi" olsun çalışma parametreleri olabilir. Yani standart olarak bu kodlar işletim sisteminde çalışan kodlar değiller. Ancak ilişkisi "Kanuni Veritabani Sistemi" çalışınca bir işe yarar.

@huseyin325325

hocam, aslında asıl merak ettiğim nokta bu veriler bir dosya içinde ne şekilde sıkıştırılıyor.

Serialization bana da mantıklı geliyor. Örneğin bir obje düşünün bu obje kullanılarak diğer bütün objelerin ilişkileri çözülür ve belirtilmiş olan kaynağa bu özellikler yaptırılır. Bu objenin hayata geçirilme evresi de bu işlemin tam tersi ile mümkündür.

Serialization olayının diğer yandan runtime esnasında bu işlemlere imkan tanıması da veritabanı çalışma prensibini açıklıyor sanırım. .NET için bu olaylar binary formatter ya da xml formatter olarak halledilir. Ama bahsedilen bi veritabanı sistemi olunca işin xml ile saklanacak basitlikte olduğunu sanmıyorum :)

Ama serialize işleminin konuda geçmesinden konudaki bir soruya cevap aldım onu da söyleyeyim

Serialize işleminin faydası daha da açıkca söylenecek olursa;

Bir obje'nin daha sonra da kullanılabilir olmasını sağlıyor.  Yani biz ilk işlemde "Serialize" yöntemini kullandık. Tekrar kullanılabilir olması karşı tarafa aktarılabilmesi ve mevcut döngünün sürdürülebilmesi adına da deserialize işlemi gerekmekte sanırım.

Kafam karisti ama bilgim de cok fazla degil :)

Yine de cevaplar bilgilendirici oldu :)

Edit ://

Saklanma hakkında Windows'a kurdugum wamp ile bilgi aldım. C# ile işletim sisteminde anlık olarak yaratılan klasör ve dosyaların bilgisini aldım

Benim sistemimde

C:\wamp\bin\mysql\mysql5.5.24\data\ VERİTABANIADI yani
 
C:\wamp\bin\mysql\mysql5.5.24\data\agora

içine bakınca da

db.opt diye bi dosya oluştuğunu gördüm
 
default-character-set=utf8
default-collation=utf8_general_ci

tablolar vs. oluşturunca da

.frm
.myd
.myi


uzantısında dosyalar oluştuğunu gördüm

Yani ali hocamın bana gösterdiği yol aslında verilerin saklandığı fiziksel yolmuş.

Bu tip saklanma şekli de bize bir fikir olabilir

Linux altında

cd /var/lib/mysql

yazıp ls -li

ile listeletebilirsiniz.
Bu mesaj agora tarafından değiştirildi; zaman: 2013-07-17, 11:28.
acehreli (Moderatör) #10
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
agora, MySql'in dosya yapısı şuradaki belgede açıklanıyor:

  http://dev.mysql.com/doc/internals/en/fileformats.html

Ali
agora #11
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
agora, MySql'in dosya yapısı şuradaki belgede açıklanıyor:

  http://dev.mysql.com/doc/internals/en/fileformats.html

Ali

Hocam tam da üstte mesajı editleyip onu yazmıştım :)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-22, 06:58:28 (UTC -08:00)