Designing Data Intensive Applications Book Recommendation

يُعد هذا الكتاب من ضمن الكتب المؤثرة في مجال هندسة البرمجيات، و تستطيع اللجوء إليه كمرجع في كثير من المواضيع الخاصة بالنظم الموزعة وخاصة في تصميم التطبيقات التي تحتاج إلى التعامل مع كم كبير من البيانات.
Designing Data Intensive Applications Book Recommendation

في هذه الصفحة

معلومات عامة عن الكتاب

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

يبدأ الكتاب بمقدمة عامة ليناقش من ينبغي له قراءة هذا الكتاب وما الذي يتناوله الكتاب وبعض المصادر لمن يود أن يتعمق في القراءة بشكل أوسع وما هي الفصول التي يتناولها وترتيبها والكتاب يقسم كل فصل إلى مجموعة من الأجزاء.

مراجعة لمحتوى الكتاب

في الفصل الأول يتناول الكتاب أساسيات نظم البيانات أو ما يعرف بالـ Data Systems ويبدأ هذا الفصل بحديثه عن كيفية التفكير في نظم البيانات ويتناول في الجزء الأول من هذا الفصل الفرق بين الـ Reliability وما تشمله من أنواع مختلفة من الأخطاء كالـ Hardware Faults, Software Errors and Human Errors والفرق بينه وبين الـ Scalability موضحًا مالذي يعنيه بوصف الحمل أو ما يعرف بالـ Load وكيفية تعريف ووصف الأداء وما هي الفرص المتاحة والاختيارات للتعامل مع هذا الحمل وآخيرًا الفرق بينهم وبين الـ Maintainability مركزًا على بساطة النظام وكيف للنظام أن يكون قابل للتطور والتغيير فيه بسهولة بالإضافة إلى العمليات التي تتم على هذه النظم وكيفية الاهتمام بجعلها تتم بشكل بسيط.

في الجزء الثاني من هذا الفصل تناول الكتاب النماذج المختلفة لقواعد البيانات أو ما يعرف بالـ Data Models and Query Languages وتعمق في بعض المواضيع كالفرق بين الـ Relational Vs Document Model ونشأة الـ NoSQL بالإضافة إلى حديثه عن الـ Declarative Approach and MapReduce في الـ Queries وخاتمًا بالـ Graph-Like Data Models.

أما في الجزء الثالث تناول الكتاب موضوع في غاية الأهمية وهو كيفية تخزين وطلب البيانات أو ما يعرف بالـ Storage and Retrieval وبلا شك تعمق في الحديث عن الـ Indexing وأنواعه المختلفة بشكل في غاية الروعة، وتناول أيضًا موضوع مهم وشائك في اختيار قواعد البيانات وهو هل أنت مهتم بعمل عمليات على هذه البيانات بشكل ما أم تريد عمل بعض التحاليل عليها أو مايعرف بالـ Transaction Processing Or Analytics وناقش في هذا الجزء كيف أن للإجابة على هذا السؤال أن تغير في اختيارك لقواعد البيانات متحدثًا عن الـ Data Warehousing ووجود الـ Column-Oriented Databases وكيفية الاستفادة من هذا النوع في جزء الـ Data Analysis.

وفي الجزء الأخير من هذا الفصل ناقش الكتاب التنسيقات المختلفة للبيانات وتطورها أو ما يعرف بالـ Encoding متناولًا الـ JSON, XML and Binary Variants والـ Avro Schema .

وبهذا يختتم الكتاب فصله الأول ليدخل في فصل جديد وهو من أهم وأمتع الفصول والتي لا بد من قراءتها أكثر من مرة، وعنوان الفصل هو البيانات الموزعة أو Distributed Data.

في الجزء الأول من هذا الفصل يتناول الكتاب مفهوم التكرار أو ما يعرف بالـ Replication وتناول في هذا الجزء العديد من المواضيع المهمة كالـ Leaders and Followers موضحًا الفرق بين عمليات التكرار المتزامنة وغير المتزامنة كالـ Sync Vs Async في عملية التكرار وكيفية معالجة المشاكل المتوقع حدوثها كحدوث Outage لأحد الأنظمة وما الفرق بين حدوث هذه المشكلة للـ Leader or Follower وما الذي يترتب عليه وكيفية علاجه.

وبعد ذلك يناقش الكتاب المشاكل التي قد تنتج من وجود تأخر في عملية التكرار أو ما يعرف بالـ Replication Lags مسلطًا الضوء على المشاكل والحلول التي يمكن اللجوء إليها لحل هذه المشاكل بشكل مرتب ومنظم.

