सामान्य विवरण
पुस्तक में 3 खंडों में विभाजित 12 अध्याय हैं। चित्र लगभग नहीं के बराबर हैं, और पढ़ना काफी चुनौतीपूर्ण और समय लेने वाला है क्योंकि सब कुछ सिर्फ टेक्स्ट है, साथ ही फॉन्ट भी बहुत बड़ा नहीं है। प्रत्येक अध्याय के बाद कुछ पृष्ठों का संक्षिप्त सारांश और एक विस्तृत ग्रंथ सूची दी गई है।
संक्षिप्त सारांश
पहला अध्याय मेंटेनबिलिटी, स्केलेबिलिटी और विश्वसनीयता जैसे शब्दों की व्याख्या करता है। लेखक बताता है कि ये क्या हैं और क्यों महत्वपूर्ण हैं। वैसे, मुझे कॉलेज और यूनिवर्सिटी के दिनों से याद है कि सॉफ्टवेयर में ये गुण ही एकमात्र नहीं होने चाहिए।
दूसरा अध्याय डेटा मॉडल्स का वर्णन करता है, विशेष रूप से क्लासिकल रिलेशनल डेटाबेस, डॉक्यूमेंट और ग्राफ डेटाबेस। अभी तक कुछ खास नहीं - सिर्फ विशेषताएं, फायदे और नुकसान। वैसे, क्वेरी लैंग्वेजेज भी यहां शामिल हैं (SQL के अलावा, लेखक ने डिक्लेरेटिव लैंग्वेजेज के उदाहरण के रूप में CSS का भी उल्लेख किया है)।
तीसरा अध्याय। यहां से चीजें एक औसत डेवलपर की दैनिक कार्यप्रणाली के लिए थोड़ी अधिक जटिल और असामान्य हो जाती हैं: B-ट्रीज़, SS-टेबल्स, LSM-ट्रीज़, हैश इंडेक्सेस। यह मुश्किल नहीं है, लेकिन रोज इस्तेमाल नहीं होने से जल्दी भूल जाते हैं। 50 पेज की इस सामग्री में से शायद ही कुछ बातें याद रह पाती हैं। लेकिन जो चीज मैं रोजाना इस्तेमाल करता हूं और यहां बताई गई है, वह है इंडेक्सेस और डेटाबेस स्टोरेज सबसिस्टम्स (InnoDB और MyISAM के उदाहरण के साथ)।
चौथा अध्याय डेटा ट्रांसमिशन फॉर्मेट्स पर केंद्रित है। लेखक को श्रेय देना चाहिए - उन्होंने सिर्फ JSON और XML तक ही सीमित नहीं रहकर Thrift, Protocol Buffers, Avro को भी शामिल किया है। उन्होंने REST और RPC जैसे डेटा ट्रांसमिशन तरीकों का भी वर्णन किया है। यह पहले भाग - इंफॉर्मेशन सिस्टम्स की बेसिक्स का अंत है, और दूसरा भाग - डिस्ट्रिब्यूटेड सिस्टम्स की शुरुआत।
अगले कुछ अध्यायों में से एक, जो एक नया सेक्शन शुरू करता है, रेप्लिकेशन के बारे में है। मेरी राय में, यहां की जानकारी काफी अच्छी है। रेप्लिकेशन सिस्टम्स बनाने की मुख्य टोपोलॉजीज़, लीडर और फॉलोवर नोड्स (लीडरलेस रेप्लिकेशन भी), कंसिस्टेंसी, लेटेंसी प्रॉब्लम्स, क्वोरम - यह सब इस अध्याय में शामिल है।
अगला अध्याय पार्टीशनिंग के बारे में है। इसे भी अच्छी तरह से समझाया गया है। रेप्लिकेशन और पार्टीशनिंग में अंतर। की-रेंज पार्टीशनिंग, हैश पार्टीशनिंग, क्वेरी रूटिंग और लोड बैलेंसिंग - ये मुख्य विषय हैं। वैसे, पार्टीशनिंग को जनरल तरीके से समझाया गया है, किसी खास टेक्नोलॉजी या डेटाबेस से जुड़ा हुआ नहीं, इसलिए यह अन्य सिस्टम्स पर भी लागू होता है: MongoDB, Elasticsearch और SolrCloud में इसे "शार्ड" कहते हैं, HBase में "रीजन", Bigtable में "टैबलेट", Cassandra और Riak में "वर्चुअल नोड" (vnode)।
इसके बाद ट्रांजैक्शन्स पर एक अध्याय आता है। इसे भी अच्छी तरह से समझाया गया है। ज्यादातर हिस्सा ACID के आसपास घूमता है, साथ ही एरर हैंडलिंग और ट्रांजैक्शन एबॉर्ट्स के बारे में भी जानकारी है।
इस सेक्शन के आखिरी दो अध्याय डिस्ट्रिब्यूटेड सिस्टम्स की फेलियर्स और प्रॉब्लम्स (जैसे अनरिलायबल नेटवर्क्स या डिवाइसेज पर टाइम सिंक न होना - "अनरिलायबल क्लॉक्स"), और कंसिस्टेंसी एंड कंसेंसस (लीनियराइजेबिलिटी) और डिस्ट्रिब्यूटेड ट्रांजैक्शन्स के बारे में हैं।
अगले तीन अध्यायों में से (अगर आखिरी सुपर थ्योरेटिकल अध्याय को छोड़ दें जो इंफॉर्मेशन सिस्टम्स के भविष्य के बारे में है), बैच और स्ट्रीम प्रोसेसिंग वाले अध्याय (जैसे कि उनके नाम हैं) उल्लेखनीय हैं। यहां Hadoop, MapReduce, मैसेज ब्रोकर्स के बारे में बात की गई है। हालांकि यह सारी जानकारी थोड़ी सतही तौर पर दी गई है।
मेरी राय
प्रोग्रामिंग पर एक थ्योरेटिकल बुक जो डेटाबेस टाइप्स, ट्रांजैक्शन्स की अवधारणा, रेप्लिकेशन, पार्टीशनिंग, हाई लोड और डिस्ट्रिब्यूटेड सिस्टम्स की अवेलेबिलिटी की समस्याएं, स्ट्रीम और बैच प्रोसेसिंग जैसे टर्म्स को गहराई से समझाती है - और सबसे महत्वपूर्ण - इन समस्याओं के समाधान के लिए कौन से टूल्स और टेक्नोलॉजीज़ मौजूद हैं। पेजों की अधिक संख्या के कारण इसे पढ़ना लंबा और थकाऊ लगता है। लेकिन कुल मिलाकर, अगर प्रोग्रामिंग सीखना दिमाग में एक पज़ल बनाने जैसा है, जहां हर पीस कोई टेक्नोलॉजी, अप्रोच या सिर्फ सलाह है, तो यह किताब निश्चित रूप से ऐसे बहुत सारे पीसिस प्रदान करती है। इसलिए, हालांकि किताब बड़ी और थकाऊ थी, और सारांश - बहुत लंबा, फिर भी मैंने इसे काफी अच्छी रेटिंग दी है।