فهرس الصور النقطية

فهرس الصور النقطية هو نوع خاص من فهارس قواعد البيانات التي تستخدم الصور النقطية .

لطالما اعتُبرت فهارس الخرائط النقطية مناسبةً للأعمدة ذات عدد القيم المحدود، سواءً كان هذا العدد مطلقًا أو نسبيًا إلى عدد السجلات التي تحتوي على البيانات. ومن الأمثلة البارزة على ذلك البيانات المنطقية (مثل: هل يمتلك أحد سكان مدينة ما اتصالًا بالإنترنت؟)، والتي لها قيمتان فقط: صحيح وخطأ. تستخدم فهارس الخرائط النقطية مصفوفات بتية (تُعرف عادةً باسم الخرائط النقطية) وتُجيب على الاستعلامات من خلال إجراء عمليات منطقية على مستوى البتات على هذه الخرائط. تتميز فهارس الخرائط النقطية بميزة كبيرة في توفير المساحة والأداء مقارنةً بالهياكل الأخرى للاستعلام عن هذا النوع من البيانات. أما عيبها، فهو أنها أقل كفاءة من فهارس شجرة B التقليدية للأعمدة التي يتم تحديث بياناتها بشكل متكرر؛ ولذلك، تُستخدم غالبًا في أنظمة القراءة فقط المُخصصة للاستعلام السريع، مثل مستودعات البيانات، وهي غير مناسبة عمومًا لتطبيقات معالجة المعاملات عبر الإنترنت .

يرى بعض الباحثين أن فهارس الخرائط النقطية مفيدة أيضاً للبيانات ذات العدد المتوسط ​​أو حتى العالي من القيم الفريدة (مثل البيانات ذات القيم الفريدة) والتي يتم الوصول إليها بطريقة للقراءة فقط، حيث تصل الاستعلامات إلى أعمدة متعددة مفهرسة بالخرائط النقطية باستخدام عوامل التشغيل AND أو OR أو XOR بشكل مكثف. [ 1 ]

تُعد فهارس Bitmap مفيدة أيضًا في تطبيقات تخزين البيانات لربط جدول حقائق كبير بجداول أبعاد أصغر مثل تلك المرتبة في مخطط النجمة .

مثال

استكمالاً لمثال الوصول إلى الإنترنت، يمكن النظر إلى فهرس الخريطة النقطية منطقياً على النحو التالي:

المعرفهاس إنترنتالصور النقطية
Yشمال
1نعم10
2لا01
3لا01
4غير محدد00
5نعم10

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

ملاحظة: تمت مراجعة العديد من المراجع المذكورة هنا في ( جون وو (2007) ). [ 2 ] بالنسبة لأولئك الذين قد يكونون مهتمين بتجربة بعض الأفكار المذكورة هنا، فإن العديد منها مُطبق في برامج مفتوحة المصدر مثل FastBit، [ 3 ] ومكتبة Lemur Bitmap Index C++ ، [ 4 ] ومكتبة Roaring Bitmap Java، [ 5 ] ونظام Apache Hive Data Warehouse.

ضغط

لأسباب تاريخية، تم تطوير ضغط الصور النقطية وضغط القوائم المعكوسة كخطوط بحث منفصلة، ​​ولم يتم الاعتراف بهما كحل لنفس المشكلة بشكل أساسي إلا لاحقًا. [ 6 ]

