b523db2bbea7098aeccea0f78f41f223
     
     
     
    
    
    
    
    
    
    
 
تقنية و أشياء أخرى
تقنية و أشياء أخرى
مختلف المقالات و النقاشات و الروابط المتعلقة بالتقنية او المواضيع العامة
للمتعمقين فى البرمجه - خاص بالمصفوفات ونظم ادارة قواعد البيانات !
                         عربي     English

للمتعمقين فى البرمجه - خاص بالمصفوفات ونظم ادارة قواعد البيانات !

   محمد جمال الذياب        08-02-2020  
   mohammed-alashaal - Ø­­Ø   
بسم الله ..
طبعا كلنا عارفين انه فى اى نظام مصفوفات له حدود وهى (الرام) اى نظام عموما بقى سواء " بينرى ترى " أو " هاش تابل " أو .....
طيب السؤال هنا ازاى نظام إدارة قواعد البيانات بيقدر يتحكم فى الداتا المهوله دى كلها ! متقوليش بيحملها فى الرام ..
انا بحثت شويه لكن تعبت على ماوصلت لبداية الخيط ... وهو انه مش بيتم قراءة المصفوفه او الترى بالكامل .. ولكن بيتم القراءه جزء جزء وما يدخل اولا يخرج اولا
"FIFO and key by key"الفكره دى بقا قاعد اعجبن اكواد علشان اطبقها :D ... كل اللى انا عايزه افكار لتطبقها حد عنده أفكار (^_^) ونقعد ندردش فيها شويه ؟
التعليقات
   mr.731my - حلمي الذبحاني   
يرجاء ملاحظة الاتي "Arabia I/O هو مجتمع عربي، رجاءً شارك باللغة العربية الفصحى فقط."
لان بعض المصطلحات في مساهمتك لم افهمها
   mohammed-alashaal - Ø­­Ø   
هل اكتب مصطلحات البرمجه عربيا ؟ ^_^
   mr.731my - حلمي الذبحاني   
وهل "اعجبن" مصطلح برمجي؟
   mohammed-alashaal - Ø­­Ø   
صح عندك حق ... انا كنت اقصد (أعجن) .. ماعلينا .. شكرا على الملاحظه ^_^
   wgh - Ward GHB   
في الحقيقة لا ادري ما هي لغتك البرمجية المفضلة ..
لكن ما تقصد هو الداخل اولا يخرج اولا (FIFO), احد الامثلة عليه هو ال LinkedList.
هناك النظام المعاكس له وهو الداخل اخرا يخرج اولا (LIFO) احد الامثلة عليه هو ال Stack
لدينا المثال التالي في الجافا, كتطبيق لل FIFO
 
LinkedList<String> fifo = new LinkedList<String>();
fifo.add("First");
fifo.add("Second");
fifo.add("Third");
System.out.println(fifo.removeFirst());
System.out.println(fifo.removeFirst());
System.out.println(fifo.removeFirst());


الكود سوف يدخل في ال FIFO الخاصة بنا كل من First - Second - Third على التوالي
ثم سيقوم باخراجهم ك First - Second - Third ايضا على التوالي, لان الذي دخل اولا سيخرج ايضا اولا
اتمنى اني فهمت سؤالك .. لو كان شيئ غير واضح لا تتردد بلسؤال ..
في النهاية انصحك بتحميل كتاب عن ال Data Structure وتقوم بقرائته ^_^
   mohammed-alashaal - Ø­­Ø   
تمام فهمك ... انا php ... بس فاهم الكود ..
طب سؤال رخم كمان :D
ازاى المصفوفه > جزء - جزء ؟
يعنى اجب اندكس اعمله ريترن بعدين لما يطلب تانى اشوف اللى بعده ... انا متلغبط فى الحكايه دى لانى اساسا كمان مش عارف اشرحها ^_^ ..
ولو تعر5ف كتاب كويس عن الداتا سراكتشر ممكن تقولهولى ؟
   wgh - Ward GHB   
في الحقيقة اخي انت لم توضح لنا مالذي تحاول ان تقوم به ,, هل تريد معلومات عن ال DBMS ام معلومات عن ال FIFO ؟
في حالة الاولى (DBMS) ابحث عن DBMS Implementation او DBMS Architecture ولا اعتقد ان تجد معلومات معمقة بلطريقة التي تريدها.
في الحالة الثانية عليك بكتب ال Data Structure وهناك العشرات, لكن لا اعرف كتب موجهة ل مبرمجي ال PHP
اطلع على :
data structures and algorithms by alfred v. aho jeffrey d. ullman john e. hopcroft
و
introduction to algorithms by thomas h. cormen charles e. leiserson ronald l. rivest clifford stein
   mohammed-alashaal - Ø­­Ø   
