Forum: Projeler Genel RSS
Basit Veritabanı Sistemi
Avatar
huseyin #1
Üye Haz 2012 tarihinden beri · 355 mesaj · Konum: Isparta
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Basit Veritabanı Sistemi
Merhaba arkadaşlar

Can Alpay artık aramızda gözükmüyor malesef. Onun çalıştığı dosya tabanlı veritabanı sistemine benzer fakat gelişmiş bir sistem üzerinde çalışmaya başladım Mysql ' e rakip olmayı düşünemesem de kendimize has bir veritabanımız olur diyorum. Kendi projelerimde bundan sonra bunu kullanıcağım. Ayrıca @zekeriyadurmus eğer isterse Rhodeus ' a da bu sistemi ekleyebiliriz. Sistemime bir sql tarzı fakat daha basit bir dil düşünüyorum. Önerilerinizi bekliyorum. Şuanda temel yapılar çalışıyor.

Herkese Başarılar
Huseyin
Avatar
Salih Dinçer #2
Üye Ock 2012 tarihinden beri · 1889 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Böyle bir şeye giriştiğin için kutlarım ve sınıf kapsamında kod desteği sağlarım...

Örneğin, tüm hatları belirlenmiş bir iş için sınıfı yazarım. O sınıf benim sorumluluğumda olur ve olgunlaştığında projeye dahil ederiz. Aslında herkes benzer 1 adet sınıftan sorumlu olsa işlerimiz çok kolaylaşabilir. Bunu sadece bu proje için değil herkes ve her fikir için söylüyorum. Mutlaka Ali hocanın da yapmak istedikleri vardır. İş bölümü yapmalı, ne dersiniz? Gerçi an itibariyle forum katılımı dip yapmış durumda...:(

Konuya hemen bir katkı sağlamak gerekirse. Bir veritabanı yöneticisi, öncelikli olarak şu 5 işlemi yapabilmeli:

- CREATE: Yeni bir tabloyu veritabanına oluşturmalı, KUR uygun,
- INSERT: Var olan boş bir vertabanına satır ekleme, KAT uygun,
- SELECT: Veritabanı içindeki bir tabloyu seçebilme, SEÇ uygun,
- UPDATE: Seçilmiş verileri belli kurallar ile güncelle, YAP uygun,
- DELETE: Herhangi bir tabloyu silmek için ise kısaca SİL uygun görünmekte...

Tabi, belki de her başlık uzun uzadıya açıklanıp yapacağı işlevler dallandırılabilir. Özellikle SEÇ ile YAP özyinelemeli (recursive) özelliklerinden dolayı gerçekten kapsamlı olacaktır. Yine de bir yerden başlayalım ve basitte olsa kursun, seçsin ve ne yapacaksın yapsın bire...:)

Özetle, üç harfli anahtar sözcükler ile basit ve Türkçe bir veritabanı dili tanımlamak mümkün görünüyor...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
huseyin #3
Üye Haz 2012 tarihinden beri · 355 mesaj · Konum: Isparta
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Öncelikle teşekkür ederim :) Yardım edeceğinizden hiç şüphem olmadı sizin gibi insanlardan Dünya ' da çok yok malesef. Harfler ve aralıklar ile işlem yapmayı geçenlerde denemiştim açıkçası tam bir facia oluyor bence tokenizer kullanalım tabloları yorumlarken kullandığım şekilde.

Ben sizlere örnek olması açısından şöyle birkaç gösterme yapayım dedim :)

main.d:
module main;
 
import std.stdio;
import databaser;
import std.c.process:system;
void main(string[] argv)
{
    Database db=new Database("mydb");
    Table tbl=db["mytable1"];
    Data[ColumnName] data=["Ad":"Ali","Soyad":"Çehreli","Meslek":"Yazılımcı"];
    tbl.addAssoc(data);
    tbl.SaveIt();
    system("pause");
}

Kodu yüklediğim zaman ayrıntılı olarak inceleyeceksiniz dosya sistemini nasıl tuttuğumu onun için burada yazmaya gerek duymadım :) Haftaya yüklemeye çalışacağım bu hafta kotam bana el vermedi malesef :/

Bu da o tablonun içeriği(yani mytable1)

Kayıttan Önce:
TBLNAME "mytable1"
COLUMN
NAME "Ad"
DATAS "Mahmut","Huseyin"
COLUMNEND
 
COLUMN
NAME "Soyad"
DATAS "Akbas","Akbas"
COLUMNEND
 
COLUMN
NAME "Meslek"
DATAS "Doktor","Öğrenci"
COLUMNEND

Kayıttan Sonra:
TBLNAME "mytable1"
COLUMN
NAME "Ad"
DATAS "Mahmut","Huseyin","Ali"
COLUMNEND
 
COLUMN
NAME "Soyad"
DATAS "Akbas","Akbas","Çehreli"
COLUMNEND
 
COLUMN
NAME "Meslek"
DATAS "Doktor","Öğrenci","Yazılımcı"
COLUMNEND
Huseyin
Bu mesaj huseyin tarafından değiştirildi; zaman: 2013-09-14, 07:04.
darkofpain #4
Üye Ağu 2013 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Veritabanı yapacaksanız lütfen NoSQL yapısı uygulayın çünkü her geçen gün bankalar gibi işlem yapan yerler hariç ilişkisel veritabanlarına olan ilgi düşüyor.

