usemidb
v0.1.3
Published
Basit, güvenli ve TTL destekli JSON tabanlı Node.js veritabanı
Downloads
249
Maintainers
Readme
UsemiDB 🚀
UsemiDB, Node.js projeleri için hafif, yüksek performanslı ve JSON tabanlı bir key-value database sistemidir. TTL (Zaman aşımı), Snapshot (Yedekleme), gelişmiş arama ve matematiksel operasyonları ile basit projelerden karmaşık bot/oyun sistemlerine kadar her yerde kullanılabilir.
⚡ Temel Özellikler
- 📦 Key-Value Store: Klasik
set,get,delete,hasişlemleri. - 🛡️ Snapshot & Restore: İstediğiniz an veritabanının yedeğini alın (
backup) ve tek komutla geri dönün (restore). - 🔎 Gelişmiş Arama:
findvefindOneile obje özelliklerine göre hızlıca veri bulun. - ✖️➗ Matematik Seti:
add,subtract,multiply,divideile bakiye ve puan yönetimi. - ✨ Akıllı Listeler:
pushile ekleme,pushUniqueile tekrarsız ekleme vepullile silme. - 🎲 Random: Veritabanından rastgele tekli veya çoklu veri çekme.
- ⏳ TTL Desteği: Verilere ömür biçin, süresi dolunca otomatik silinsin.
- 📁 Collections: Verilerinizi namespace (koleksiyon) bazlı gruplandırın.
- 📡 Event Sistemi: Değişiklikleri (
set,delete,renamevb.) anlık dinleyin. - ⚡ Performans:
writeDelay(Debounce) sistemi ile diski yormadan toplu yazma.
💻 Kurulum
npm install usemidb🔹 Örnek Kullanım
const UsemiDB = require("usemidb");
const db = new UsemiDB({
filePath: "./database/data.json", // Kayıt dosyası
autoSave: true, // Otomatik kaydetme
writeDelay: 100, // Performans için yazma gecikmesi (ms)
autoCleanInterval: 60000 // TTL temizleme aralığı (ms)
});
(async () => {
// 🟢 Basit Veri Kaydı (TTL: 10 saniye)
await db.set("user_1", { name: "Lorely", role: "admin" }, 10000);
const user = db.get("user_1");
console.log(user); // { name: "Lorely", role: "admin" }
// 🟢 Matematiksel İşlemler (Topla, Çıkar, Çarp, Böl)
await db.set("bakiye", 100);
await db.add("bakiye", 50); // 150
await db.subtract("bakiye", 20); // 130
await db.multiply("bakiye", 2); // 260 (2 ile çarp)
await db.divide("bakiye", 2); // 130 (2'ye böl)
console.log(db.get("bakiye")); // 130
// 🟢 Gelişmiş Arama (Find & FindOne)
// Rolü 'admin' olanları bul
const admins = db.find({ role: "admin" });
console.log(admins); // [{ key: "user_1", value: { ... } }]
// İsmi 'Lorely' olan tek bir kişiyi bul
const lorely = db.findOne({ name: "Lorely" });
console.log(lorely);
// 🟢 Liste (Array) İşlemleri
await db.push("etiketler", "javascript");
await db.push("etiketler", "nodejs");
await db.push("etiketler", "python");
// Listeden eleman silme (pull)
await db.pull("etiketler", "python");
console.log(db.get("etiketler")); // ["javascript", "nodejs"]
// 🟢 Rastgele Veri Çekme (Random)
// Çekilişler veya rastgele eşya sistemleri için idealdir.
const randomUser = await db.random();
console.log(randomUser); // Tek bir rastgele değer döner.
const luckyWinners = await db.random(3);
console.log(luckyWinners); // Rastgele 3 değerden oluşan bir liste döner.
// 🟢 Toggle (Aç/Kapat)
// "bakim_modu" yoksa oluşturur ve true yapar, varsa tersine çevirir.
await db.toggle("bakim_modu");
console.log(db.get("bakim_modu")); // true
// 🟢 Rename (Anahtar Adı Değiştirme)
await db.rename("user_1", "admin_1");
console.log(db.get("admin_1")); // { name: "Lorely", ... }
// 🟢 Akıllı Listeler (Arrays)
// Tekrarsız ekleme (admin rolü varsa bir daha eklemez)
await db.pushUnique("roller", "admin");
await db.pushUnique("roller", "admin"); // İşlem yapmaz
// Listeden eleman silme
await db.pull("roller", "admin");
// 🟢 Yedekleme & Geri Yükleme (Snapshot)
// Büyük bir işlemden önce yedek al
await db.backup("versiyon_1_yedek");
// Verileri boz veya sil...
await db.clear();
// Yedeğe geri dön
await db.restore("versiyon_1_yedek");
})();🗂️ Collection (Namespace) Kullanımı
Verilerinizi kategorize etmek (örn: kullanıcılar, sunucular, ayarlar) için collection sistemini kullanabilirsiniz.
// "users" adında bir koleksiyon oluştur
const users = db.collection("users");
// Veriler otomatik olarak "users:ahmet" şeklinde saklanır
await users.set("ahmet", { age: 25, role: "user" });
// Koleksiyon içinde arama yap
const result = users.find({ age: 25 });
console.log(result);
// Koleksiyona özel matematik işlemi
await users.add("ahmet_para", 500);
// Sadece bu koleksiyondaki verileri çek
console.log(users.all());📡 Event (Olay) Sistemi
Veritabanında gerçekleşen değişiklikleri dinleyebilirsiniz.
db.on("set", (key, value) => {
console.log(`[KAYIT] ${key} eklendi:`, value);
});
db.on("expired", (key) => {
console.log(`[SİLİNDİ] ${key} süresi doldu.`);
});
db.on("rename", (oldKey, newKey) => {
console.log(`[DEĞİŞTİ] ${oldKey} -> ${newKey} oldu.`);
});📊 İstatistikler
console.log(db.stats());
/* Çıktı:
{
totalKeys: 15,
keysWithTTL: 2,
expiredCount: 0,
fileSize: 1024,
memSize: 512,
uptimeMs: 5200
}
*/💻 Kurulum
npm install usemidb