مرجع سريع

ورقة غش التخزين الداخلي Erlang ETS

دليل مرجعي سريع لذاكرة Erlang ETS في Elixir و Erlang: إنشاء الجداول، صلاحيات الوصول، أنواع الجداول (set و ordered_set و bag)، والبحث.

· تاريخ النشر

ETS (Erlang Term Storage) هي قاعدة بيانات مفتاح-قيمة مدمجة بالكامل وسريعة جدا داخل بيئة تشغيل Erlang/OTP (BEAM)، ويمكن الوصول إليها مباشرة في كل من Elixir و Erlang.

🔗 مراجع ذات صلة: ورقة غش لغة البرمجة Elixir

إنشاء الجدول والعمليات الأساسية (Table Initialization & Basic Operations)

# إنشاء جدول مسمى جديد
table = :ets.new(:user_cache, [:set, :public, :named_table])

# إدراج سجلات (Tuples) في الجدول
:ets.insert(:user_cache, {:user_1, "Alice", 30})
:ets.insert(:user_cache, {:user_2, "Bob", 25})

# البحث عن السجلات بواسطة المفتاح
result = :ets.lookup(:user_cache, {:user_1})
# => [{:user_1, "Alice", 30}]

# حذف سجل محدد أو مسح كافة الكائنات
:ets.delete(:user_cache, :user_1)
:ets.delete_all_objects(:user_cache)

# تدمير الجدول بالكامل من الذاكرة
:ets.delete(:user_cache)

أنواع الجداول (Table Types)

تحديد سلوك الجدول عبر خيارات الإنشاء:

Type Duplicate Keys Ordering Notes
:set No Unordered النوع الافتراضي؛ المفتاح هو العنصر الأول؛ غير مرتب
:ordered_set No Ordered المفاتيح مرتبة حسب ترتيب مصطلحات Erlang؛ بحث سريع O(log N)
:bag Yes Unordered يسمح بتكرار المفاتيح المتطابقة ولكن يمنع تطابق السجل كاملا
:duplicate_bag Yes Unordered يسمح بالسجلات المتطابقة تماما دون أي قيود

ضوابط الوصول وصلاحيات العمليات (Access Controls)

  • :protected: يمكن لكافة العمليات القراءة؛ عملية المالك فقط يمكنها الكتابة (الافتراضي).
  • :public: يمكن لأي عملية في النظام القراءة والكتابة بالتزامن.
  • :private: عملية المالك فقط يمكنها القراءة والكتابة.

التنقل عبر جداول :ordered_set (Traversal)

# دوال التنقل التسلسلي بين المفاتيح
first_key = :ets.first(:user_cache)
next_key  = :ets.next(:user_cache, first_key)
prev_key  = :ets.prev(:user_cache, next_key)
last_key  = :ets.last(:user_cache)

موضوعات ذات صلة