Sattığım ürünlerin durumları var ve bu ürünlerin ne zaman hangi durumda olduklarını öğrenebilmem gerekiyor.
Bunun için şöyle bir şey düşündüm; bir tablo açayım
Schema::create('key_status_histories', function (Blueprint $table) {
$table->id();
$table->foreignId('key_id')->index();
$table->dateTime('date')->index();
$table->foreignId('order_id')->index()->nullable();
$table->enum('status', array_column(KeyStatus::cases(), 'value'))->index();
$table->softDeletes();
$table->timestamps();
});
durumları buraya kaydedeyim değiştikçe.
İlişkilerden kısaca bahsetmem gerekirse de ;
Order has many OrderItems
Order Item belogsto Game
Game has many Keys => Key belongs to Game
Ben order modelde hangi keyler satılmış sorusu için "keys" hangi oyunlardan satılmış sorusu için;
Order => OrderItem => Game ilişki yolunu izleyerek cevap veriyorum.
Bu tabloyu olştutrurken benim hedeflediklerim şunlar ;
1-bana şu key şu zaman ne durumda idi kontrolü yapmam gerektiğinde bana cevap versin
2-dashboard sayfam için bana bu gün, bu hafta ve bu ay içinde en çok satış yapılan oyun isimlerini bana versin
bu tablonun bu amçlarımı gerçekleştireceğinden eminim, fakat satılan ürün sayım şuan 1 milyonun üstünde buradan bu tabloya ürün satılana kadar 3 değişiklik yapıldığını varsayarsak en iyi ihtimalle 3 milyon data olacağını ön görüyorum ben dashbord sayfamı açarken db den alırken zorlanabileceğini sürenin uzun olcağını düşünüyorum
Bunun için şöyle bir düşüncem var ben hem buraya hem de cacheye aynı bu tablo yapısında veri yazayım buradan işlem yapayım düşüncesindeyim, hem tabloya hem cacheye yazmamdaki amaç şu hızzlı cevap vermek istediğim her yerde cacheyi kullanayım eğer olası bir cache imin kaybolması durumunda bu tabloyu kullanayım sizin bu konuda fikriniz ve tavsiyeleriniz nelerdir ?
İyi çalışmalar ...