• 05-12-2023, 14:12:45
    #1
    NodeJS, JAVA veya PHP olsun hangi dil olursa olsun ben genel olarak bu soruyu soruyorum.

    Kendi veritabanı sistemimi geliştirmek isterim. Yapay zekaya sordum, bana JSON tabanlı veritabanı sistemi önerdi. Kodu aşağıdaki yer alıyor.

    const fs = require('fs');
    
    class SimpleDatabase {
    constructor(databaseName) {
    this.databaseName = databaseName;
    this.data = {};
    
    this.loadDatabase();
    }
    
    // Veritabanı oluşturma veya yükleme
    loadDatabase() {
    try {
    const data = fs.readFileSync(`${this.databaseName}.json`, 'utf8');
    this.data = JSON.parse(data);
    } catch (err) {
    // Eğer dosya yoksa veya bir hata oluşursa yeni bir veritabanı oluştur
    this.saveDatabase();
    }
    }
    
    // Veritabanı adını güncelleme
    updateDatabaseName(newName) {
    this.databaseName = newName;
    this.saveDatabase();
    }
    
    // Veritabanı kaydetme
    saveDatabase() {
    fs.writeFileSync(`${this.databaseName}.json`, JSON.stringify(this.data, null, 2), 'utf8');
    }
    
    // Veritabanı kaldırma
    dropDatabase() {
    fs.unlinkSync(`${this.databaseName}.json`);
    this.data = {};
    }
    
    // Tablo oluşturma
    createTable(tableName, columns) {
    this.data[tableName] = { columns, rows: [] };
    this.saveDatabase();
    }
    
    // Veri ekleme
    insertData(tableName, rowData) {
    this.data[tableName].rows.push(rowData);
    this.saveDatabase();
    }
    
    // Veri güncelleme
    updateData(tableName, rowIndex, updatedData) {
    this.data[tableName].rows[rowIndex] = updatedData;
    this.saveDatabase();
    }
    
    // Veri kaldırma
    deleteData(tableName, rowIndex) {
    this.data[tableName].rows.splice(rowIndex, 1);
    this.saveDatabase();
    }
    
    // Veri seçme
    selectData(tableName) {
    return this.data[tableName].rows;
    }
    }
    
    // Örnek kullanım
    const myDatabase = new SimpleDatabase('myDatabase');
    
    myDatabase.createTable('users', ['id', 'name', 'age']);
    myDatabase.insertData('users', { id: 1, name: 'John Doe', age: 25 });
    myDatabase.insertData('users', { id: 2, name: 'Jane Doe', age: 30 });
    
    console.log('Before Update:');
    console.log(myDatabase.selectData('users'));
    
    myDatabase.updateData('users', 0, { id: 1, name: 'Updated John Doe', age: 26 });
    
    console.log('nAfter Update:');
    console.log(myDatabase.selectData('users'));
    
    myDatabase.deleteData('users', 1);
    
    console.log('nAfter Delete:');
    console.log(myDatabase.selectData('users'));
    
    // Veritabanını kaldırma
    // myDatabase.dropDatabase();
    Bu yöntemin MySQL kadar performansının yüksek olmayacağını düşünüyorum. Bunun için veritabanını klasöre çevirme ve klasör içinde tablo dosyaları yerleştirmeyi düşündüm ama yine de size de bir sorayım diyorum. Örneğin tek tablo dosyasında 1.000 veya 10.000 tane veri olduğunda performans ne ölçüde etkilenir? Daha iyi bir yöntem bulunuyor mu? Sistemi kendim kodlamak istiyorum, farklı bir yazılım tavsiye etmeyin. NodeJS tabanlı bir kütüphane olursa önerebilirsiniz.
  • 05-12-2023, 14:17:32
    #2
    Bir sürü hali hazırda, yıllardır geliştirilen, community'leri olan, kaynak ve destek konusunda sıkıntı çekmeyeceğiniz veritabanı yapısı var iken neden sıfırdan bir veritabanı oluşturmak istiyorsunuz?
  • 05-12-2023, 14:20:02
    #3
    ercan adlı üyeden alıntı: mesajı görüntüle
    Bir sürü hali hazırda, yıllardır geliştirilen, community'leri olan, kaynak ve destek konusunda sıkıntı çekmeyeceğiniz veritabanı yapısı var iken neden sıfırdan bir veritabanı oluşturmak istiyorsunuz?
    Genel olarak duyulmayan ama tüm büyük şirketleri ayakta tutan çözümler de varken kullandığımız, bence de son kullanıcı için gerekli olmayan bir talep konu.
  • 05-12-2023, 14:25:43
    #4
    yalinyalniz adlı üyeden alıntı: mesajı görüntüle
    Genel olarak duyulmayan ama tüm büyük şirketleri ayakta tutan çözümler de varken kullandığımız, bence de son kullanıcı için gerekli olmayan bir talep konu.
    Yorumunuz haklı olduğu kadar haksızda. Eğer arkadaş kendini geliştirmek, bu alanda ilerlemek istiyorsa kendi veritabanı sistemini yapabilir. Çokta güzel olur. Belki ilerleyen dönemlerde bir probleme çözüm üretebilir. Diğer yandan JSON olarakta MongoDB gibi birçok veri tabanı var. Onlar tercih edilebilir.
  • 05-12-2023, 15:07:42
    #5
    Developer adlı üyeden alıntı: mesajı görüntüle
    Yorumunuz haklı olduğu kadar haksızda. Eğer arkadaş kendini geliştirmek, bu alanda ilerlemek istiyorsa kendi veritabanı sistemini yapabilir. Çokta güzel olur. Belki ilerleyen dönemlerde bir probleme çözüm üretebilir. Diğer yandan JSON olarakta MongoDB gibi birçok veri tabanı var. Onlar tercih edilebilir.
    Öğrenmenin en iyi yolu var olanın kaynaklarını inceleyip sistemlerin kendine göre eksi artılarını ölçmek ve bunlara göre bir şeyler yapmaktır; JSON-NoSQL yüzlerce veritabanı var ve kodlananla belki birebir özelliklerde bile veritabanları çıkacaktır rahatlıkla. Konseptlere göre yaklaşık 50-60 yıldır binlerce, onbinlerce database yazılımı kodlandığından gerçekten eşsiz bir konsept olmadıkça kodlamak zaman kaybı olacaktır; varolanların eksilerini artılarını bilmeden sıfır-scratch bir DB yeterince verimli olmayacaktır konseptlere aşinalık olmadığından.
    Durum bu.
  • 05-12-2023, 15:13:33
    #6
    Peki önerdiğiniz kütüphaneler neler? Bana en iyi performansı verecek olan hangisi olur? Benim mevcut MySQL veritabanım 3,5 MB boyutunda. Buna göre bir öneri bekliyorum.
  • 05-12-2023, 15:14:17
    #7
    Veri yapıları ve algoritmalar hakkında detaylı bilgi sahibi olunduktan sonra bu konulara girmek daha iyi olur gibi geliyor. Mevcut olanların mimarilerini inceleyin. Nasıl yapacağınıza karar verdikten sonra neyle yapılacağı çok sorun olmaz.