ومن ثم يناقش الكتاب كيفية تحقيق التكرار باستخدام أكثر من Leader ففي الجزء السابق كان كل الاهتمام منصب على Single Leader ويتناول الكتاب في هذا الجزء أمثلة واستخدامات لهذا النوع من عمليات التكرار وما هي المشاكل المتوقع حدوثها وكيفية علاجها بالعديد من الطرق والمزايا والعيوب لكل طريقة حتى يكون لديك كامل الاختيار لتحديد الطريقة الأمثل التي تناسب النظام والمتطلبات التي تريد الحصول عليها.

وفي آخر هذا الجزء يتناول آخر أنواع عمليات التكرار وهو عملية التكرار بدون وجود Leader أو ما يعرف بالـ Leaderless Replication مسلطًا الضوء على العديد من المواضيع الهامة كالـ Sloppy Quorum and Hinted Handoffs وبالطبع ما المشاكل المتوقع حدوثها وكيفية علاجها. وبهذا يكون تناول الكتاب مفهوم عمليات التكرار بشكل مفصل.

أما في الجزء التالي من هذا الفصل فهو يتحدث عن التقسيم أو ما يعرف بالـ Partitioning وما الفرق بينه وبين التكرار ولماذا نلجأ إليه وما هي أهميته، وكيفية عمل تكرار للأجزاء التي ستقسم. وتناول الكتاب كل ما يمكن تخيله عن التقسيم بداية باستعمال الـ Hashing والـ Range للتقسيم وما المشاكل التي ستنتج من استعمال هذا النوع وتناول أيضًا موضوع مهم وهو عملية اعادة التوازن بين التقسيمات أو مايعرف بالـ Rebalancing Partitions فماذا لو ازداد أو نقص عدد الـ Nodes الموجودة في النظام ككل، وما هي الـ Techniques المختلفة للتغلب على هذه المشكلة.

ومن ثم يتناول الكتاب مفهوم آخر في غاية الأهمية ألا وهو الـ Transactions وتناول في هذا الجزء كل ما له علاقة بالـ ACID وما معناها وما هي الـ Isolation Levels والفرق بينهم بشكل مفصل وختم هذا الجزء بعملية الـ Two Phase Locking ومدى أهميتها خصوصًا مع النظم الموزعة.

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

وفي الجزء الأخير من هذا الفصل تناول الكتاب مفهوم التطابق والإجماع أو مايعرف بالـ Consistency and Consensus والأنواع المختلفة له وكيفية تحقيقه مسلطًا الضوء على الـ Ordering Guarantee والـ Distributed Transactions.

ثم نصل الآن إلى الفصل الأخير من هذا الكتاب والذي تناول البيانات المشتقة أو ما يعرف بالـ Derived Data وبدأ أول أجزاء هذا الفصل بحديثه عن عمليات معالجة البيانات عن طريق الدفعات أو ما يعرف بالـ Batch Processing متحدثًا عن السبل المختلفة لتحقيقه وبداية ظهوره في الـ Unix ومن ثم وصولًا إلى الـ MapReduce ونظم الملفات الموزعة أو ما يعرف بالـ Distributed Filesystems.

ومن ثم في الجزء التالي من هذا الفصل يتناول الكتاب عمليات معالجة تدفق البيانات أو ما يعرف بالـ Stream Processing مسلطًا الضوء على كثير من الأفكار والمواضيع الهامة كالـ Event Sourcing والـ Messaging Systems وكيفية تحقيق التوازن للبيانات بين أكثر من نظام باستخدام الـ Change Data Capture على سبيل المثال وما هي الطرق المختلفة لمعالجة تدفق البيانات والوسائل المتاحة لتحقيق ذلك.

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

المميزات والانتقادات

المميزات:
المميزات:

١- مليء بالأمثلة الواقعية والصور التوضيحية مما يسهل عملية الفهم والاستيعاب.
٢- مليء بالأفكار والمواضيع المهمة في عالم النظم الموزعة.
٣- يمكن الاعتماد عليه كمرجع وقراءته أكثر من مرة.
٤- يتناول المواضيع المختلفة مسلطًا الضوء على المشاكل المتوقع حدوثها وحلول مقترحة لعلاج كل مشكلة. 
٥- عرض التفضيلات والاختيارات المتاحة مما يتيح لك الفرصة للتفكير واختيار ما يلائم النظام الذي تعمل عليه.

في الختام

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

اشترك الآن بنشرة اقرأ-تِك الإخبارية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!
رائع! تحقق من بريدك الإلكتروني واضغط على الرابط لإكمال تسجيل الدخول.
حدث خطأ! من فضلك قم بادخال بريد إلكتروني صحيح!