الانتقال إلى المحتوى الرئيسي

range_hashed

يُخزَّن القاموس في الذاكرة على شكل جدول تجزئة يتضمن مصفوفة مرتبة من النطاقات والقيم المقابلة لها. تعمل طريقة التخزين هذه بالطريقة نفسها التي تعمل بها hashed، وتتيح استخدام نطاقات التاريخ/الوقت (أي نوع رقمي) بالإضافة إلى المفتاح. مثال: يحتوي الجدول على خصومات لكل مُعلِن بالتنسيق التالي:
لاستخدام عيّنة مع نطاقات التاريخ، حدِّد العنصرين range_min وrange_max في البنية. يجب أن يحتوي هذان العنصران على name وtype (إذا لم يتم تحديد type، فسيُستخدم النوع الافتراضي - Date). ويمكن أن يكون type أي نوع رقمي (Date / DateTime / UInt64 / Int32 / غيرها).
يجب أن تلائم قيمتا range_min وrange_max النوع Int64.
مثال:

للعمل مع هذه القواميس، تحتاج إلى تمرير وسيطة إضافية إلى الدالة dictGet يُختار النطاق على أساسها:
مثال على الاستعلام:
تُرجع هذه الدالة القيمة الخاصة بـ id المحددة ونطاق التاريخ الذي يشمل التاريخ المُمرَّر. تفاصيل الخوارزمية:
  • إذا لم يتم العثور على id، أو لم يتم العثور على نطاق لهذا id، فإنها تُرجع القيمة الافتراضية لنوع السمة.
  • إذا كانت هناك نطاقات متداخلة وكان range_lookup_strategy=min، فإنها تُرجع نطاقًا مطابقًا بأصغر range_min، وإذا عُثر على عدة نطاقات، فإنها تُرجع نطاقًا بأصغر range_max، وإذا عُثر مرة أخرى على عدة نطاقات (أي كانت عدة نطاقات لها range_min وrange_max نفسيهما)، فإنها تُرجع نطاقًا عشوائيًا منها.
  • إذا كانت هناك نطاقات متداخلة وكان range_lookup_strategy=max، فإنها تُرجع نطاقًا مطابقًا بأكبر range_min، وإذا عُثر على عدة نطاقات، فإنها تُرجع نطاقًا بأكبر range_max، وإذا عُثر مرة أخرى على عدة نطاقات (أي كانت عدة نطاقات لها range_min وrange_max نفسيهما)، فإنها تُرجع نطاقًا عشوائيًا منها.
  • إذا كانت قيمة range_max هي NULL، فسيكون النطاق مفتوحًا. وتُعامَل NULL على أنها أكبر قيمة ممكنة. ويمكن استخدام 1970-01-01 أو 0 (-MAX_INT) مع range_min باعتبارها القيمة المفتوحة.
مثال على الإعداد:

مثال على التهيئة مع نطاقات متداخلة ونطاقات مفتوحة:

complex_key_range_hashed

يُخزَّن القاموس في الذاكرة على هيئة جدول تجزئة مع مصفوفة مرتبة من النطاقات والقيم المقابلة لها (انظر range_hashed). يُستخدم هذا النوع من التخزين مع المفاتيح المركبة. مثال على التهيئة:
آخر تعديل في ٢ يوليو ٢٠٢٦