Sobes.tech
Junior

Veritabanlarıyla çalışmak için hangi araçları veya teknolojileri kullanıyorsunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Node.js ile veritabanlarıyla çalışmak için aşağıdaki araçları ve teknolojileri kullanıyorum:

  • ORM/ODM:
    • Sequelize: İlişkisel veritabanları (PostgreSQL, MySQL, SQLite, SQL Server) için. Nesneleri ilişkisel tablolara eşleme, işlemler, göçler ve doğrulama için güçlü bir fonksiyon seti sağlar.
    • Mongoose: MongoDB veritabanları için. Nesne-belge eşleme, veri şemaları, doğrulama, sorgular.
  • Veritabanı istemcileri:
    • pg: PostgreSQL için yerel istemci.
    • mysql2: mysql'e kıyasla daha modern ve hızlı MySQL istemcisi.
  • Göç araçları:
    • sequelize-cli: İlişkisel veritabanları için göçleri yönetmekte kullanılır.
    • migrate-mongo: MongoDB göçlerini yönetmek için araç.
  • Veritabanı yönetim araçları (GUI):
    • DBeaver: Farklı veritabanı türleri için evrensel araç.
    • MongoDB Compass: MongoDB için resmi GUI.
  • Önbellekleme:
    • Redis: Veritabanından alınan verileri önbelleğe almak için sık kullanılır, bu da ana veritabanı üzerindeki yükü azaltır ve yanıt sürelerini hızlandırır.

Sequelize kullanımı örneği:

const { Sequelize, DataTypes } = require('sequelize');

// Veritabanına bağlanma
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'postgres' // veya 'mysql', 'sqlite', 'mssql'
});

// Model tanımı
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull varsayılan olarak true'dur
  }
}, {
  // Diğer model seçenekleri
});

// Modeli veritabanıyla senkronize et
async function syncDatabase() {
  await User.sync({ force: true }); // 'force: true' tabloyu siler ve yeniden oluşturur
  console.log("Veritabanı senkronize edildi!");
}

// Sorgu örneği
async function findUser() {
  const users = await User.findAll();
  console.log(users.map(user => user.toJSON()));
}

// syncDatabase();
// findUser();

Mongoose kullanımı örneği:

const mongoose = require('mongoose');

// MongoDB'ye bağlan
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// Şema tanımı
const userSchema = new mongoose.Schema({
  name: String,
  age: Number
});

// Model oluştur
const User = mongoose.model('User', userSchema);

// Belge oluşturma örneği
async function createUser() {
  const user = new User({ name: 'Alice', age: 30 });
  await user.save();
  console.log('Kullanıcı kaydedildi!');
}

// Sorgu örneği
async function findUsers() {
  const users = await User.find({ age: { $gte: 25 } });
  console.log(users);
}

// createUser();
// findUsers();

Belirli bir aracın seçimi, veritabanı türüne (ilişkisel veya NoSQL), projenin soyutlama ve sorgu karmaşıklığı gereksinimlerine ve ekibin tercihlerine bağlıdır.