يمكن للبرامج ضغط كل صورة نقطية في فهرس الصور النقطية لتوفير المساحة. وقد أُجريت دراسات عديدة حول هذا الموضوع. [ 7 ] [ 8 ] مع وجود استثناءات مثل صور Roaring النقطية، [ 9 ] تستخدم خوارزميات ضغط الصور النقطية عادةً ترميز طول التشغيل ، مثل ترميز الصورة النقطية المحاذي للبايت، [ 10 ] وترميز الصورة الهجين المحاذي للكلمات، [ 11 ] وضغط الصورة الهجينة المحاذية للكلمات المقسمة (PWAH)، [ 12 ] وضغط الصورة الهجينة المحاذية للكلمات لقائمة المواضع، [ 13 ] وضغط الفهرس التكيفي (COMPAX)، [ 14 ] وضغط الصورة الهجينة المحاذية للكلمات المحسّنة (EWAH)، [ 15 ] وضغط مجموعة الأعداد الصحيحة المركبة 'N' (CONCISE). [ 16 ] [ 17 ] تتطلب طرق الضغط هذه جهدًا ضئيلاً جدًا للضغط وفك الضغط. والأهم من ذلك، أن الصور النقطية المضغوطة باستخدام BBC وWAH وCOMPAX وPLWAH وEWAH وCONCISE يمكنها المشاركة مباشرةً في عمليات البت دون الحاجة إلى فك الضغط. وهذا يمنحها مزايا كبيرة مقارنةً بتقنيات الضغط العامة مثل LZ77 . يُستخدم ضغط BBC ومشتقاته في نظام إدارة قواعد بيانات تجاري . يتميز BBC بفعاليته في تقليل أحجام الفهارس والحفاظ على أداء الاستعلامات . يقوم BBC بتشفير الصور النقطية بالبايتات ، بينما يقوم WAH بتشفيرها بالكلمات، مما يجعله أكثر توافقًا مع وحدات المعالجة المركزية الحالية . "في كل من البيانات الاصطناعية وبيانات التطبيقات الحقيقية، تستخدم مخططات محاذاة الكلمات الجديدة مساحة أكبر بنسبة 50% فقط، ولكنها تُجري العمليات المنطقية على البيانات المضغوطة أسرع بـ 12 مرة من BBC." [ 18 ] أُفيد أن صور PLWAH النقطية تشغل 50% من مساحة التخزين التي تستهلكها صور WAH النقطية، وتوفر أداءً أسرع بنسبة تصل إلى 20% في العمليات المنطقية . [ 13 ] يمكن تطبيق اعتبارات مماثلة على CONCISE [ 17 ] وEnhanced Word-Aligned Hybrid. [ 15 ]

يعتمد أداء مخططات مثل BBC وWAH وPLWAH وEWAH وCOMPAX وCONCISE على ترتيب الصفوف. يمكن لفرز معجمي بسيط أن يقلل حجم الفهرس بمقدار 9 أضعاف، مما يجعل الفهارس أسرع بعدة مرات. [ 19 ] كلما كبر حجم الجدول، زادت أهمية فرز الصفوف. كما تم اقتراح تقنيات إعادة الترتيب لتحقيق نفس نتائج الفرز عند فهرسة البيانات المتدفقة. [ 14 ]

التشفير

تستخدم فهارس الخرائط النقطية الأساسية خريطة نقطية واحدة لكل قيمة مميزة. ويمكن تقليل عدد الخرائط النقطية المستخدمة باستخدام طريقة ترميز مختلفة . [ 20 ] [ 21 ] على سبيل المثال، يمكن ترميز C قيمة مميزة باستخدام log(C) من الخرائط النقطية مع الترميز الثنائي . [ 22 ]

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

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

فرز النفايات

بالنسبة للأعمدة ذات عدد القيم الكبير، يُفيد تجميع القيم في فئات، بحيث تغطي كل فئة عدة قيم، ثم إنشاء خرائط بت لتمثيل القيم في كل فئة. يُقلل هذا الأسلوب من عدد خرائط البت المستخدمة بغض النظر عن طريقة التشفير. [ 23 ] مع ذلك، لا تستطيع الفهارس المُجمّعة الإجابة إلا على بعض الاستعلامات دون فحص البيانات الأساسية. على سبيل المثال، إذا غطت فئة ما النطاق من 0.1 إلى 0.2، فعندما يطلب المستخدم جميع القيم الأقل من 0.15، تُعتبر جميع الصفوف التي تقع ضمن هذه الفئة نتائج محتملة، ويجب فحصها للتأكد من أنها بالفعل أقل من 0.15. تُعرف عملية فحص البيانات الأساسية بفحص المرشحين. في معظم الحالات، يكون الوقت المُستغرق في فحص المرشحين أطول بكثير من الوقت اللازم للعمل مع فهرس خريطة البت. لذلك، تُظهر الفهارس المُجمّعة أداءً غير منتظم. فقد تكون سريعة جدًا لبعض الاستعلامات، ولكنها أبطأ بكثير إذا لم يُطابق الاستعلام فئةً ما تمامًا.