مش لازم حاجه موجه لphp انا لما ببحث ببحث عن (الفكره) وأطبقها
:)
....
دى لنكات لاقتها
http://dblab.cs.toronto.edu/courses/443/2013/04.basic-index.html
http://dblab.cs.toronto.edu/courses/443/2013/05.btree-index.html
   ahmed issa - Ahmed Issa   
اخي لا تستخدم LinkedList اذ كنت تريد FIFO استحدم Queue في لذلك :)
   wgh - Ward GHB   
حصل يا باشا ^_^
   ahmed issa - Ahmed Issa   
القواعد البيانات اعقد من ذلك..
اولا تقسم قاعدة البيانات الى ملفات .. هذه الملفات تحتوي على Records
ما هو Record
فرضا ان لديك جدول من name,phone,place
record هو ahmed,12345,xxxxx
هذا يسمى record
ما تفعله الان قاعدة البيانات على سبيل المثال هو بناء B+ Tree بحيث يكون المفتاح -key- هو الاسم "مثل hashmap"
اقرا عن B+ Tree في الانترنت لان شرحها طويل.
هذه B+ Tree تحفظ بالرام عند طلبك ب sql "اريد جميع records بحيث الاسم ahmed" تبحث بال Tree وبعدها تعرف اين تجد الملف المحفوظ به البيانات التي تريدها . وترسل النتيجة لك.. -بالفعل يحدث اكثر من ذلك لكن هذا فقط شرح جدا مبسط-. طبعا من يمكن لقاعدة البيانات حفظ النتيجة بالرام وفي حال طلبك لنفس الطلب sql تجلب النسخة من الرام مباشرة.
هذا شرح مبسط جدا.
لعلم فقط B+ Tree جدا جدا سريعة.
   mohammed-alashaal - Ø­­Ø   
شكراااااااااااا
اه رايك فى دول :

http://dblab.cs.toronto.edu/courses/443/2013/04.basic-index.html
http://dblab.cs.toronto.edu/courses/443/2013/05.btree-index.html
   alsadi - مؤيد السعدي   
لا داع لأن تكون كامل قاعدة البيانات في الذاكرة رام. بل ولا داع لأن يكون كامل جدول القطع في الذاكرة رام.
لتقريب الفكرة ادرس ملفات القطع الساكنة التي تكون على شكل مفتاح وقيمة ثابتة مثل Berkeley DB و CDB
http://en.wikipedia.org/wiki/Berkeley_DB
http://cr.yp.to/cdb/cdb.txt
https://bitbucket.org/mchaput/whoosh/src/02557b8e1db4a38aa6d8a13bdf5440e6410a29a1/src/whoosh/filedb/filetables.py?at=default
طريقة عمل الإستدعاء أو الإستخراج لمفتاح بعينه مثلا استخرج القيمة المقابلة للمفتاح post_1123 أو user.ahmad

احسب قيمة الرقم المقطع المقابل لها (مثلا crc32 أو fnv أو super fast hash) وهي دالة تأخر نص وتعيد رقم

خذ باقي قسمة الرقم على عدد المفاتيح مثلا لنفرض أن الجواب هو 27

اضرب 27 في حجم التركيب الذي يشير إلى المفاتيح وقيمها (مثلا لنفرض أننا نخزن طول المفتاح في 4 بايت ثم مثلها لإزاحة مكان المفتاح عن أول الملف ثم 4 أخرى لطول القيمة و4 أخرى لإزاحة القيمة عن أول الملف يصبح لدينا 16 بايت) بهذا نضرب 27*16 والجواب هو 432

ننتقل بإزاحة مقدارها 432 عن بداية الملف ثم نقرأ 16 بايت وهي طول ومكان المفتاح وطول ومكان القيمة

نتأكد من تطابق المفتاح ونعيد القيمة

إن لم يتطابق المفتاح ندخل في طور معالجة تصطادم المقطع ونكرر من جديد (مثلا لنفترض أن الطريقة هي حفظ التصادمات متسلسلة في ملف منفصل نبحث بها بطريقة التنصيف bisection أو في المقطع التالي في حالتنا 28 ونعيد الخطوة رقم 3. حتى نستنفذ كل المقاطع ثم نعيد null في حال الفشل)


طبعا قواعد البيانات و b*-tree و AVL-tree وغيرها أعقد لأنها تعالج حالة الإضافة والإزالة بعد الإنشاء وليس توليد ملف ساكن لمرة واحدة.
   فادى - فادى نبيل   