NoSQL örnek olarak
Couchbase (earlang ile kodlandı) MongoDB (c++ ile kodlandı) bunlar piyasada lider zaten.

Neden NoSQL tüm datalar bson dosyası olarak tutuluyor buda hız demek istenilen data çok hızlı servis yapılıyor ve ilişkisel veritabanlarında biliyorsunuz ki önce tabloları oluştururuz.

Ama NoSQL de tablo adı verir dataları ekleriz name=value şeklinde okadar MongoDB alır bunu bson olarak kayıtlar ve depolar istenildiğinde hemen servis yapar.

NoSQL yapıları İlişkisel veritabanlarına göre %300 çok daha hızlıdır.
Avatar
Salih Dinçer #5
Üye Ock 2012 tarihinden beri · 1889 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bir veri silindiğinde nasıl davranıyor?

Yani büyük bir veritabanı düşünelim (2 GB) ve içinden 20 MB'lığı silindi diyelim. İlk bakım anına (maintenance) kadar veri durmaya devam mı eder?

Teşekkürler...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
darkofpain #6
Üye Ağu 2013 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
belirlediğiniz kriterler doğrultusunda siler örnek uyeler.json yarattı ve bu dosyada tüm üyeleri tutuyor biz dedik ki

id: 300
username: batuhangoksu

olan kullanıcıyı sil dediğimiz zaman jsondan o veriyi siler sadece ama uyeler dersekte komple uyeler json dosyasını siler :)
agora #7
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bu konuda JSON onermeye girmistim ben de.

Gql sisteminin mantigi gibi islenebilir.

Google Query Language bence mukemmel bir sistem :)

Json icerisinde ise soyle saklanabilir: Olusturulan veritabaninda tablolar ve kolonlar saklanabilir. Bunun icin veritabani adinda bir nesne olusturulur ornegin

var OrnekVeri = {
      kolonlar: [{id: 'id', label: 'Yazi', type: 'string'},
          {id: 'id', label: 'Kategori', type: 'string'},
          {id: 'saatid', label: 'Saat', type: 'number'}]
      };

Bu tip olarak saklama yapilabilir. Bunlar uzerinden de baglanti kurulabilir. Bu nesne icerisindeki tablo, kolon verilerini alip bu verilere baglantili ikinci bir nesnede eklenen verileri fiziksel olarak saklayabilirsin?
Bu mesaj agora tarafından değiştirildi; zaman: 2013-09-17, 05:03.
Avatar
zekeriyadurmus #8
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Eşleme tablolarının yapısının bilinmesi ve ürettiği çıktının bayt dizisi olarak saklanması gerektiğini düşünüyorum.

Zekeriya
Bilgi meraktan gelir...
Avatar
Salih Dinçer #9
Üye Ock 2012 tarihinden beri · 1889 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #6
batuhangoksu on 2013-09-17, 04:42:
belirlediğiniz kriterler doğrultusunda siler örnek uyeler.json yarattı ve bu dosyada tüm üyeleri tutuyor biz dedik ki

id: 300
username: batuhangoksu

olan kullanıcıyı sil dediğimiz zaman jsondan o veriyi siler sadece ama uyeler dersekte komple uyeler json dosyasını siler :)
Ben aslında disk üzerinde olan akıllı algoritmayı merak ediyordum. Yoksa hangi veritabanını kullanırsanız kullanın (belki küçük dosyalara bölen ve FAT ile işbirliği içerisinde çalışanlar hariç) dosyanın bir bölümü artık geçersizse iki seçeneğiniz vardır:

1.Üzerlerine boş bilgi yazmak ve/veya tablodan bağını koparmak
2.Tüm verileri tekrar yazıp silinen bölümü atlamak.

JSON olayına girdiğiniz çok iyi oldu. O konuda bir kaç püf noktası geliştirdim. Geniş bir vakitte paylaşabilirim.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
darkofpain #10
Üye Ağu 2013 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
JSON olayına girdiğiniz çok iyi oldu. O konuda bir kaç püf noktası geliştirdim. Geniş bir vakitte paylaşabilirim.

En kısa zamanda fikirlerinizi paylaşmanızı bekliyoruz.
Avatar
Salih Dinçer #11
Üye Ock 2012 tarihinden beri · 1889 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
İlk yöntem şu:
_HEADER_ isminde bir dalınız oluyor. Bunun içerisinde JSON içinde yer alan tüm veriye erişmeniz için gereken anahtar sözcükler yer alıyor. Bu standardı tüm dosyalarda uygulandığınızda, JSON sınıfınız kurulurken sadece dosya ismini bilmesi yeterli oluyor...:)

Kısaca dosya açılıp devam eden dallar için hazırlık verisi okunuyor ve sonunda tüm veri, yapılar halinde RAM'e geçiriliyor...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
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:
Forum: Projeler Genel RSS
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-06-25, 19:10:15 (UTC -07:00)