فيلا → ذاكرة التخزين المؤقت الذكية لسلسلة زمنية وليس فقط

في مجال التكنولوجيا المالية ، غالبًا ما يتعين علينا معالجة كميات هائلة جدًا من بيانات أسعار صرف العملات. نحصل على بيانات من مصادر مختلفة ، ولكل منهم فكرته الخاصة حول كيفية استقراء معدلات الغد ، وبعد غد ، والشهر التالي وحتى السنوات الثلاث المقبلة. إذا عرف شخص ما كيفية التنبؤ بالدورات بشكل صحيحسيكون من الصحيح إغلاق العمل وتغيير الأموال بغباء ذهابًا وإيابًا. بعض المصادر أكثر جدارة بالثقة ، وبعضها يزود بالقمامة تمامًا ، مع شوائب نادرة من القيم الصحيحة تقريبًا ، ولكن للأزواج الغريبين. تتمثل مهمتنا في فحص عشرات الآلاف من القيم في الثانية وتحديد ما يجب إظهاره للعملاء. نحن بحاجة إلى تصفية القيمة الصحيحة الوحيدة من طن من الأوساخ والطمي ، مثل طيور النحام في العشاء.



فلامنغو



من السمات المميزة الخاصة لطيور النحام هي منقارها الضخم والمنحني ، الذي يساعدهم على تصفية الطعام من الماء أو الطمي.

 -  ويكي

Vela, . , N ( , ).



, . Vela - :



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




Vela.put/3 :



  • validator , (. );
  • , , :__errors__ ;
  • sorter , (LIFO, . );
  • :limit ;
  • Vela.


iex|1 > pairs = %Pairs{}
iex|2 > Vela.put(pairs, :eurcad, 1.0)
#⇒ %Pairs{..., eurcad: [1.0], ...}
iex|3 > Vela.put(pairs, :eurcad, -1.0)
#⇒ %Pairs{__errors__: [eurcad: -1.0], ...}
iex|4 > pairs |> Vela.put(:eurusd, 2.0) |> Vela.put(:eurusd, 1.0)
#⇒ %Pairs{... eurusd: [1.0, 2.0]}


Vela Access, Kernel: Kernel.get_in/2, Kernel.put_in/3, Kernel.update_in/3, Kernel.pop_in/2, and Kernel.get_and_update_in/3.





:



  • (&MyMod.my_fun/1), ;
  • , &MyMod.my_fun/2, serie, value ;
  • , Vela.Validator;
  • threshold,  —  — compare_by, . Comparison .


, , {serie, value} :__errors_.





, , . Vela , compare_by ( Kernel.</2); (Vela.value() -> number()). & &1.



, comparator (min/max); , Date.diff/2 , .



threshold, {min, max} . , comparator, compare_by. , , compare_by: &DateTime.to_unix/1 ( ) threshold: 1, , ±band .



, Vela.equal?/2 . equal?/2 compare/2, , ==/2.





Vela.purge/1, ( validator timestamps). Vela.slice/1, keyword , .



get_in/2/pop_in/2 .





Vela GenServer/Agent. , , Vela, , .



@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
  do: Rate.age(rate) < @death_age


Vela.purge/1 , . Vela.slice/1, ( ),  —  — .








!




All Articles