• 03-03-2026, 21:45:21
    #1
    Selamlar,

    Elimizde teslim etmem gereken maillerim olsun.
    emailassword:refherstoken:clientid
    Bu formatda vermem gerekiyor.
    Şimdi bir kullanıcı tek siparişte 100 tane de verebiliyor,500 tane de.
    Şuanda text yöntemiyle yapıyorum örneğin text olarak database açıyorum ve o text'den verileri regexliyorum ama bu çok sağlıklı değil gibi geliyor.
    Ama örneğin order_id = 1 için 100 tane hesap aldıysa 100 tane satır açıp her satıra bir hesap verip eşleştirmeyi de order_id'den yaparsam da çok fazla satır olması gerekiyor gibi geliyor.
    Bunlar yerine en mantıklsıı nasıldır?
    Bir örnekle anlatabilir misiniz?
    Teşekkürler.
  • 03-03-2026, 21:50:32
    #2
    Yazılım & Reklam
    CREATE TABLE orders (
        order_id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE accounts (
        id INT PRIMARY KEY AUTO_INCREMENT,
        order_id INT,
        email VARCHAR(255),
        pass VARCHAR(255),
        token VARCHAR(255),
        clientid VARCHAR(255),
        FOREIGN KEY (order_id) REFERENCES orders(order_id)
    );
  • 03-03-2026, 21:51:10
    #3
    Gold üye
    SQL şablonunda en sağlıklı yapı, her hesabı "order_id" ile ilişkilendirilmiş ayrı bir satır olarak tutmaktır. İlk olarak bir orders tablosuyla genel sipariş bilgilerini, ardından "order_accounts" tablosuyla bu siparişe ait her bir mail verisini (email, password, token, client_id) kendi sütunlarında saklamalısın. Bu yapı sayesinde milyonlarca satır olsa dahi SELECT * FROM order_accounts WHERE order_id = 1 sorgusuyla ilgili tüm hesaplara anında ulaşabilir, verileri regex ile ayıklama zahmetinden ve hata payından tamamen kurtulmuş olursun. Kolay gelsin.
  • 03-03-2026, 21:51:39
    #4
    gemini şunu dedi
    Selam! İşin özü şu:
    Metin (text) tutup regex ile veri çekme işini boşver, ileride başını çok ağrıtır. Şifrelerin içinde özel karakter falan olursa sistemin patlama riski yüksek.
    "Binlerce satır olur, veritabanı yorulur mu?" diye hiç korkma. Veritabanlarının varoluş amacı bu zaten; milyonlarca satırı çerez niyetine saniyeler içinde işlerler.
    En temiz ve profesyonel yol: Bir Hesaplar tablosu aç ve elindeki tüm hesapları alt alta ayrı birer satır olarak ekle. Müşteri 100 hesap mı sipariş etti? Boştaki 100 hesabı bulup veritabanındaki Sipariş_ID sütununa o siparişin numarasını yaz. Bitti gitti!
    Bu sayede;
    • Kaç hesabın kaldığını tek saniyede görürsün.
    • Müşteriye giden hesaplardan biri bozuk çıkarsa, sadece o satırı bulup anında müdahale edersin.
  • 03-03-2026, 22:02:40
    #5
    Rewora adlı üyeden alıntı: mesajı görüntüle
    CREATE TABLE orders (
        order_id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE accounts (
        id INT PRIMARY KEY AUTO_INCREMENT,
        order_id INT,
        email VARCHAR(255),
        pass VARCHAR(255),
        token VARCHAR(255),
        clientid VARCHAR(255),
        FOREIGN KEY (order_id) REFERENCES orders(order_id)
    );
    Peki her hesap için 1 satır açarsam,kısa süre içerisinde database şişmez mi?
    Çünkü burada günlük 100K civarında satır oluşması anlamına gelecek.
  • 03-03-2026, 22:06:26
    #6
    Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.
    Yazılım & Reklam
    soylenmezsmt adlı üyeden alıntı: mesajı görüntüle
    Peki her hesap için 1 satır açarsam,kısa süre içerisinde database şişmez mi?
    Çünkü burada günlük 100K civarında satır oluşması anlamına gelecek.
    Hayır, şişmez. 100K row/gün modern DB (MySQL/PostgreSQL) için çok normal.
    Yıllık 40M row bile sorun değil, index + partition ile hızlı kalır hocam
    İyi çalışmalar dilerim.
  • 03-03-2026, 22:09:00
    #7
    Rewora adlı üyeden alıntı: mesajı görüntüle
    Hayır, şişmez. 100K row/gün modern DB (MySQL/PostgreSQL) için çok normal.
    Yıllık 40M row bile sorun değil, index + partition ile hızlı kalır hocam
    İyi çalışmalar dilerim.
    Çok teşekkür ediyorum.
  • 03-03-2026, 22:11:43
    #8
    Her satıra son güncellenme tarihini de ekleyin, satışın üzerinden 3 ay 5 ay geçtikten sonra tek sorgu ile silersiniz eğerki yavaşlama veya boyut sorunu oluşursa.