Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Nerede ne tutulur

Çift kayıt yok, çift soru var

Aynı kavram bazen iki yerde görünür. Bu hata değil: biri kart, biri hareket veya anlık kopyadır.

Hızlı tablo

KavramAsıl kayıtHareket / belgeKopya / indeks
KullanıcıMySQL UserMongo userLogsSiparişte UserCopy
AlıcıMySQL BuyerCRM ve grup değerlendirmeSiparişte BuyerCopy
ÜrünMySQL Product (+ seçenekler)—Sipariş kalemi, MeiliSearch
Depo stok miktarıMySQL WarehouseProduct.stockMongo giriş/çıkışSipariş kalemindeki referanslar
Cari bakiyeMySQL FinancialAccount.balanceMongo accountTransactions—
Kasa / bankaMySQL MoneyAccountMySQL MoneyMovement—
GiderMySQL ExpenseMySQL PayablePayment ile ödeme bağı—
SepetMySQL ProductBasketSipariş oluşunca silinir—
Sipariş—Mongo buyerOrdersBigQuery orders
Ödeme işlemi—Mongo paymentsSiparişte purchase.payment ref
FaturaMySQL sıra numarasıMongo invoicesSiparişte invoice özeti
AramaMySQL ürün/fiyat kartları—v1: MeiliSearch product; v2: doğrudan sorgu
Push jetonuMySQL UserDevice—UserCopy.devices

Neden sipariş MySQL’de değil?

Bir sipariş kalem, teslimat, ödeme kırılımı, geçmiş, fatura özeti ve transfer bağlantısını tek belge olarak taşır. İlişkisel tablolara bölmek N+1 ve şema evrimi maliyeti doğurur. Bu yüzden yaşam döngüsü Mongo’dadır.

Neden bakiye MySQL’de?

Bakiye sık okunur, tek sayıdır, kullanıcı+depo ile tektir. Defter ise append-only belgedir. Okuma bakiyeden, tartışma defterden yapılır. Defterdeki balance alanı o hareketten sonraki bakiyenin anlık görüntüsüdür.

Geçiş boyunca v1 financial yolları da v2 LedgerService yolları da Mongo accountTransactions ve MySQL FinancialAccount.balance üzerinde çalışır. LedgerService, platformun değil v2 içindeki cari yazmalarının tek kapısıdır.

Gömülü kopya ne demek?

Sipariş yazılırken alıcı adı, depo adı, ürün birimi belgenin içine kopyalanır. Ertesi gün ürün adı değişse eski sipariş eski adla kalır. Güncel kart her zaman Prisma’dadır.

MeiliSearch

v1'de indeks ürün araması içindir; sipariş araması değildir. Saatlik tam yenileme üretimde Prisma’dan okuyup indeksi baştan kurar. Anlık güncelleme product.upsert / product.deleted olaylarıyladır.

v2 yeni mobil kataloğu MeiliSearch kullanmaz. Ürün araması ProductSearchDecider kurallarıyla doğrudan MySQL verisi üzerinde yapılır; sepet ve sipariş de aynı fiyat/satılabilirlik kararlarını kullanır.