リレヌショナルDBMSがスタヌトアップに最適な理由加藀メッセンゞャヌの開発履歎の䟋

画像



歎史的に、コンピュヌタヌの開発はデヌタベヌス管理の分野の進歩ず䞊行しお行われたした-これは、研究者や実践者が解決したタスクの䞭で、受信したデヌタの凊理、コンパクトストレヌゞ、最速の怜玢のタスクによっお倧きな圹割が果たされたそしお珟圚も継続しおいるずいう事実によるものです。



したがっお、技術の進歩は、プロセッサの電力、メモリの増加、たたはデバむスサむズの瞮小の分野だけでなく、デヌタ効率の改善の分野でも進みたした。 その結果、倚数の異なるデヌタベヌス管理システムDBMSが登堎したした。



圓瀟の補品である加藀コヌポレヌトコミュニケヌションメッセンゞャヌは、PostgreSQL DBMSを䜿甚しおいたす。 今日、私たちはこの玠晎らしいツヌルの歎史を思い出し、情報技術の分野でスタヌトアップに䜿甚するこずの利点を瀺したいず思いたす。



リレヌショナルモデルずSQL



DBMSの3぀の䞻な方向は、これらの方向の基瀎ずなるさたざたなデヌタモデルネットワヌク、階局、およびリレヌショナルによっお䌝統的に区別されたす。



リレヌショナルデヌタモデルは、珟圚3぀の名前の䞭で最も人気があり、高床なものですが、IBMの埓業員である英囜の科孊者Edgar Coddによっお、前䞖玀の60幎代埌半に最初に開発されたした。 1970幎に、圌はリレヌショナルデヌタモデルに関する最初の研究である倧芏暡共有デヌタバンクのデヌタのリレヌショナルモデルを発衚したした。



画像



゚ドガヌ・コッド、リレヌショナルデヌタモデルの䜜成者



Coddは、デヌタに察しお実行できる8぀の基本操䜜のセットを提案し、このセットがリレヌショナル代数の基瀎を築きたした 。 前䞖玀の70幎代半ばにCoddによっお䜜成された代数に基づいお、1986幎に暙準化されたSQLず呌ばれるリレヌショナルデヌタベヌスのデヌタを操䜜するためのプログラミング蚀語が開発され始めたした他の倚くのものもありたす。



バヌクレヌでの研究ポストグレスの出珟



最初のリレヌショナルデヌタベヌス管理システムの1぀はオヌプンIngresシステムでした。これは、プロゞェクト、Project Rリレヌショナルデヌタベヌスに関するIBMの出版物に興味を持぀ようになったバヌクレヌの研究者によっお䜜成され、独自のシステムを開発しようずしたした。 Ingresはク゚リにSQL以倖の蚀語を䜿甚したした。これはQUELず呌ばれおいたした。



その埌、以前Ingresの䜜成に携わったMichael Stonebreakerは、バヌクレヌの孊生ず䞀緒に、新しいプロゞェクト-Post In gres Postgresを立ち䞊げたした。 新しいシステムは1986幎から1995幎にかけお開発され、QUELの埌継であるPOSTQUELク゚リ蚀語を䜿甚したした。



画像



マむケル・ストヌンブレむカヌ



その埌、Stonebreakerはいく぀かのDBMS䌁業を蚭立したした䟋 Informixが賌入した Illustra 、 StreamBase Systems 、HPが賌入した Vertica 、 VoltDB 。



Postgresに取り組んだ圌の孊生は、POSTQUELがSQLに眮き換えられた独自のバヌゞョンのデヌタベヌスを䜜成したした。 このプロゞェクトはもずもずPostgres95ず呌ばれ、カリフォルニア倧孊バヌクレヌ校が熱狂的なチヌムの手でこの開発を譲枡した埌、珟圚の名前-PostgreSQL-を取埗したした。



デヌタベヌス゚ンゞンの問題NoSQLの誕生



90幎代埌半から2000幎代初頭に、DBMS垂堎にはかなりの数の䞀般的なデヌタベヌスが存圚する状況がありたしたが、それぞれに重倧な欠点がありたした。 商甚のOracle、IBM DB2、およびMicrosoft SQL Serverの堎合、これらの欠点は非垞に倧きく、最も人気のある無料のMySQLプロゞェクトは機胜が制限されおいたしたたずえば、ストアドプロシヌゞャ、トリガヌ、ビュヌは2005幎にこのDBMSにのみ登堎したした。



同時に、PostgreSQLは、その開発者が膚倧な量ず䞀般に非垞に高品質の䜜業を行ったずいう事実にもかかわらず、商業プロゞェクトでの䜿甚を制限した高速性ず管理の容易さを自慢できたせんでした。



䞀般にSQLずリレヌショナルモデルを䜿甚する既存の補品の問題により、愛奜家は他の暙準を䜿甚しお機胜するデヌタベヌスを䜜成するようになりたした。これは、共通のNoSQLカテゎリに結合できるプロゞェクトの数です。



画像



倚くのNoSQLデヌタベヌスが登堎したしたいく぀かの有名な䟋MongoDB、Redis、Riak。 この方向性の開発は、断片化ず高床に専門化された補品の䜜成のパスに沿っお行われたした。



DBMSずスタヌトアップ



倚数の新しいNoSQL開発の出珟は、ある時点でスタヌトアップの態床を埓来のSQLシステムに倉えたした。ITプロゞェクトの䜜成者は、ITプロゞェクトの䜜成者に、珟代の動的アプリケヌションで䜜業するのが耇雑すぎ、叀く、困難であるず認識し始めたした。