تاريخ

طُرح مفهوم فهرس الخرائط النقطية لأول مرة من قِبل البروفيسور إسرائيل سبيغلر ورافي مايان في بحثهما "اعتبارات التخزين والاسترجاع لقواعد البيانات الثنائية"، الذي نُشر عام 1985. [ 24 ] وكان أول منتج تجاري لقواعد البيانات يُطبّق فهرس الخرائط النقطية هو طراز 204 من شركة كمبيوتر كوربوريشن أوف أمريكا . وقد نشر باتريك أونيل ورقة بحثية حول هذا التطبيق عام 1987. [ 25 ] يُعد هذا التطبيق مزيجًا بين فهرس الخرائط النقطية الأساسي (بدون ضغط) وقائمة مُعرّفات الصفوف (RID). وبشكل عام، يُنظّم الفهرس على شكل شجرة B+ . عندما يكون عدد عناصر العمود منخفضًا، تحتوي كل عقدة طرفية في شجرة B على قائمة طويلة من مُعرّفات الصفوف. في هذه الحالة، يتطلب تمثيل قوائم مُعرّفات الصفوف كخرائط نقطية مساحة أقل. وبما أن كل خريطة نقطية تُمثّل قيمة مُختلفة، فهذا هو فهرس الخرائط النقطية الأساسي. مع ازدياد عدد عناصر العمود، تصبح كل خريطة بتية متفرقة، وقد يتطلب تخزينها مساحة تخزين أكبر من تخزين المحتوى نفسه في قوائم RID. في هذه الحالة، يتم التحول إلى استخدام قوائم RID، مما يجعلها فهرسًا من نوع B+tree . [ 26 ] [ 27 ]

الصور النقطية في الذاكرة

من أهم مزايا استخدام فهارس الخرائط النقطية أن النتائج الوسيطة الناتجة عنها هي أيضاً خرائط نقطية، ويمكن إعادة استخدامها بكفاءة في عمليات لاحقة للإجابة على استعلامات أكثر تعقيداً. تدعم العديد من لغات البرمجة هذا النوع من الفهارس كبنية بيانات مصفوفة بتية . على سبيل المثال، تحتوي لغة جافا على BitSetالفئة BitArray، بينما تحتوي لغة .NET على الفئة BitArray . [ 28 ]

تستخدم بعض أنظمة قواعد البيانات التي لا توفر فهارس بتية دائمة، الفهارس البتية داخليًا لتسريع معالجة الاستعلامات. على سبيل المثال، تُطبّق إصدارات PostgreSQL 8.1 والإصدارات الأحدث تحسين "مسح الفهرس البتي" لتسريع العمليات المنطقية المعقدة بين الفهارس المتاحة على جدول واحد.

بالنسبة للجداول التي تحتوي على العديد من الأعمدة، ينمو العدد الإجمالي للفهارس المميزة لتلبية جميع الاستعلامات الممكنة (مع شروط تصفية المساواة على أي من الحقول) بسرعة كبيرة، ويتم تحديده بهذه الصيغة:

جن[ن2]ن!(ن-[ن2])![ن2]!{\displaystyle \mathbf {C} _{n}^{\left[{\frac {n}{2}}\right]}\equiv {\frac {n!}{\left(n-\left[{\frac {n}{2}}\right]\right)!\left[{\frac {n}{2}}\right]!}}}[ 29 ] [ 30 ]

