ببساطة هي المكان اللي بنخزن فيه الداتا و بنجيبها تاني .. الداتابيز ممكن يتقال عليها Database Management System (DBMS) و بتوفر CRUD operations
CRUD: اختصار ل
Create
Read
Update
Delete
و في حالة ان عندك distributed system .. ف بيبقى فيه أنواع مختلفة من الfailures .. زي ان السيرفر يقع .. الdisks تتمسح .. يبقى الnetwork connection وحش و الداتا تضيع .. إلخ
Create
Read
Update
Delete
و في حالة ان عندك distributed system .. ف بيبقى فيه أنواع مختلفة من الfailures .. زي ان السيرفر يقع .. الdisks تتمسح .. يبقى الnetwork connection وحش و الداتا تضيع .. إلخ
الtransaction بيبقى عبارة عن database operation .. و ساعات ممكن تقرا ان الdatabase is acid
Atomicity: all operations succeed or fail together, i.e. the transaction is an "atomic" unit
يا نعيش عيشة فل يا نموت إحنا الكل
Consistency
حشرحها ف التويتة اللي جاية
Atomicity: all operations succeed or fail together, i.e. the transaction is an "atomic" unit
يا نعيش عيشة فل يا نموت إحنا الكل
Consistency
حشرحها ف التويتة اللي جاية
Isolation: transactions can be executed concurrently
و الtransactions مايتأثروش ببعض و المفروض الdeveloper و الdatabase architect ياخدوا بالهم من أي race condition
Durability: a "committed" transaction is persisted to memory
زي إن الصور اللي بنبعتها لبعض عالماسنجر بتفضل موجودة
و الtransactions مايتأثروش ببعض و المفروض الdeveloper و الdatabase architect ياخدوا بالهم من أي race condition
Durability: a "committed" transaction is persisted to memory
زي إن الصور اللي بنبعتها لبعض عالماسنجر بتفضل موجودة
الCAP theorem اختصار ل
Consistency, Availability, Partition tolerance
معنى الConsistency يعني لما أكتب حاجة في الداتابيز .. و بعدين أقراها .. حلاقي الvalue اللي أنا لسه كاتبها
Consistency is reading the most up to date data.
و دي بتبقى مطلوبة لو مثلا بتعمل payment application
Consistency, Availability, Partition tolerance
معنى الConsistency يعني لما أكتب حاجة في الداتابيز .. و بعدين أقراها .. حلاقي الvalue اللي أنا لسه كاتبها
Consistency is reading the most up to date data.
و دي بتبقى مطلوبة لو مثلا بتعمل payment application
لو في حسابي في البنك ١٠٠٠ جنيه لو أنا بعت فلوس لواحد صاحبي ٢٠٠ جنيه ، المفروض الداتابيز تupdate حسابي في البنك و تنقص المبلغ اللي أنا لسه باعته و تزود حساب صاحبي ٢٠٠ جنيه .. لو معملتش ده (أو اتأخرت مثلا دقيقة) .. ف أنا ممكن أبعت ٢٠٠ جنيه و حسابي ١٠٠٠ جنيه زي ما هو
ف أبعت ١٠٠٠ جنيه لواحد صاحبي تاني .. كده حسابي المفروض يبقى سالب ٢٠٠ و العملية متتمش لو الdatabase supports consistency .. لكن لو إتأخرت ف الUpdate operation ف أنا ممكن أستغل الثغرة دي و أنصب عالبنك.
Availability:
معناها إن كل request بيتم استقباله من خلال non-failing node في الsystem لازم ترد عالrequest بresponse .. حتى لو فيه فيه network issues و مفيش غير 2 nodes شغالين ف الdistributed system .. الrequest حيتم الرد عليه
أقصد ب node يعني database server
معناها إن كل request بيتم استقباله من خلال non-failing node في الsystem لازم ترد عالrequest بresponse .. حتى لو فيه فيه network issues و مفيش غير 2 nodes شغالين ف الdistributed system .. الrequest حيتم الرد عليه
أقصد ب node يعني database server
Partition Tolerance:
و ده معناه ان لو حصل فيه مشكلة ف الcommunication ما بين 2 nodes .. الsystem حكمل شغل عادي .. عشان كده بن replicate الداتا
الCAP theorem بقى بتقول ان أي داتابيز تقدر ت support حاجتين بس من ال٣ حاجات دول لكن استحالة مع بعض
و ده معناه ان لو حصل فيه مشكلة ف الcommunication ما بين 2 nodes .. الsystem حكمل شغل عادي .. عشان كده بن replicate الداتا
الCAP theorem بقى بتقول ان أي داتابيز تقدر ت support حاجتين بس من ال٣ حاجات دول لكن استحالة مع بعض
طب و ايه الفرق بين الSQL و الNoSQL databases ؟
الSQL أو الrelationship database هي بتوفر Consistency و Availability لكن مش بتsupport partition tolerance .. لو عندك كذا node
الSQL أو الrelationship database هي بتوفر Consistency و Availability لكن مش بتsupport partition tolerance .. لو عندك كذا node
Document Databases
ده بدل rows and columns بتبقى key and document .. بتشيل كمية كبيرة و ممكن مثلا تستعملها لو عندك ويبسايت زي pastebin.com
بحيث الkey يبقى الUserId و الdocument يبقى الكود زي MongoDB
ده بدل rows and columns بتبقى key and document .. بتشيل كمية كبيرة و ممكن مثلا تستعملها لو عندك ويبسايت زي pastebin.com
بحيث الkey يبقى الUserId و الdocument يبقى الكود زي MongoDB
Wide-Column Databases
و هنا بدل ما بنquery row by row .. بيبقى column by column .. ده بيبقى سريع جدا عشان في حالة انك بتدور على حاجة ف coloumn معين .. حتضر تقرا الrow كله في حالة الSQL .. لكن هنا انت بتقرا الcells بتاعة الcolumn بس زي Cassandra و HBase
و هنا بدل ما بنquery row by row .. بيبقى column by column .. ده بيبقى سريع جدا عشان في حالة انك بتدور على حاجة ف coloumn معين .. حتضر تقرا الrow كله في حالة الSQL .. لكن هنا انت بتقرا الcells بتاعة الcolumn بس زي Cassandra و HBase
Graph Databases
و ده بالظبط كأنك بتعمل Object Oriented Design .. و الentity بتبقى node و ليها edge بيمثل الrelationship .. مواقع زي فيسبوك و تويتر بستعملوها عشان يعملوا People who you may know و Who to follow
و ده بالظبط كأنك بتعمل Object Oriented Design .. و الentity بتبقى node و ليها edge بيمثل الrelationship .. مواقع زي فيسبوك و تويتر بستعملوها عشان يعملوا People who you may know و Who to follow
طب امتى نستعمل ايه ؟
استعمل SQL لو محتاج ACID support و لو الschema بتاعتك مش حتتغير .. بلاش تنط عالNoSQL على طول .. لحد النهاردة فيسبوك و يوتيوب بيخزوا الusers data in a SQL database :)
استعمل SQL لو محتاج ACID support و لو الschema بتاعتك مش حتتغير .. بلاش تنط عالNoSQL على طول .. لحد النهاردة فيسبوك و يوتيوب بيخزوا الusers data in a SQL database :)
استعمل الNoSQL لو حات scale horizontally و الداتا كبيرة فحت و ملهاش structure و الschema حتتغير.
أتمنى أكون أفدتكم و لو حابب/ة تتعلموا أكتر عن الdatabase ف دي المصادر اللي ساعدتني
igotanoffer.com
youtube.com
youtube.com
youtube.com
youtube.com
igotanoffer.com
youtube.com
youtube.com
youtube.com
youtube.com
و ده مقال في منتهى الروعة عن ازاي pinterest عملت scaling للSQL database بتاعتها
medium.com
بس كده and i hope you found this useful 😊
medium.com
بس كده and i hope you found this useful 😊
جاري تحميل الاقتراحات...