しかし、埐々に、NoSQLカテゎリヌのDBMSには次の重芁なそしお非垞に䞍快なプロパティがあるこずが明らかになりたした-それらは非垞に狭く定矩された問題のみを解決するのに適しおいたす。 このプロパティにより、スタヌトアップでの条件付きMongoDBの䜿甚は非垞に危険なステップになりたした-初期段階では、条件付きMongoDBは特定の範囲のタスクに理想的な遞択かもしれたせんが、スタヌトアップがその戊略を倚少倉曎した瞬間そしおこれはほずんど垞に発生したす新しい定匏化の問題を解決するのにより適しおいたす。 ほずんどの堎合、この他のDBMSぞの「移動」は耇雑すぎお費甚のかかる操䜜になるため、初心者のビゞネスではできたせん。



䞀方、NoSQLカテゎリからのDBMSの急速な開発の間、埓来のリレヌショナルDBMSの開発者も怠けおいたせんでした。 特に、PostgreSQLの䜜成者は、プロゞェクトの生産性、管理の容易さ、文曞化に取り組みたした。その結果、2000幎代の終わりに、「高霢者のひげを生やした倪錓腹のbげたおじさんのための退屈でわかりにくいアンティヌクツヌル」から、 「テクノロゞヌヒップスタヌ」の歊噚庫。



画像



PostgreSQLおよびKatoメッセンゞャヌ



加藀チヌムの開発者は、さたざたなテクノロゞヌ䌁業やスタヌトアップ Rdioプロゞェクトなどで採甚されおおり、圌ら自身の経隓から、倚くの既存のDBMSで䜜業するこずの長所ず短所を感じたしたそしお、れロからシステムを構築するこずに関連するほずんどすべおの可胜性のある熊手を同時に螏みたした。 その結果、プロゞェクトの䜜業を開始するために、PostgreSQLを遞択したした。



商業プロゞェクトでは、さたざたな偎面を拡倧する良い機䌚を持぀こずが非垞に重芁です。 各プロゞェクトには独自の偎面がありたす。たずえば、加藀では、郚屋のメッセヌゞ履歎のベヌスをスケヌリングする必芁がありたす。



画像



デヌタスキヌマの䞍倉性は、NoSQLの䞀般的な利点の1぀です。 PostgreSQLのhstoreモゞュヌルちなみにMuscovites補を䜿甚するず、キヌず倀をテヌブル列に曞き蟌むこずができたす。これにより、開発者は新補品の機胜を远加するプロセスでデヌタスキヌムを絶えず倉曎する必芁がなくなりたす。 同時に、むンデックスを䜜成する機胜は残りたす。



PostgreSQL 9.2では、新しい型JSONが導入されおいたす 。 hstoreずは異なり、JSON型はネストされた構造をサポヌトするため、PostgreSQLはドキュメントを操䜜するための䟿利なツヌルになりたす。 jsonbタむプでは、GINむンデックスを䜜成できるこずも重芁です。これにより、JSONオブゞェクトをすばやく怜玢できるようになりたす。



hstoreずJSON型の導入により、PostgreSQLテヌブル内にNoSQLスタむルのデヌタベヌスを䜜成できるようになりたした。これにより、NoSQLずSQLの利点を同時に䜿甚できたす。



hstoreモゞュヌルの機胜を説明するためのいく぀かの兞型的な操䜜を次に瀺したす。



hstore拡匵機胜ずhstore型の列を持぀テヌブルを䜜成したす。



postgres=# create extension hstore; WARNING: => is deprecated as an operator name DETAIL: This name may be disallowed altogether in future versions of QL. CREATE EXTENSION postgres=# create table hstore_test (data hstore); CREATE TABLE
      
      





hstore゚ントリを远加したす。2぀のキヌは、倀が「hello」の「a」ず倀が「world」の「b」です。



 postgres=# insert into hstore_test values (hstore(array['a', 'hello', 'b', 'world'])); INSERT 0 1 postgres=#
      
      





キヌ「a」の倀を確認したす。



 postgres=# SELECT data->'a' FROM hstore_test; ?column? ---------- hello (1 row) postgres=# ▄
      
      





キヌ「a」ず「c」が存圚するかどうかを確認したす。



 postgres=# select data ? 'a', data ? 'c' from hstore_test; ?column? | ?column? ----------+-------------- t | f (1 row)
      
      





キヌ「b」の倀を倉曎したす。



 postgres=# update hstore_test set data = data || ('b' => 'world!'); UPDATE 1 postgres=# select data->'b' from hstore_test; ?column? -------------- world! (1 row)
      
      





hstoreタむプのすべおの操䜜は、PostgreSQLプロゞェクトドキュメントの察応するセクションで説明されおいたす 。



Katoメッセンゞャヌでは、hstoreテヌブルを䜿甚しお、アカりント、ルヌム、チヌム、組織などのさたざたなオブゞェクトの蚭定ず属性を保存したす。



歎史の茪



ストヌリヌは茪になっおおり、倚くの堎合、「すべおが新しい-それは忘れられおいる」ずいうフレヌズが真実です-DBMSの構築ずデヌタの操䜜における倚くの珟代の傟向は、リレヌショナルモデルの䜜成者ずSQL開発者によっお理解され、予想されおいたした。



PostgreSQLは、䞖界をリヌドする専門家の研究結果を絶えず取り入れおいるプロゞェクトの暙準的な䟋です。 その結果、このDBMSは䞀皮のナニバヌサルデザむナヌずしお機胜し、スタヌトアップはその詳现を䜿甚しお、予期しないタスク範囲の拡倧に悩たされるこずなく、実甚的な商甚補品を非垞に迅速に䜜成できたす。



All Articles