اذهب إلى المحتوى

لوحة المتصدرين

  1. عمرو التنجي

    عمرو التنجي

    الأعضاء


    • نقاط

      1

    • المساهمات

      1


  2. أسامة دمراني

    أسامة دمراني

    الأعضاء


    • نقاط

      1

    • المساهمات

      244


  3. إبراهيم البحيصي

    • نقاط

      1

    • المساهمات

      43


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 10/21/18 في كل الموقع

  1. بعد أن تكلمنا في المقال السابق عن موضوع جملة الاستعلام في SQL وكيفية الاستعلام عن البيانات في جدول معين وترشيحها وفق الشروط التي نرغب بها، سنتناول في هذا المقال موضوع الفهارس Indexes وما تمثله في قاعدة البيانات، وما هي الفائدة منها. فهرس الجدول لو افترضنا وجود 1000 ملف ورقيّ غير مميزة عن بعضها وتحتوي على بيانات خاصة بطلاب جامعة، وهذه الملفات محفوظة في خزانتين منفصلتين، وأردنا الحصول على بيانات الطلاب الذين يسكنون منطقة معينة، ففي هذه الحالة سنضطر إلى فتح كل الملفات الموجودة في الخزانتيْن والبحث عن فئة الطلاب المستهدفة، وفرزهم والحصول على البيانات المطلوبة. ماذا لو كان لدينا عدد ملفات أكبر؟ سيزداد الوقت والجهد للحصول على البيانات، لذلك، فإن فكرة فهرسة الملفات في هذه الحالة ستكون أمرا جيدا بالتأكيد. سنُفهرِس مثلا الملفات حسب المكان ثم نحفظها في الخزانتين، بحيث تحتوي كل خزانة على بيانات الطلاب لمنطقة أو مناطق معينة. ثم داخل كل خزانة، نستطيع فرز الملفات وحفظها حسب الاسم مثلا. بتطبيق مفهوم الفهرسة، سنوفر على أنفسنا عناء البحث في الخزانتين، وسنقلل الوقت والجهد اللازمين لذلك. الفكرة الرئيسة للفهارس في قاعدة البيانات تدور حول المثال السابق، ففي ظل عصر تضخم البيانات، فإنه أصبح من الملح والضّروريّ وجود تقنيات لتسهيل الوصول السريع للمعلومة. ما هو الفهرس؟ لو أردنا مثلا أن نبحث عن اسم شخص في جدول الأشخاص Persons عبر استخدام الجملة التالية: SELECT * FROM Persons WHERE First_Name = "Ibrahim"; فإن نظام إدارة قاعدة البيانات سيمرّ على كل السجلات الموجودة في الجدول لترشيح السجلات وإرجاع تلك التي توافق الشرط في جملة where. ستظهر لنا مشكلة الوقت اللازم لتنفيذ جملة الاستعلام – وتزداد -كلما زاد عدد السجلات في الجدول، فلو كان لدينا مثلا مليون سجل في الجدول Persons، ولنفترض جدلاً أن النظام باستطاعته المرور على 10 آلاف سجل في الثانية، فإننا بحاجة إلى 100 ثانية لتنفيذ جملة الاستعلام السابقة. لحل المشكلة السابقة، فإن نُظم إدارة قواعد البيانات تقدم خاصية الفَهْرَسة. الفَهْرَسة هي ببساطة عبارة عن مؤشر يحتوي على نسخة من جزء من البيانات في الجدول، بحيث تقوم هذه النسخة من البيانات بمهمة “الدليل” أو “المُؤَشّر” الذي يسرع الوصول إلى البيانات الأصلية الكاملة الموجودة في الجدول، بحيث لا تحتاج المرور الكامل على كل الجدول (No Full Table Scan) عند البحث عن البيانات. يعدّ الفهرس عمليا طريقةً من طُرُق تراكيب البيانات، وهو عنصر مرتبط بوجود جدول في قاعدة البيانات، ولكن نستطيع تعريفه وحذفه منفصلا عن تعريف الجدول، ولا يكون له أي تأثير على نفس البيانات، فعند حذف الفهرس، فإن البيانات الموجودة في الجدول لا تتأثر. يكون الفهرس في أغلب أنظمة إدارة قواعد البيانات من نوع “B-Tree” ويأتي هذا الاسم من بنية البيانات Data structure التي تحمل نفس الاسم، وهو المفضل لأن تُطبقه على العمود الذي يحتوي قيمًا متنوعة وكثيرة مثل الرقم القومي للشخص، وليس من المفضل أن تطبق فهرس “B-Tree” على العمود الذي يحتوي عددًا قليلًا من القيم. توجد أنواع أخرى من الفهارس تُقدمها أنظمة إدارة قواعد البيانات مثل “Bitmap Index” و “Denes Index” ولكننا لن نتكلم عنها هنا لأنها خارج إطار موضوع المقال ولأنها تحتاج إلى مقالة منفصلة لشرحها. كيف تُعرَّف الفهارس؟ يُعرَّف الفهرس بطريقتيْن: تعريفه ضمنيًّا: تُبنَى الفهارس ضمنيا على الأعمدة التي يُطَبَّق عليها القيد الفريد وقيد المفتاح الرئيسي، فعند تعريف أحد القيود السابقة، يُبنى فهرس تلقائيًّا على العمود أو الأعمدة المُقيَّدة. تعريفه صراحةً: يُبنَى الفهرس بطريقة مباشرة على العمود أو الأعمدة الذي نرغب وذلك باستخدام جملة Create Index. على الرغم من أنه لا يوجد تعريف للفهرس في معايير SQL، إلا أن أغلب أنظمة إدارة قواعد البيانات تقدم الإمكانية لتعريف الفهرس ويتفق أغلبها على الصيغة العامة لذلك. الصيغة العامة لتعريف الفهرس: CREATE INDEX index_name ON table_name (column1, column2, ...); عند تعريف الفهرس، لابد أن يكون اسمه متوافقا مع القيود الخاصة بنظام إدارة قاعدة البيانات المستخدم، كما أنه يجب ألا يكون مُكررا، فأسماء الفهارس في قواعد البيانات يجب أن تكون فريدة ولا تتكرر. لإضافة فهرس باسم First_Name_idx على عمود First_Name في الجدول Persons ننفذ الجملة التالية: CREATE INDEX First_Name_idx ON Persons (First_Name); نستطيع تعريف فهرس فريد UNIQUE Index على عمود ممّا يجعل نظام قواعد البيانات يفحص التكرار داخل هذا النوع من الفهارس، حيث يتأكد النظام - في حالة إضافة أو تعديل قيمة لعمود عليه فهرس فريد - من أن هذه القيمة فريدة وغير مكررة؛ وفي حال كانت مكررة، يُرفَض هذا التغيير ويُظهَر خطأ في العملية. مثلا، لو أردنا أن نضيف فهرسًا فريدًا على عمود Age في الجدول Persons ننفذ الجملة التالية: CREATE UNIQUE INDEX Age_idx ON Persons (Age); نستطيع أيضا تعريف الفهرس على أكثر من عمود، كما في المثال التالي: CREATE UNIQUE INDEX Multiple_Columns_idx ON Persons (First_Name ,Age); عرّفنا في المثال السابق فهرسًا على عمودين، وفي هذه الحالة، فإن الفهرس سيفيد في تنفيذ جملة الترتيب Order by التي تحتوي العمود First_Name ثم عمود Age بنفس الترتيب. لن نستفيد من الفهرس السابق في حالة تنفيذ جملة الترتيب بترتيب مختلف للعمودين، ولن نستفيد أيضا منه في حالة تنفيذ جملة الاستعلام المشروطة بالبحث في هذين العمودين، حيث نحتاج لتعريف فهارس أخرى لكل عمود على حدة لتسريع عملية الاستعلام مع جملة Where. حذف الفهارس الصيغة العامة لحذف الفهرس كالتالي: DROP INDEX Index_Name ; فلحذف فهرس باسم Age_idx ننفذ الأمر التالي: DROP INDEX Age_idx ; متى نستخدم الفهارس؟ يفضل أن يتم بناء الفهارس على الأعمدة التي: يُبحث عنها في جملة Where. تُكتَب في جملة الترتيب Order By. تُكتَب في جملة التجميع Group By. تُستخدَم في جمل الربط Joins. تُستخدَم في الدوال الإحصائية مثل min وmax وmedian. متى نتجنب استخدام الفهارس؟ لا تعدّ الفهارس مناسبة على الأعمدة التي: - تحتوي على قيم فريدة قليلة مثل عمود الجنس (قيمتان فقط)، أو الحالة الاجتماعية. - نادرة الاستخدام في جمل الاستعلام SELECT. - التي تكون جزءًا من جدول ذي سجلات قليلة. ملاحظات هامة: لأن الفهرس عنصر مستقل في قواعد البيانات، وبناؤه وتعريفه يعدّ إضافة عليها، فلابد أن يدير مسؤول قاعدة البيانات الصلاحيات اللازمة لهذا الأمر بحيث لا يؤثر سلبا على أداء قاعدة البيانات. لا يعدّ الفهرس أساسيا في بناء الجدول في قاعدة البيانات، وعليه قد لا يحتوي الجدول على فهرس، وقد يحتوي على فهرس أو أكثر. نستطيع أن نُعرّف الفهرس عند بناء الجدول (في نفس جملة بناء الجدول)، ولكن من ناحية عملية، فإن إدارة الفهارس والتعامل معها تعدّ عملية مستمرة ومتكررة. تُبنَى الفهارس وتُحذَف حسب الحاجة للوصول إلى الكفاءة المطلوبة في قاعدة البيانات، لذلك تُقدم نُظم قواعد البيانات الأدوات اللازمة لقياس كفاءة جمل الاستعلام وقياس الحاجة لبناء الفهارس من عدمه. لا تُعَرِّف فهارس أكثر من حاجتك وخاصة في الجداول التي تحتوي سجلات كثيرة، فكما أن الفهارس تُسرع من عملية الوصول للبيانات، فإنها تؤثر سلبا على عمليات الإضافة والتعديل، فعند كل إضافة أو تعديل لابد من تعديل الفهرس ليتلاءم مع التغييرات الجديدة. عند تعريف الفهرس، فإن نظام قاعدة البيانات هو الذي يحافظ على الفهرس ويستخدمه تلقائيا، وعليه لا يُطلب من مسؤول قاعدة البيانات أو المبرمج أو حتى المستخدم أي إجراء آخر بعد تعريف وبناء الفهرس. يُسمى الفهرس الذي يُعرَّف على عمود واحد “فهرسا بسيطا”، والفهرس الذي يُعرَّف على أكثر من عمود يسمى “فهرسا مركبا”.
    1 نقطة
  2. "بالتأكيد، يمكنني إنهاء ذلك المقال في ساعتين.”. إنني أعلم أن المقال الجيد يحتاج إلى أكثر من ذلك في الغالب، أنا أعلم هذا، ومديري يعلم هذا، لكننا وافقنا على تلك المهزلة رغم ذلك، وفي خلال ساعتين كنت قد جمعت بعض الكلمات ورميتها داخل مستند مع بعض الصور وأرسلتها إليه قائلًة: “ها هو المقال، أهو مناسب؟ أنا جاهزة للتعديلات إن وجدت.”. ثم جلست أنتظر رده الحتمي بفارغ صبر : “وهل تلك كلمات أصلًا؟ أعيدي كتابته.”. إن مثل هذه المواقف تشكل نقاطًا فارقة في حياتي، مواقف فظيعة ومؤلمة بدون داعي ﻷني كنت أمنح وعودًا فوق طاقتي. لكن من ناحية أخرى، من يريد أن يعِدَ بالقليل؟ فهذا يبدو سيئًا، أﻻ يجب أن نعدَ بأكثر من اللازم ثم نفعل ما بوسعنا؟ أليس الجهد هو الفيصل؟ كلا! ربما يرجع تاريخ استخدام البشر للوعود إلى آﻻف السنين، حيث مثّلت تقليدًا اجتماعيًا معقدًا، وتتفاقم عواقب خرق تلك الوعود التي عجز أصحابها عن الوفاء بها، وإليك في هذا المقال الأسباب التي أنصحك من أجلها أن تعِدَ بأقل مما ستسلّمه حقًا: لماذا نقطع وعودًا على أنفسنا؟ مثّلت الوعود ضمانة على أن شيئًا ما سيتم تنفيذه، فقد كانت الوسيلة الأبرز قبل المحاكم والقوانين والأنظمة الاجتماعية المعقدة، وﻻ زالت إحدى أهم الأدوات التي تساعدنا على التواصل مع غيرنا، وهذه هي الأسباب الأربعة التي نقطع وعودًا من أجلها: خلْق الالتزام. تنظيم وإرشاد السلوك. تقليل الحيرة. بناء الثقة. ويحفظ الناس وعودهم ﻷنها تساعدهم على بناء الأساسات اللازمة لحفظ علاقاتهم البشرية وتطويرها، فكلما كبر الوعد زادت ضرورة الالتزام بتنفيذه، فإن الوعود الكبيرة يتبعها توقعات كبيرة، وفي حالة الفشل في تحقيق تلك التوقعات فإن العقل يستجيب بتقليل إفراز الدوبامين، على عكس الحالة التي نحقق فيها تلك التوقعات أو نزيد عليها، إذ يزيد الدماغ من إفراز الدوبامين الذي يجعلنا نشعر بالسعادة، نحن ومن قطعنا له الوعد. إضافة إلى أن الوعود تخبر العالم من حولنا بمدى أهليتنا للثقة: في حالة حفظ الوعد: في حالة خرق الوعد: يحتاج عقلك إلى بعض الثبات، لذا نحن نصدّق من يخبرنا أنه سيفعل كذا وكذا ﻷن هذا يريح العقل البشري، لكن هذا الثبات يبدأ بالتلاشي إن لم يتم الوفاء بذلك الوعد، ﻷن ذلك ليس خرقًا للثقة والتوقعات فقط، بل هو انتهاك لأحد التقاليد الأساسية لدى البشر، ويتعدى أثر عدم الوفاء بذلك الوعدِ خيبةَ اﻷمل ليغيّر طريقة استقبال الناس لنا وتفاعلهم معنا. وعد الحر ديْن عليه وجدت دراسة أجرتها الباحثة الهولندية مانيلا فيث أن الوعود التي لا يوفَ بها تجعلنا نرغب في معاقبة أولئك الذين لم يفوا بها، بل والانتقام منهم أيضًا، وتؤثر تلك المشاعر على أي تفاعل مستقبلي بين الطرفين. تحليل لوعد لم يوفَ به إن عقلك يعرف أنك ستخرق الوعد الذي قطعته من قبل أن تنوي الاعتراف بذلك لنفسك، فقد اكتشف باحثون في سويسرا أن بإمكانهم توقع من سيخرق وعدًا قد قطعه بناءً على تفاعل الدماغ أثناء نموذج من ثلاث مراحل لوضع وعد بتنفيذ شيء ما. مرحلة الوعد لنقل أنك أخبرت زملاءك في العمل أنك ستساعدهم على إنهاء مشروع ما، فأنت لم تقرر قطعًا في هذه المرحلة ما إن كنت ستفي بهذا الوعد أم ﻻ، لكن عقلك سيدرك تناقضًا في نفسك لأنه يعرف أنك ﻻ تنوي الوفاء، وعليه فإنه ينشّط مراكز معالجة المشاعر السلبية. مرحلة الترقّب ستنتظر الآن رد فعل زملائك الذين أخبرتهم أنك ستساعدهم، لترى ما إن كانوا سيثقون بك أم لا، لكن ذلك الترقّب يرفع معدل اﻹجهاد عليك، وهو ما يلتقطه دماغك طبعًا إذ كان يجهزك للعواقب السلبية المحتملة لهذا الوعد. مرحلة اتخاذ القرار لقد قررت أن تخرق وعدك لزملائك بسبب انشغالك الزائد، لكن ذلك القرار سيعزز رد فعل في دماغك يشبه ذلك الذي يحدث عند الكذب أو الخداع، فتشعر ببعض الذنب والخوف من تأثير خرقك لهذا الوعد. وسيكافح دماغك هذا الشعور بتذكيرك بالسبب الذي جعلك تخرق وعدك من الأساس عبر تنشيط الجزء المسؤول عن صناعة القرار المرتبط بالمكافأة في دماغك. ثلاث طرق تساعدك على الوفاء بوعودك 1. سل نفس إن كان يجب أن تعطي وعدًا يجب أن يكون وعدك نابعًا من رغبة حقيقية في تنفيذ ما تريد أن تعِد به، فانظر ما تريد أن تحققه بإعطائك لهذا الوعد وما إن كان يمكن إعطاء وعد أقل منه. **فمثلًا: **لنقل أن اليوم هو الأربعاء، ولم تنه حتى نصف مشروعك، لكنك تعد بأنه سيكون منتهيًا بنهاية الأسبوع لأنك تريد أن تبهر زملاءك في العمل، لكنك نسيت المهام الأخرى التي يجب أن تنهيها. فقم بتقسيم المشروع إلى أجزاء صغيرة، وبدلًا من إعطاء وعد بأنك ستنهي المشروع في وقت غير منطقي، قل أن اﻷجزاء الفلانية من المشروع ستنتهي بتاريخ كذا، فإن ذلك يسمح لك بالتحكم في توقعات من حولك، ومتابعة إنجازك لما عليك من مهام، وستحافظ على إعجاب زملائك بك وعلى حفظك لوعدك. 2. عِد بأقل مما ستفعله قدّر الوقت الذي سيحتاجه المشروع ثم زد على ذلك ضعفه أو ثلاثة أمثاله -وفق حدود معقولة-، ولا تعط إجابة إن سئلت عن المدة اللازمة للمشروع إن لم تكن تعرف بالتحديد، وأخبرهم بدلًا من ذلك أنك سترد عليهم لاحقًا. مثال: إن كان المقال يستغرق مني ثلاثة أيام لكتابته، فسأقول أربعًا كي أحظى بوقت إضافي لربما استغرق بعض المقال أطول من المتوقع، أما إن أنجزته في أقل من أربعة أيام فإن ذلك سيجعل العميل سعيدًا. 3. في حالة الأسوأ قد نضطر أحيانًا إلى خرق وعودنا، فكن صريحًا وقدّم اعتذارًا فوريًا، فذلك يساعدك على حفظ علاقتك على المدى الطويل. فمثلًا: لنقل أني وعدت أن أنهي خمسة مقالات بنهاية الأسبوع، لكني لم أكتب إﻻ أربعة، إليك ما سأقول لمديري مباشرة: “قد استغرقت المقالات أطول مما توقعت لها، لذا سأنهي أربعًا فقط بنهاية الأسبوع، وسأختار موضوعات ليس فيها هذا التوسع في المرة القادمة.”. أرأيت؟ لقد وضحت السبب -وليس العذر- إضافة إلى الحل لتجنب حدوث هذا الموقف في المستقبل. وقد جعلتني الوعود المبالغ فيها أشعر أني في لعبة مطاردة، فأنجز نصف المشروع أحيانًا لمجرد أن أقول "أرأيت، إنه شبه تام …”، أما حين أعِد بأقل مما سأفعله فإني أبهر من حولي ونفسي أيضًا، فهذا يعطيني مساحة لإخراج أفضل ما بداخلي ويشعرني بالسعادة والفخر. واﻷمر في حقيقته يدور حول إعطاء نفسك زخمًا في كل مرة تنجح في تنفيذ وعد ما، إذ ستشعر أنك أكثر ثقة في نفسك وفي قدراتك، وسيرتبط اسمك بالثقة والإيجابية، وستتمكن من بناء أي علاقة تريدها في حياتك وتحافظ عليها أيضًا. ترجمة -بتصرف- لمقال Why you should always under-promise and over-deliver لصاحبته أندريا أيْريس
    1 نقطة
  3. لو سمحتم ارقام الهواتف تظهر معي بهذا الشكل هل من طريقه تعديل هذه الارقام لتظهر بطبيعتها الارقام من مصر
    1 نقطة
×
×
  • أضف...