Di fintech de, em bi gelemperî neçar in ku cildên pir girseyî yên daneyên rêjeya danûstendina diravê bişopînin. Em daneyan ji çavkaniyên cihêreng distînin, û her yek ji wan ramana xwe heye ka meriv çawa rêjeyên danûstendinê ji bo sibe, piştî sibe, meha pêş û hetta sê salên pêş de vedihewîne. Ger tenê kesek bikaribe rêjeyan pêşbîn bike rast, ew ê dem be ku meriv karsaziyê bigire û tenê bi ehmeqî drav û paş ve biguhezîne. Hin çavkanî pêbawertir in, hin çopê bêkêmasî peyda dikin, bi tevlêbûna kêm kêm nirxên hema rast, lê ji bo zewacên biyanî. Karê me ev e ku em van deh hezaran nirxan di çirkeyê de bişopînin û diyar bikin ka bi rastî çi ji xerîdaran re nîşan bidin. Pêdivî ye ku em yek nirxa rast ji tonên ax û siltê fîltre bikin, mîna ku flamîngo di firavînê de dikin.
Taybetmendiyek cihêreng a flamîngoyan bejna wan a girs a ber bi xwarê ye, ku bi wê re ew xwarinê ji av an heriyê parz dikin.
- Wiki
Bi vî awayî pirtûkxane çêbû Vela, ku ji bo gelek nirxan di navberên dema diyarkirî de cacheya dewletê hilîne. Di binê kapê de, ew daneyên xirab û kevnar di firînê de fîlter dike, û di heman demê de gihîştina herî dawî peyda dike N nirxên pejirandî ji bo her mifteyê (di doza me de cotên diravî).
Ka em bêjin em rêjeyên sê cotên dirav berhev dikin. Pênaseya herî hêsan Vela ji bo hilanîna rewşa heyî ew ê tiştek wusa xuya bike:
defmodule Pairs do
use Vela,
eurusd: [sorter: &Kernel.<=/2],
eurgbp: [limit: 3, errors: 1],
eurcad: [validator: Pairs]
@behaviour Vela.Validator
@impl Vela.Validator
def valid?(:eurcad, rate), do: rate > 0
end
dê bibe sedema validator li ser nirxê, heke yek were diyar kirin (binihêre beş Validation jêrîn);
heke erêkirin serketî bû, dê nirxê an li rêza nirxên baş zêde bike, an jî li rêza karûbarê :__errors__ wekî din;
dê bibe sedema sorkirinê eger sorter ji bo mifteyek diyarkirî tête diyar kirin, an dê bi tenê nirxê bide serê navnîşê (LIFO, li beşê binêre Sort jêrîn);
dê rêzê li gorî pîvanê bibire :limit li ser afirandinê derbas bû;
parametre veavakirina threshold, û - vebijarkî - compare_by, li beşê binêre Mûqayese jêrîn.
Ger erêkirin serketî be, nirx li navnîşê di binê mifteya têkildar de tê zêdekirin; Wekî din, tîrêjê {serie, value} diçe :__errors_.
Comparison
Nirxên ku di van rêzan de têne hilanîn dikarin her tişt bin. Ji bo hînkirinê Vela ji bo berhevdana wan, ew hewce ye ku veguherîne compare_by parametre di pênaseya rêzê de (heya ku nirx bi standard re neyên berhev kirin Kernel.</2); divê ev parametre ji cureyê be (Vela.value() -> number()). Bi xwerû ew hêsan e & &1.
Di heman demê de, hûn dikarin pîvanek ji pênase rêzê re derbas bikin comparator ji bo hejmartina nirxên delta (min/max); ji bo nimûne, bi veguhestinê Date.diff/2 wekî berhevkar, hûn dikarin deltayên rast ji bo tarîxan bistînin.
Rêbazek din a hêsan a xebatê derbaskirina pîvanek e threshold, ku rêjeya herî zêde ya destûr a nirxa nû diyar dike {min, max} navber. Ji ber ku ew wekî sedî tête diyar kirin, kontrol nayê bikar anîn comparatorlê dîsa jî bikar tîne compare_by. Mînakî, ji bo destnîşankirina nirxek sînor ji bo demên tarîxê, divê hûn diyar bikin compare_by: &DateTime.to_unix/1 (ji bo bidestxistina nirxek yekjimar) û threshold: 1, dibe sedem ku nirxên nû tenê heke tê de bin destûr bidin ±band navber ji nirxên heyî.
Di dawiyê de, hûn dikarin bikar bînin Vela.equal?/2 ji bo berhevdana du cache. Ger nirx fonksiyonek diyar dikin equal?/2 an compare/2, wê hingê dê van fonksiyonan ji bo berhevdanê werin bikar anîn, wekî din em bi ehmeqî bikar tînin ==/2.
Bidestxistina nirxan
Pêvajoya rewşa heyî bi gelemperî bi bangkirinê dest pê dike Vela.purge/1, ku nirxên kevnar jê dike (heke validator ve girêdayî ye timestamps). Hingê hûn dikarin telefon bikin Vela.slice/1ku dê vegere keyword bi navên rêzan wekî mifteyên û yekem, nirxên rastîn.
Hûn jî dikarin bikar bînin get_in/2/pop_in/2 ji bo gihîştina asta nizm a nirxên di her rêzê de.
App
Vela dikare di rewşek pêvajoyê de wekî cache-ya rêza demê pir bikêr be GenServer/Agent. Em dixwazin tu carî nirxên qursê yên kevnar bikar neynin û ji bo vê yekê em tenê pêvajoya bi dewletê re bi rê ve dibin Vela, bi erêkerê ku li jêr tê xuyang kirin.
и Vela.purge/1 her gava ku em hewceyê daneyê bi bêdengî hemî nirxên kevnar radike. Ji bo gihîştina nirxên rastîn em tenê gazî dikin Vela.slice/1, û gava ku dîrokek piçûk a qursê hewce ye (tevahiya rêzê), em bi tenê wê - jixwe veqetandî - bi nirxên pejirandî vedigerînin.