موضوع الdatabase متشعب و معقد, لكن خدها واحدة واحدة من البداية.
أولا ملفات الdatabase تحفظ بشكل مختلف لكن كلها فى النهاية متقاربة و تتكون من ثلاثة أجزاء و هذا التصميم يعود الى ملفات DBF التى كان يعمل بها برنامج dbaseIII:
Header و يحفظ فيه معلومات مثل عدد الRecords, و عدد الFields و نوع الdatabase و اسمها و غير ذلك.
Fields Area و يحفظ بها الFields فى شكل structure به اسم الField و نوعه (Character,integer,float,...) و طوله.
Records Area و غالبا يتكون من قسمين, اول قسم structure يضم رقم الrecord و نوعه و أى معلومات أخرى و flags خاصة بالrecord (مثلا flag فى حالة ان كان الrecord تم مسحه). ثم تتبع بالrecord نفسه و الذى يتم حفظه بشكل مباشر من المتغيرات اعتمادا على الfields.
الdatabase لا تقوم بالطبع بتحميل الملف كله فى الRAM, بل يقوم بالوصول اليه عشوائيا من الdisk مباشرة. و هذا يقودنا الى ملف الindex, و الذى يحتوى على سلسلة من الkey field بالاضافة الى مكان كل واحد فى الملف. و بالتالى فان الdatabase يبحث فى ملف الindex فقط ليحصل على مكان الrecord الذى يرغب فيه, ثم يقوم بتحميله.
طرق الindexing كثيرة لكن أبسطها هو الsparse indexing بمعنى ان تقوم بحفظ مكان بداية كل عدد معين من الrecords. و بهذا تتقلص عمليات البحث.
   mohammed-alashaal - Ø­­Ø   
شكرا .. عاجبنى النقاش بجد ^_^ ...
   mohammed-alashaal - Ø­­Ø   
فى حاجه بقا - ملف الاندكس نفسه عباره عن اه مصفوفه ؟
طب افرض الاندكسس كبرت اوى طبعا المصفوفه هتكبر !
ازاى هيتم تخطى المشكله دى ؟
   فادى - فادى نبيل   
يمكن عمل indexing لملف الindex نفسه.
و عملية البحث نفسها تتبع logarithm أخر و لا تكون linear حيث تتم بطريقة الفصل (يعنى تقسم الlist لقسمين و تقارنهم و تأخذ الlist المناسبة لك ثم تقارنها مرة أخرى و تقسمها و هكذا).
   mohammed-alashaal - Ø­­Ø   
يعنى Recursive مع ملف الاندكس نفسه صح ... تمام .. شكرااا
   Abdeljalil   
FIFO يعني الكيو او الطابور
تخيله مثل طابور انتظار
الشخص الذي يحضر اولا يخرج اولا
والذي يكون في آخر الطابور سيخرج آخرا
   eisa   

ازاى نظام إدارة قواعد البيانات بيقدر يتحكم فى الداتا المهوله دى كلها ! متقوليش بيحملها فى الرام ..*

ممكن http://en.wikipedia.org/wiki/Materialized_view تفيدك
  الموضوع و التعليقات و باقي البيانات في هذه الصفحة منقولة و معدلة من المصدر على الرابط التالي : https://io.hsoub.com/programming/1764
  هذا الموضوع مرخص تحت : رخصة المشاع الإبداعي BY-SA
المشاركة :
تويتر
فيسبوك
الإيميل
لينكد إن
واتساب
الرابط

المناقب الثلاث للمبرمج المميز المناقب الثلاث للمبرمج المميز
أربعة خطوات لبناء تطبيق على أجهزة الموبايل و الأجهزة اللوحية أربعة خطوات لبناء تطبيق على أجهزة الموبايل و الأجهزة اللوحية
#تحدي_الثلاثين_يوماً | اليوم الأول: الأهداف #تحدي_الثلاثين_يوماً | اليوم الأول: الأهداف
كتاب \"تعلم لغة Go بسهولة\" | وادي التقنية كتاب \"تعلم لغة Go بسهولة\" | وادي التقنية
بالتعاون مع حسوب و udacity الاعلان عن NANODEGREE PROGRAM جديد Become a Digital Freelancer بالتعاون مع حسوب و udacity الاعلان عن NANODEGREE PROGRAM جديد Become a Digital Freelancer
كيف تنظر الفلسفة الحديثة لعلاقة الأبناء مع أهلهم؟ كيف تنظر الفلسفة الحديثة لعلاقة الأبناء مع أهلهم؟
10 قواعد لا تدرسها في المدرسة، يقدّمها بيل جيتس مؤسس مايكروسوفت 10 قواعد لا تدرسها في المدرسة، يقدّمها بيل جيتس مؤسس مايكروسوفت

gg gg
مراجعات - تقييمات - فديوها - مقالات و مختلف المواضيع التي تهم اللاعبين العرب
http://gg.leomara.com/
الروابط المختصرة    سياسة الخصوصية    شروط الإستخدام    من أنا    من نحن    الأسئلة الشائعة    موضوع عشوائي    اتصل بنا   
                           
Developed by : MJ7.org