集中データブック

こんにちは親愛なる読者。 「長期建設」という本、つまり西洋では決して出版されないであろう本について書くことはめったにありません。 しかし、今日は、基本的な書籍Designing Data-Intensive Applicationsに長年取り組んでいるMartin Kleppmanのブログからの投稿を紹介したいと思います。









比較的小さな出版物で、著者はそのような膨大な本の基本的なアイデアを提示し、対象読者の概要を説明し、翻訳が行われるべきであるとほぼ確信させることができました。 しかし、あなたはまだ読んで投票してください。



2012年の終わりに、ブログ記事「Webアプリでのキャッシュの再考」に書いた。 ほぼ4,000の単語があり、 一般的な知恵によると、良い投稿よりもはるかに長いです。 それにもかかわらず、私はその中で私が話す必要がある問題をほんの少し掘り下げただけの印象を持ちました。



そのため、たとえば本など、より本物の作品を書くかどうかを考えました。 私は書くのが好きです、なぜならそのような仕事は著者が深い研究に従事して、問題を考えて、それからこれらすべてを論理的に説明しようとするのを奨励するからです。 したがって、私はちょうどそれについて読んだ場合よりもはるかに良い問題を解決します。 または、より格言的に言えば:



書くことは、あなたの考えがいかに不器用であるかを理解するのに役立ちます。 -ディック・ギンドン


すでにそこにある本



私が読みたいこのような本は単に存在しなかったので、私はこの作品を取り上げました。 データベース、分散システム、バッチおよびストリーム処理、一貫性、キャッシング、インデックス作成のすべての分野のデータシステムを適切なレベルの複雑さで説明する本が必要でした。 しかし、ほとんどすべての既存の書籍、ブログの投稿などが判明しました。 次のカテゴリのいずれかに分類されます。



  1. ほとんどのITブックは、テクノロジー固有のアプリケーションガイドです。 Xデータベースまたはプログラミング言語Yを使用するように指示されていることを前提としているため、その方法を説明しています。 これらの本は優れていますが、実際に必要なツール(XまたはY)を選択しようとする状況ではほとんど役に立ちません。 そのような本は通常、特定の技術のメリットに焦点を当て、その欠点を無視します。



  2. いくつかのテクノロジーの比較はブログでよく見られますが、そのような出版物では主に表面的な側面(パフォーマンス、API、ライセンスを特徴付けるコントロールポイント)に触れており、テクノロジーの基本的なデバイスは完全に無視されています。 このような投稿は、ゲームTop Trumpsのデータベース上のカードと比較できますが、詳細な表現はできません。



  3. それどころか、教科書はさまざまな技術の特徴である基本原則と妥協について論じていますが、同時にそのような本は現実とのすべてのつながりを失います。 原則として、そのような本の著者は、その分野で広範な研究経験を持つ学者であり、実際のソフトウェアシステムでの実務経験はありません。 多くの場合、技術的に正しいことを述べていますが、この情報は役に立たないか、実際のシステムの作成を開始するとすぐに混乱する可能性があります。


3つのカテゴリすべての長所を組み合わせた本を書きたかったのです。 このような本は、データ処理システムの作成に関する大きなアイデアの物語であり、ソフトウェアバージョンを更新しても変わらない基本原則によって説明されます。 しかし、この本は現実との接触も失わず、実際に機能するもの、機能しないもの、およびその理由を説明します。 この本は、実際に実際に使用されているツールと製品を調査し、それらで使用される基本的なアプローチを比較し、特定の問題を解決するのに最適なテクノロジーを理解するのに役立ちます。



特定のシステムの使用方法だけでなく、内部でどのように機能するかを理解したかったのです。 これは部分的には知的好奇心によるものですが、同じように重要なこととして、このようにしてシステムが何をしているのかを明確に想像できます。 計画外の動作が発生した場合、またはこのテクノロジまたはそのテクノロジの真の機能を確認する場合は、少なくとも内部で何が起こっているかを想像することが非常に役立ちます。



O'Reillyのスタッフを含むさまざまな人々とこれらのアイデアを話し合ったところ、そのような本が必要なのは私だけではないことが明らかになりました。 それで、「 Designing Data-Intensive Applications 」という本のアイデア生まれました。 そして、あなたは棚の上で彼女を簡単に認識することができます-カバーの上にそのようなクールなヒンドゥスタンのイノシシがあるので。



本「高負荷のアプリケーション。 ビッグデータの効果的な処理」(詳細なタイトルはごめんなさい。ただの「イノシシの本」と呼ぶこともできます)はまだリリースの準備中ですが、サイトはすでに早期リリースを投稿しています。



この本は誰のためですか?



サーバー側のアプリケーション(たとえば、Webアプリケーションのマシンインターフェイス)を開発するプログラマーである場合は、この本が役立ちます。 Webアプリケーションの作成方法とデータベースの処理方法をすでに知っていること、およびスキルを向上させることを前提としています。 数百万人のユーザーにサービスを提供する複雑でスケーラブルなシステムで作業したい場合、特に複雑で絶えず変化するデータを扱う場合、古代の継承されたエコシステムに柔軟性を与えたい場合があります。



この本は非常に基本的なことから始まり、次にデータベースシステムのすべてのレベルについて説明します。各レベルは個別の章になります。 さまざまな状況には独自のソリューションが必要であると深く確信しているため、特定のアーキテクチャやアプローチを促進しようとはしていません。 したがって、各章では、さまざまな方法の概要と比較を示します。それぞれの方法は、適切な状況で成功しています。



どのプログラミング言語またはフレームワークを使用するかは関係ありません。この本はすべての人に適しています。 この記事では、アーキテクチャとアルゴリズム、基本原則と実際の制限、設計中に行われた決定の正当性について説明します。



本で提示されたアイデアはどれも真に革新的ではなく、それらの多くは数十年前のものです。 これはすべて、会議、研究記事、投稿、コード例、バグトラッカー、およびプログラマーの伝承で、すでにどこかで表現されています。 しかし、私が知る限り、この方法で1つの本にこれらのアイデアをすべて収集、比較、評価した人はいません。



選択肢が何であるか、それぞれの長所と短所が何であるかを理解したら、これが専門的な成長に役立つことを願っています。 意識的に妥協し、適切なツールを選択することで、より信頼性の高いシステムを作成し、長期的に維持しやすくなります。 だから、私たちは自分の仕事に対処し、より良いプログラムを書くのが上手くなります。



All Articles