Filtreleme
Curvhex ORM iki kategori filtre destekler: zincir üstü (memcmp olarak RPC'ye gönderilir) ve istemci taraflı (çekildikten sonra uygulanır).
Zincir Üstü ve İstemci Taraflı
| Filtre | RpcAdapter | HeliusAdapter | PostgresAdapter |
|---|---|---|---|
Eşitlik (alan: değer) | ✅ memcmp | ✅ | ✅ |
Aralık (gt, gte, lt, lte) | ⚠️ istemci taraflı | ✅ | ✅ |
Küme (in, not) | ⚠️ istemci taraflı | ✅ | ✅ |
between | ⚠️ istemci taraflı | ✅ | ✅ |
Zincir üstü filtreler (eşitlik) RPC'ye memcmp kısıtlaması olarak gönderilir — yalnızca eşleşen hesaplar aktarılır. Hızlı ve verimlidir.
İstemci taraflı filtreler önce zincir üstü filtreleri geçen tüm hesapları çekmeyi, ardından bellekte filtrelemeyi gerektirir. En iyi performans için zincir üstü eşitlik filtreleriyle istemci taraflı aralık filtrelerini birleştir.
Eşitlik Filtreleri
Tam eşleşme için doğrudan bir değer ilet. Tüm ilkel alan türlerinde desteklenir.
where: {
isActive: true,
tier: 2,
authority: 'Abc123...',
}Aralık Operatörleri
Sayısal alanlar için kullanılabilir (u8–u128, i8–i128).
where: {
balance: { gt: 1000n },
balance: { gte: 1000n },
balance: { lt: 50000n },
balance: { lte: 50000n },
}between
gte + lte için kısaltma.
where: {
balance: { between: [1000n, 50000n] },
}in
Bir kümedeki herhangi bir değerle eşleşir.
where: {
tier: { in: [1, 2, 3] },
}not
Belirli bir değeri hariç tutar.
where: {
tier: { not: 0 },
}dataSize
Hesap verisinin bayt boyutuna göre filtrele.
const users = await orm.models.userAccount.findMany({
dataSize: 165,
})Performans İpuçları
- Eşitlik filtrelerini tercih et — ücretsizdir (zincir üstü). Aralık filtreleri tüm eşleşen hesaplar için ağ gidiş-dönüşü maliyeti getirir.
- Ölçek için adaptör değiştir —
HeliusAdapterveyaPostgresAdapteraralık sorgularını sunucu tarafında çalıştırır.