يجمع فحص فهرس الخريطة النقطية التعبيرات على فهارس مختلفة، وبالتالي يتطلب فهرسًا واحدًا فقط لكل عمود لدعم جميع الاستعلامات الممكنة على الجدول.

يمكن لتطبيق استراتيجية الوصول هذه على فهارس شجرة B دمج استعلامات النطاق على أعمدة متعددة. في هذه الطريقة، يتم إنشاء خريطة بت مؤقتة في الذاكرة، حيث يُمثل كل صف في الجدول بتًا واحدًا (وبالتالي، يمكن لـ 1 ميجابايت تخزين أكثر من 8 ملايين مدخل). بعد ذلك، تُدمج نتائج كل فهرس في خريطة البت باستخدام عمليات بتية . بعد تقييم جميع الشروط، تحتوي خريطة البت على القيمة "1" للصفوف التي تطابق التعبير. أخيرًا، يتم اجتياز خريطة البت واسترجاع الصفوف المطابقة. بالإضافة إلى دمج الفهارس بكفاءة، يُحسّن هذا أيضًا موضعية الوصول إلى الجدول، لأن جميع الصفوف تُجلب بالتسلسل من الجدول الرئيسي. [ 31 ] تُحذف خريطة البت الداخلية بعد الاستعلام. إذا كان عدد الصفوف في الجدول كبيرًا جدًا بحيث لا يمكن استخدام بت واحد لكل صف، يتم إنشاء خريطة بت "فاقدة" بدلاً من ذلك، حيث يُمثل كل صفحة قرص بتًا واحدًا. في هذه الحالة، تُستخدم خريطة البت فقط لتحديد الصفحات المراد جلبها؛ ثم تُطبق معايير التصفية على جميع الصفوف في الصفحات المطابقة. 

مراجع

