Ben mümkün olduğunca SQL içine görevin kadar iterek gibi yöneticileriniz mümkün oluşturmaya çalışıyorum bir online çekiliş dolandırıcılık algılama açısından alışılmadık bir istemci isteği yaşadım.
Bu durumda, yapı olup:
table: codes raffle_code | ticket_type | sequence A00000001 Red 1 A00000002 Red 2 ... A0000000X Red X B00000001 Blue 1 etc
X ticket_types, bu kendi dizisi her olabilir. Çekiliş kodları benzersiz sağlamalarının vardır, ben sadece örneğin basitleştirilmiş ettik.
Şimdi sorun bu kodları rastgele verilen olmasıdır ve onlar sırayla girilen herhangi bir olay (muhtemelen) hileli olduğunu. Kodlarının girilmiş böylece gibi bir işlem dosyasına kaydedilir:
table: transactions user_id | raffle_code | transaction_number | timestamp 1 A00000032 1 etc...
İstenilen kuralı verilen bir tür fazla 5 çekiliş kodları, 100 işlemlerin belirli bir kümesi içinde sırayla girilen eğer şüpheli ve katılan kullanıcıların çekilmiş olması gerektiğidir.
Benim intial düşünce ayrı ayrı her bir dolandırıcılık olayı için sahte kullanıcı işlemleri kepçe sonra, ilk dolandırıcılık olayları algılamak girişimi oldu. Ben düşünüyordum kaba SQL gibi bir şey oldu:
SELECT c.raffle_code, MIN(t.timestamp), MAX(t.timestamp), MIN(t.transaction_number), MAX(t.transaction_number) FROM codes c, transactions t WHERE c.raffle_code = t.raffle_code GROUP BY c.raffle_code HAVING ( MAX(c.sequence) - MIN(c.sequence) ) = ( COUNT(*) -1 ) AND ( MAX(t.transaction_number) - MIN(t.transaction_number) ) 4;
(Bell üzerinde sayesinde this question fikrini kıvılcım için)
Bu kullanıcı kimlikleri için yeniden sorgu için işlem dosyasında yer (transaction_number aralık ve zaman damgası aralık) verecek. Bu dolandırıcılık ilan edilecek bir şüpheli olay eyes-on doğrulama gerektirir, ama şu anda sistemin kabul edilen bir uyarıdır.
Dizisi ile "kırmızı" bilet "3,4,5,6,7,48" it aralığı olarak tespit değil, belirli bir 100 işlemlerde meydana 45 ise yukarıdaki SQL ile sorun çok daha büyük olan, bir 6 saymak ve bu nedenle biletleri rastgele girilen olsaydı beklenen bir oluşumu gibi.
Işlem dosyası oldukça büyük olması ve sık hit olması mukadder, bu yüzden bunun üzerinden almak ve işlem oluşturmak için sunucu kodu kullanarak bir anda o 100 işlemlerin dredging analiz etmek çok inefficent olacaktı yığınlarının edilir.
Herkes önce böyle bir şey karşılaştı? Müşteri hala çok kısa bir metin Kısaca dışında kendi gereksinimleri ile oldukça belirsiz olmuştur, bu yüzden ben de sıralı girişini tespit için alternatif kavramları eğlenceli ediyorum.