ملحوظات
  1. فهرس الخريطة النقطية مقابل فهرس الشجرة B: أيهما ومتى؟، فيفيك شارما، شبكة أوراكل التقنية.
  2. جون وو (2007). "المراجع المشروحة على فهرس الصور النقطية" .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  3. "FastBit" . مؤرشف من الأصل بتاريخ 19-09-2015 . تم الاطلاع عليه بتاريخ 02-02-2011 .
  4. مكتبة فهرس صور الليمور النقطية بلغة C++
  5. صور نقطية هديرية
  6. جيانغوو وانغ؛ تشونبين لين؛ يانيس باباكونستانتينو؛ ستيفن سوانسون. "دراسة تجريبية لضغط الصور النقطية مقابل ضغط القوائم المعكوسة". مؤرشف بتاريخ 7 ديسمبر 2019 في أرشيف الإنترنت (Wayback Machine ). 2017. doi: 10.1145/3035918.3064007
  7. تي. جونسون (1999). "قياسات أداء فهارس الصور النقطية المضغوطة" (ملف PDF) . في: مالكولم ب. أتكينسون؛ ماريا إي. أورلوفسكا ؛ باتريك فالدوريز؛ ستانلي ب. زدونيك؛ مايكل ل. برودي (محررون). VLDB'99، وقائع المؤتمر الدولي الخامس والعشرين لقواعد البيانات الضخمة جدًا، 7-10 سبتمبر 1999، إدنبرة، اسكتلندا، المملكة المتحدة . مورغان كوفمان. الصفحات 278-289 . ISBN  978-1-55860-615-9.
  8. وو ك، أوتو إي، شوشاني أ (5 مارس 2004). "حول أداء فهارس الخرائط النقطية للسمات ذات العدد الكبير" (PDF) .
  9. تشامبي، س.؛ ليمير، د.؛ كاسر، أ.؛ غودين، ر. (2016). "تحسين أداء الصور النقطية باستخدام الصور النقطية عالية الدقة". البرمجيات: الممارسة والخبرة . 46 (5): 709-719 . arXiv : 1402.6407 . doi : 10.1002/spe.2325 . S2CID 1139669 . 
  10. ضغط البيانات المحاذية للبايت
  11. طريقة ضغط الصور النقطية المحاذية للكلمات، وبنية البيانات، والجهاز
  12. فان شايك، سيباستيان؛ دي مور، أويج (2011). "بنية بيانات وصول فعالة من حيث الذاكرة من خلال ضغط متجه البت" . وقائع المؤتمر الدولي لإدارة البيانات لعام 2011. SIGMOD '11. أثينا، اليونان: ACM. الصفحات 913-924 . doi : 10.1145/1989323.1989419 . ISBN  978-1-4503-0661-4.
  13. 1 2 ديليج إف، بيدرسن تي بي (2010). "قائمة المواضع المُحاذية للكلمات الهجينة: تحسين المساحة والأداء للصور النقطية المضغوطة" (ملف PDF) . في: إيوانا مانوليسكو، ستيفانو سباكابيترا، ينس توبنر، ماسارو كيتسوريغاوا، آلان ليجيه، فيليكس ناومان، أناستاسيا أيلاماكي، فاطمة أوزكان (محررون). EDBT '10، وقائع المؤتمر الدولي الثالث عشر حول توسيع تكنولوجيا قواعد البيانات . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 228-239 . doi : 10.1145/1739041.1739071 . ISBN  978-1-60558-945-9S2CID 12234453. مؤرشف من الأصل (PDF) بتاريخ 4 مارس 2011. تم الاطلاع عليه بتاريخ 2 فبراير 2011 . 
  14. 1 2 ف. فوسكو؛ م. ستوكلين؛ م. فلاخوس (سبتمبر 2010). "NET-FLi: ضغط وأرشفة وفهرسة حركة مرور الشبكة المتدفقة أثناء التشغيل" (ملف PDF) . وقائع مؤسسة VLDB . 3 ( 1-2 ): 1382-1393 . doi : 10.14778/1920841.1921011 . S2CID 787443 . 
  15. 1 2 ليمير، د.؛ كاسر، أ.؛ عويش، ك. (2010). "الفرز يُحسّن فهارس الصور النقطية المُحاذية للكلمات". هندسة البيانات والمعرفة . 69 : 3-28 . arXiv : 0901.3751 . doi : 10.1016/j.datak.2009.08.006 . S2CID 6297890 . 
  16. موجز: مجموعة الأعداد الصحيحة المركبة المضغوطة 'ن' مؤرشفة في 28 مايو 2011 على موقع Wayback Machine
  17. 1 2 كولانتونيو أ، دي بيترو ر (31 يوليو 2010). "مختصر: مجموعة الأعداد الصحيحة المركبة المضغوطة 'ن'" (ملف PDF) . رسائل معالجة المعلومات . 110 (16): 644-50 . arXiv : 1004.0403 . doi : 10.1016/j.ipl.2010.05.018 . S2CID 8092695. مؤرشف من الأصل (ملف PDF) في 22 يوليو 2011. تم الاسترجاع في 2 فبراير 2011 . 
  18. وو ك، أوتو إي جيه، شوشاني أ (2001). "مقارنة أداء فهارس الصور النقطية" (ملف PDF) . في: هنريك باكيس، لينغ ليو ، ديفيد غروسمان (محررون). وقائع مؤتمر CIKM '01 الدولي العاشر لإدارة المعلومات والمعرفة . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 559-561 . doi : 10.1145/502585.502689 . ISBN  978-1-58113-436-0S2CID 10974671. مؤرشف من الأصل (PDF) بتاريخ 20 يوليو 2011. تم الاطلاع عليه بتاريخ 2 فبراير 2011 . 
  19. د. ليمير؛ أ. كاسر؛ ك. عويش (يناير 2010). "تحسين فهارس الصور النقطية المحاذية للكلمات عن طريق الفرز". هندسة البيانات والمعرفة . 69 (1): 3-28 . arXiv : 0901.3751 . doi : 10.1016/j.datak.2009.08.006 . S2CID 6297890 . 
  20. 1 2 سي-واي تشان؛ واي إيوانيديس (1998). "تصميم وتقييم فهرس الصور النقطية" (ملف PDF) . في أشوتوش تيواري؛ مايكل فرانكلين (محرران). وقائع مؤتمر ACM SIGMOD الدولي لإدارة البيانات لعام 1998 (SIGMOD '98) . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 355-356 . doi : 10.1145/276304.276336 . ISBN  0897919955.
  21. سي. واي. تشان؛ واي إي. إيوانيديس (1999). "مخطط ترميز بت خرائط فعال لاستعلامات الاختيار" (ملف PDF) . وقائع مؤتمر ACM SIGMOD الدولي لإدارة البيانات لعام 1999 (SIGMOD '99) . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 215-226 . doi : 10.1145/304182.304201 . ISBN  1581130848.
  22. بي إي أونيل؛ دي كواس (1997). "تحسين أداء الاستعلام باستخدام الفهارس المتغيرة". في: جوان إم بيكمان؛ سودها رام؛ مايكل فرانكلين (محررون). وقائع مؤتمر ACM SIGMOD الدولي لإدارة البيانات لعام 1997 (SIGMOD '97) . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 38-49 . doi : 10.1145/253260.253268 . ISBN  0897919114.
  23. ن. كوداس (2000). "فهرسة الصور النقطية الموفرة للمساحة". وقائع المؤتمر الدولي التاسع لإدارة المعلومات والمعرفة (CIKM '00) . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 194-201 . doi : 10.1145/354756.354819 . ISBN  978-1581133202. S2CID 7504216 . 
  24. سبيغلر آي؛ مايان آر (1985). "اعتبارات التخزين والاسترجاع لقواعد البيانات الثنائية". معالجة المعلومات وإدارتها . 21 (3): 233-254 . doi : 10.1016/0306-4573(85)90108-6 .
  25. أونيل، باتريك (1987). "معمارية وأداء النموذج 204". في: ديتر غاوليك؛ مارك ن. هايني؛ أندرياس رويتر (محررون). وقائع ورشة العمل الدولية الثانية حول أنظمة المعاملات عالية الأداء . لندن، المملكة المتحدة: سبرينغر-فيرلاغ. ص 40-59 . 
  26. د. رينفريت؛ ب. أونيل؛ إ. أونيل (2001). "حساب الفهرسة المقطعية بالبتات". في تيموس سيليس (محرر). وقائع مؤتمر ACM SIGMOD الدولي لإدارة البيانات لعام 2001 (SIGMOD '01) . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 47-57 . doi : 10.1145/375663.375669 . ISBN  1581133324.
  27. إي. أونيل؛ بي. أونيل؛ ك. وو (2007). "خيارات تصميم فهرس الصور النقطية وتأثيراتها على الأداء" (ملف PDF) . المؤتمر الدولي الحادي عشر لهندسة قواعد البيانات وتطبيقاتها (IDEAS 2007) . الصفحات 72-84 . doi : 10.1109/IDEAS.2007.19 . ISBN  978-0-7695-2947-9أُرشف من النسخة الأصلية (PDF) بتاريخ 20 يوليو 2011. تم الاطلاع عليه بتاريخ 2 فبراير 2011 .
  28. "فئة BitArray (System.Collections)" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 17 ديسمبر 2024 .
  29. أليكس بولينوك (2009-05-09). "إنشاء الفهارس" .
  30. إيغور تيموشينكو. "حول المجموعات الدنيا من الفهارس" (PDF) .
  31. توم لين (26-12-2005). "رد: فهارس الصور النقطية وما إلى ذلك" . قوائم بريد PostgreSQL . تم الاسترجاع في 6-4-2007 .
فهرس