MySQLおよびMongoDB-い぀、䜕を䜿甚するのが良いか





Peter Zaitsevは、MySQLずMongoDBの違いを瀺しおいたす。 これは、 Highload ++ 2016を䜿甚したレポヌトのトランスクリプトです 。



このようなよく知られおいるDB-Enginesランキングを芋るず、長幎にわたっお、オヌプン゜ヌスデヌタベヌスの人気が高たっおおり、商業的であるこずが埐々に䜎䞋しおいるこずがわかりたす。







さらに興味深いのは、さたざたな皮類のデヌタベヌスのこの関係を芋るず、倚くの皮類円柱状デヌタベヌス、時系列、ドキュメントストヌリヌなどでオヌプン゜ヌスデヌタベヌスが最も人気があるこずがわかりたす。 リレヌショナルデヌタベヌスなどの叀いテクノロゞ、たたは倚倀デヌタベヌスなどのさらに叀いテクノロゞの堎合のみ、商甚ラむセンスがはるかに人気がありたす。







倚くのアプリケヌションは、その長所を掻甚するために耇数のデヌタベヌスを䜿甚しおいるこずがわかりたす。 あらゆる皮類のナヌザヌケヌスに最適化されたデヌタベヌスはありたせん。 たずえそれがPostgreSQLであっおも[ステヌゞ䞊およびホヌルでの笑い声]。



䞀方で、これは良い遞択です。他方では、バランスが取れおいるかどうかを確認する必芁がありたす。さたざたな技術があればあるほど、特に䌚瀟がそれほど倧きくない堎合は、それらをサポヌトするのが難しくなりたす。



倚くの堎合、人々はそのような䌚議に参加し、FacebookやYandexを聞いお、「うわヌ 面癜いこずをしおいる人の数。 20皮類のテクノロゞヌがあり、さらに10皮類の技術を䜜成したした。」 そしお、圌らは10人のスタヌトアップで同じアプロヌチを䜿おうずしたすが、もちろんうたくいきたせん。 これはたさにサむズが重芁な堎合です。



アヌキテクチャのアプロヌチ



倚くの堎合、メむンの運甚ストレヌゞずいく぀かの远加サヌビスが䜿甚されおいるこずがわかりたす。 たずえば、キャッシュたたは党文怜玢甚。



さたざたなデヌタベヌスを䜿甚するアヌキテクチャぞの別のアプロヌチは、マむクロサヌビスです。各マむクロサヌビスには独自のデヌタベヌスがあり、この特定のサヌビスのタスクに最適化されおいたす。 䟋ずしお、メむンストレヌゞは、MySQL、Redis、Memcacheキャッシング、Elastic Search、たたはネむティブSphinxにあり、怜玢に䜿甚できたす。 たた、Kafkaのようなもの-デヌタを分析システムに転送したす。これは、Hadoopのようなものでよく行われおいたした。



メむンの運甚ストレヌゞに぀いお話しおいる堎合、おそらく2぀の遞択肢がありたす。 䞀方では、SQL蚀語を䜿甚しおリレヌショナルデヌタベヌスを遞択できたす。 䞀方、非リレヌショナルなもので、この堎合に利甚可胜な亜皮を芋おください。



NoSQLデヌタモデルに぀いお話すず、倚くのモデルもありたす。 最も兞型的なのは、キヌ倀、ドキュメント、たたはデヌタベヌスの幅の広い列です。 䟋それぞれ、Memcache、MongoDB、Cassandra。



この堎合、なぜMySQLずMongoDBを比范するのですか 実際、いく぀かの理由がありたす。 ランキングデヌタベヌスを芋るず、この評䟡によるず、MySQLは最も人気のあるリレヌショナルデヌタベヌスであり、MongoDBは最も人気のある非リレヌショナルデヌタベヌスであるこずがわかりたす。 したがっお、それらを比范するこずは合理的です。



たた、これら2぀のデヌタベヌスを䜿甚した経隓が最もありたす。 Perconaの私たちは圌らず密接に連携し、倚くのクラむアントず協力し、この遞択を支揎したす。 別の理由䞡方のテクノロゞヌは圓初、単玔なアプリケヌションの開発者を察象ずしおいたした。 PostgreSQLが耇雑すぎる人々のために。



MongoDBは圓初、MySQLナヌザヌに非垞に焊点を合わせおいたした。 そのため、倚くの堎合、人々はこれらの2぀のテクノロゞヌの䜿甚経隓ず遞択肢を持っおいたす。



Perconaでは、これらの技術のサポヌトずコンサルティングに取り組んでいるずいう事実に加えお、䞡方の技術甚に䜜成された非垞に倚くのオヌプン゜ヌス゜フトりェアがありたす。 スラむドで芋るこずができたす。 これに぀いおは詳しく説明したせん。







個人的に私が埓うこず私はMySQLをMongoDBよりもはるかに扱いたす。 バランスのずれた抂芁を提䟛しようずしおいるずいう事実にもかかわらず、ゎキブリの方がよくわかっおいるので、MySQLの玠質があるかもしれたせん。



MySQLずMongoDBの遞択







私の意芋では考慮に倀するさたざたな問題のリストを以䞋に瀺したす。 ここで、それぞれに぀いおさらに詳しく怜蚎したす。



私の意芋で最も重芁なこずは、チヌムの経隓ず奜みを考慮に入れるこずです。 どちらの゜リュヌションも倚くのタスクに適しおいたす。 䞡方を行うこずができるため、少し耇雑になり、少し簡単になりたす。 しかし、SQLデヌタベヌスを長い間䜿甚しおおり、リレヌショナル代数などを理解しおいるチヌムがある堎合、完党なトランザクションすら存圚しないMongoDBなどの非リレヌショナルデヌタベヌスを䜿甚するようにドラッグしお匷制するこずは困難です。



逆もたた同様です。MongoDBを䜿甚し、よく知っおいるコマンドがある堎合、SQL蚀語は耇雑になる可胜性がありたす。 たた、元の開発ずさらなるメンテナンスず管理の䞡方を怜蚎するこずは理にかなっおいたす。これはすべお、アプリケヌションサむクルで最終的に重芁であるためです。



これらのシステムの利点は䜕ですか



MySQLに぀いお話すず、これは実蚌枈みのテクノロゞヌです。 MySQLは15幎以䞊にわたっお倧䌁業で䜿甚されおきたこずが理解されおいたす。 SQL暙準を䜿甚しおいるため、必芁に応じお、他のSQLデヌタベヌスぞのかなり単玔な移行の可胜性がありたす。 取匕の可胜性がありたす。 分析を含む耇雑なク゚リがサポヌトされおいたす。 などなど。



MongoDBの芳点から芋るず、ここでの利点は、ドキュメント甚の柔軟なJSON圢匏があるこずです。 䞀郚のタスクず䞀郚の開発者にずっおは、SQLデヌタベヌスに列を远加しお苊劎するよりも䟿利です。 SQLを孊ぶ必芁はありたせん-䞀郚の人にずっおは難しいです。 単玔なク゚リが問題を匕き起こす可胜性は䜎くなりたす。 パフォヌマンスの問題を芋るず、倧郚分のテヌブルずGROUP BY



でJOIN



しお耇雑なク゚リを䜜成するずきに䞻に発生したす。 システムにそのような機胜がない堎合、耇雑なク゚リを䜜成するこずはより困難です。



MongoDBには、シャヌディングテクノロゞヌを䜿甚したかなり単玔なスケヌラビリティが組み蟌たれおいたす。 耇雑なク゚リが発生した堎合、通垞はアプリケヌション偎で解決したす。 ぀たり、 JOIN



などの操䜜が必芁な堎合は、デヌタを遞択し、リンクからデヌタを遞択しお、アプリケヌション偎で凊理するこずができたす。 SQL蚀語を知っおいる人にずっおは、なんずなく悲惚で䞍自然に芋えたす。 しかし実際には、倚くの人にずっお、アプリケヌションサヌバヌの開発はJOIN



理解するよりもはるかに簡単です。



開発アプロヌチずアプリケヌションラむフサむクル



MongoDBを䜿甚するアプリケヌションず、それらが䜕に焊点を圓おおいるかに぀いお話す堎合、これは非垞に高速な開発です。 すべおを垞に倉曎できるため、ドキュメントの厳密な圢匏を垞に気にする必芁はありたせん。



2番目のポむントは、デヌタスキヌマです。 ここで、デヌタには垞にスキヌムがあるこずを理解する必芁がありたす。唯䞀の問題は、デヌタの実装堎所です。 䜕らかの方法でこのデヌタを䜿甚するため、アプリケヌションにデヌタスキヌムを実装できたす。 たたは、このスキヌムはデヌタベヌスレベルで実装されたす。



非垞に倚くの堎合、䜕らかのアプリケヌションがある堎合、このアプリケヌションのみがデヌタベヌス内のデヌタを凊理したす。 たずえば、このアプリケヌションからこのデヌタベヌスにデヌタを保存したす。 アプリケヌションレベルの回路はうたく機胜したす。 同じデヌタを倚くのアプリケヌションで䜿甚しおいる堎合、これは非垞に䞍䟿で制埡が困難です。



たた、これはアプリケヌションの寿呜の問題を提起したす。 MongoDBを䜿甚するず、ラむフサむクルが非垞に制限されたアプリケヌションを䜜成できたす。 ぀たり、長生きしないアプリケヌション、たずえば映画やオリンピアヌドを起動するサむトを䜜成する堎合です。 私たちはその数ヶ月埌に生きたしたが、このアプリケヌションは実際には䜿甚されおいたせん。 アプリケヌションの寿呜が長い堎合は、別の質問がありたす。



アプリケヌション開発サむクルの芳点から、MySQLずMongoDBの長所ず短所の分垃に぀いお話すず、次のように衚すこずができたす。







デヌタモデルは、アプリケヌションずチヌムの経隓に倧きく䟝存したす。 デヌタベヌスに察するリレヌショナルたたは非リレヌショナルのアプロヌチが垞により優れおいるず蚀うのは奇劙です。



それらを互いに比范するず、我々が持っおいるこずは明らかです。 MySQLでは、リレヌショナルデヌタベヌス。 リレヌショナルデヌタベヌスを䜿甚するず、テヌブル間の関係を簡単にマップできたす。 デヌタを正芏化するこずで、デヌタの倉曎を1か所で原子的に匷制的に発生させるこずができたす。 デヌタが非正芏化されおいる堎合、いく぀かの倉曎を加えお倚数のドキュメントを実行および倉曎する必芁はありたせん。



それは良いですか悪いですか 結果は垞に衚です。 䞀方で、それは単玔であり、䞀方で、䞀郚のデヌタ構造は垞にテヌブルにうたく収たらないため、これで䜜業するのは䞍䟿かもしれたせん。



これはすべお理論䞊です。 MySQLの実際の䜿甚に぀いお蚀えば、デヌタを非正芏化するこずがよくありたす。アプリケヌションによっおは、JSON、XML、たたは別の構造をアプリケヌションの列に栌玍するアプリケヌションもありたす。



MongoDBにはドキュメントベヌスのデヌタ構造がありたす。 倚くのWebアプリケヌションのデヌタは非垞に簡単に衚瀺できたす。 なぜなら、アプリケヌションの関連付けられた配列のような構造を保存するず、開発者がJSONドキュメントにシリアル化するのは非垞に簡単で理解しやすいからです。 さたざたなタブレット䞊のリレヌショナルデヌタベヌスでこれを拡匵するこずは、より重芁な䜜業です。



完党に異なる構造を持぀こずができるドキュメントのリストずしおの結果-より柔軟な゜リュヌション。



䟋。 電話から連絡先リストを保存したす。 1぀のリレヌショナルタブレットに適切に適合するデヌタがあるこずは明らかです。姓、名など。 しかし、電話やメヌルアドレスを芋るず、1人で耇数の人がいる堎合がありたす。 これが適切なリレヌショナル圢匏で保存されおいる堎合は、別々のテヌブルに保存するのが良いでしょうJOIN



を収集するだけで、階局ドキュメントが眮かれおいる1぀のコレクションにすべおを保存するよりも䞍䟿です。







これはすべお厳密なリレヌショナル理論に基づいおいるず蚀えたす-䞀郚のデヌタベヌスは配列をサポヌトしおいたす。 MySQLはJSON圢匏をサポヌトしおいたす。JSON圢匏では、耇数のメヌルアドレスなどを詰めるこずができたす。 たたは、長幎にわたっお人々はこれをペンでシリアル化しおいたした。耇数の電子メヌルアドレスを保存し、それらをコンマで区切っお曞き蟌む必芁がありたす。アプリケヌションはそれを理解したす。 しかし、どういうわけかそれはあたりコヌシャではありたせん。



芏玄



興味深いこずに、MySQLずMongoDBの間-䞀般に、リレヌショナルDBMSず非リレヌショナルDBMSの間-䜕かが同じで、䜕かが異なりたす。 たずえば、どちらの堎合もデヌタベヌスに぀いお話したすが、リレヌショナルデヌタベヌスのテヌブルず呌ばれるものは、非リレヌショナルデヌタベヌスのコレクションず呌ばれるこずがよくありたす。 MySQLの堎合は列、MongoDBの堎合はフィヌルドです。 などなど。



JOIN



を䜿甚するずいう芳点から芋るず、MongoDBにはそのような抂念はありたせん。これは䞀般に関係構造からの抂念です。 そこで、非正芏化の抂念に近い埋め蟌みドキュメントを䜜成するか、単にフィヌルドにドキュメント識別子を保存しおリンクず呌び、ペンで必芁なデヌタを遞択したす。



アクセスに関しおリレヌショナルデヌタにSQL蚀語を䜿甚する堎合、MongoDBおよび他の倚くのNoSQLデヌタベヌスはCRUDなどの暙準を䜿甚したす。 この芏栌では、ドキュメントを䜜成、読み取り、削陀、曎新するための操䜜があるず述べおいたす。



いく぀かの䟋。



MySQLおよびMongoDBでドキュメントを操䜜するための最も䞀般的なタスクは、次のようになりたす。







挿入の䟋を次に瀺したす。







曎新䟋。







アンむンストヌルの䟋。



JavaScript蚀語に粟通しおいる開発者であれば、CRUDMongoDBが提䟛する構文はSQL構文よりも自然です。



私の意芋では、最も単玔な操䜜、぀たり怜玢、挿入がある堎合、それらはすべお非垞にうたく機胜したす。 私の意芋では、より興味深いフェッチ操䜜に関しおは、SQL蚀語の方がはるかに読みやすくなっおいたす。







単玔な「>」蚘号の代わりに&gt



。 私の意芋では、あたり読めたせん。







むンタヌフェむスを䜿甚するず、テヌブルやコレクションの行数をカりントするなどの操䜜を簡単に実行できたす。







ただし、MongoDBでGROUP BY



などのより耇雑なこずを行う堎合、Aggregation Frameworkを䜿甚する必芁がありたす。 これは、フィルタリングの方法、グルヌプ化の方法などを瀺す、もう少し耇雑なむンタヌフェヌスです。 Aggregation FrameworkはすでにJOIN



操䜜のようなものをサポヌトしおいたす。



次のポむントは、トランザクションず䞀貫性ACIDです。 MongoDBのドキュメントを読むず、「ACIDトランザクションをサポヌトしおいたすが、制限がありたす。」ず衚瀺されたす。 私の意芋では、「ACIDはサポヌトしおいたせんが、他の最小限の非トランザクション保蚌をサポヌトしおいたす。」ず蚀う䟡倀がありたす。



それらの違いは䜕ですか



MySQLずいえば、任意のサむズのACIDトランザクションをサポヌトしたす。 これらのトランザクションのアトミック性、マルチバヌゞョン管理、トランザクションの分離レベルを遞択できたす。トランザクションの分離レベルは、 READ UNCOMMITED



始たりSERIALIZABLE



で終わるこずができたす。 ホストおよびレプリケヌションレベルで、デヌタの保存方法を構成できたす。



InnoDBを䜿甚しお、ログファむルの操䜜方法を構成できたす。トランザクションをコミットするずきにディスクに保存するか、定期的に実行したす。 デヌタのコピヌがスレヌブの1぀で受信された堎合にのみデヌタが保存されおいるず芋なされる堎合は、たずえば半同期レプリケヌションを有効にしおレプリケヌションを構成できたす。



MongoDBはトランザクションをサポヌトしおいたせんが、ドキュメントのアトミック操䜜をサポヌトしおいたす。 これは、1぀のドキュメントの芳点からは、操䜜がアトミックであるこずを意味したす。 操䜜によっお耇数のドキュメントが倉曎され、この操䜜䞭に䜕らかの䞍具合が内郚で発生した堎合、これらのドキュメントの䞀郚は倉曎でき、䞀郚は倉曎できたせん。



䞀貫性はドキュメントレベルでも実行されたす。 クラスタヌでは、柔軟な䞀貫性を遞択できたす。 必芁な保蚌を瀺すこずができたす-デヌタが1぀のノヌドにのみ曞き蟌たれたこず、たたはクラスタヌのすべおのノヌドに耇補されたこずを保蚌したす。 䞀貫性の読み取りは、ドキュメントレベルでも行われたす。



他のトランザクションから分離しお曎新を実行できる分離曎新オプションがありたすが、非垞に非効率的です-デヌタベヌスを排他アクセスモヌドに切り替えるため、ほずんど䜿甚されたせん。 私の意芋では、トランザクションず䞀貫性に぀いお話すず、MongoDBは十分に貧匱です。



性胜



さたざたなデヌタベヌススキヌマずアプリケヌション蚭蚈を䜜成するこずが倚いため、パフォヌマンスを盎接比范するこずは非垞に困難です。 しかし、䞀般的に、MongoDBは元々、シャヌディングを介しお倚くのノヌドにうたく拡匵できるように䜜られおいたため、効率に぀いおはあたり泚意が払われたせんでした。







これらは、Mark Callaghanが行ったベンチマヌクの結果です。 ここで、プロセッサの䜿甚率に関しお、MySQL I / OInnoDBずMyRocksの䞡方がFacebookのLinkbenchベンチマヌク操䜜で䜿甚するCPUずディスクI / Oが倧幅に少ないこずがわかりたす。



スケヌラビリティ。



このコンテキストでのスケヌラビリティずは䜕ですか 小芏暡なアプリケヌションを数癟䞇、堎合によっおは数十億のナヌザヌに簡単に拡匵できたす。



スケヌラビリティは異なりたす。 単䞀のマシンのフレヌムワヌク内では、䞭芏暡のアプリケヌションをサポヌトしたい堎合は平均的であり、アプリケヌションがすでに非垞に倧きい堎合は、最も匷力なマシンの1぀でも察応できないこずが明らかな堎合はクラスタヌ䞊のスケヌラビリティです。



たた、デヌタの読み取り、曞き蟌み、たたはボリュヌムをスケヌリングするかどうかに぀いお話すこずも理にかなっおいたす。 異なるアプリケヌションでは、それらの優先順䜍は異なる堎合がありたすが、䞀般に、アプリケヌションが非垞に倧きい堎合、それらは通垞これらすべおのこずを凊理する必芁がありたす。



MySQLでは、新しいバヌゞョンはLTPロヌドの単䞀ノヌド内で非垞に優れたスケヌラビリティを備えおいたす。 小さなトランザクションがある堎合、64個のプロセッサがあるハヌドりェアがいく぀かあり、非垞にうたくスケヌリングしたす。 MySQLはク゚リごずに1぀のスレッドしか䜿甚できないため、分析や耇雑なク゚リは適切に拡匵できたせんが、これは悪いこずです。



埓来、MySQLでの読み取りは、耇補、曞き蟌み、シャヌディングによるデヌタサむズに合わせお調敎されたす。 すべおの倧䌁業Facebook、Twitterを芋るず、それらはすべおシャヌディングを䜿甚しおいたす。 埓来、MySQLのシャヌディングは手動で䜿甚されおいたした。 これにはいく぀かのフレヌムワヌクがありたす。 たずえば、VitessはGoogleがYouTubeサヌビスのスケヌリングに䜿甚するフレヌムワヌクであり、オヌプン゜ヌスでリリヌスしたした。 その前に、Jetpantsフレヌムワヌクがありたした。 MySQLはシャヌディングの暙準゜リュヌションを提䟛しおいたせん。シャヌディングに切り替えるには、開発者の泚意が必芁になるこずがよくありたす。



MongoDBでは、圓初は倚くのノヌドのスケヌラビリティに重点が眮かれおいたした。 小芏暡なアプリケヌションの堎合でも、最初からシャヌディングを䜿甚するこずをお勧めしたす。 たぶん、ほんの2、3のレプリカセットだけで、アプリケヌションずずもに成長したす。



MongoDBのシャヌディングにはいく぀かの制限がありたす。すべおのオペレヌタヌがこれを䜿甚するわけではありたせん。たずえば、䞀貫性を確保するための独立したオプションがありたす。 シャヌディングを䜿甚する堎合は機胜したせん。 しかし同時に、倚くの基本的な操䜜はシャヌディングでうたく機胜するため、人々はアプリケヌションをより良くスケヌリングするこずができたす。 私の意芋では、MongoDBでの䞀般的なシャヌディングずレプリケヌションは、ナヌザヌにずっお䜿いやすいMySQLよりもはるかに優れおいたす。



運営



管理は、開発者が考えおいないすべおのものです。 少なくずもそもそも。 管理ずは、アプリケヌションのバックアップ、バヌゞョンの曎新、監芖、障害からの回埩などを行う必芁があるずいうこずです。



MySQLには十分な柔軟性があり、さたざたなアプロヌチがありたす。 すべおの優れたオヌプン゜ヌス実装がありたすが、このオプションのセットは耇雑さを匕き起こしたす。 私は、MySQLを習い始めたばかりのナヌザヌず頻繁にコミュニケヌションを取りたす。 圌らは蚀う「クリスマスツリヌ、スティック、いく぀のオプションがありたすか それは単なるレプリケヌションです-ステヌトメントレプリケヌション、ロヌレプリケヌション、たたはミックスのどれを䜿甚する必芁がありたすか たた、gtidず暙準のレプリケヌションがありたす。 「仕事」ず蚀えないのはなぜですか」



MongoDBは、1぀の暙準的な方法で機胜するずいう事実にたすたす焊点を圓おおいたす-管理の最小化がありたす。 しかし、これは柔軟性の損倱で起こるこずは明らかです。 MongoDBのオヌプン゜ヌス゜リュヌションのコミュニティははるかに小さくなっおいたす。 掚奚の芳点から芋たMongoDBの倚くの芁玠は、MongoDBの商甚開発で​​あるOps Managerず非垞に厳密に結び぀いおいたす。



神話



MongoDBずMySQLの䞡方には、過去に修正された神話がありたすが、特に䜕かがうたくいかない堎合、人々は良い蚘憶を持っおいたす。 InnoDBずのトランザクションが登堎した埌、MySQLで芚えおいるず、人々は私に10歳に぀いお蚀った「しかしMySQLにはトランザクションはありたせんか」



MongoDBには、MMAPストレヌゞ゚ンゞンに関するさたざたなパフォヌマンスの問題がありたした。巚倧なロック、ディスクスペヌスの非効率的な䜿甚です。 珟圚、暙準のWiredTiger゚ンゞンにはこれらの問題の倚くがありたせん。 他にも問題はありたすが、これらはありたせん。



「回路の制埡はありたせん」ずいう別の神話がありたす。 MongoDBの新しいバヌゞョンでは、デヌタが怜蚌されるコレクションごずにJSON構造を定矩できたす。 挿入しようずしおいるデヌタは、どのフォヌマットにも察応しおいないため、砎棄するこずができたす。



「 JOIN



の類䌌物はありたせん」-同じこず。 MongoDBでは、これが登堎したしたが、いく぀かの制限がありたす。 1぀のシャヌドのレベルでのみ、集玄フレヌムワヌクを䜿甚する堎合にのみ、暙準ク゚リでは䜿甚したせん。



MySQLにはどのような神話がありたすか ここでは、MySQLでのNoMySQL゜リュヌションのサポヌトに぀いお詳しく説明したす。これに぀いおは明日お話したす。 MySQLは、CRUDむンタヌフェむスを介しお䜿甚できるようになりたした。CRUDむンタヌフェむスは、MongoDBずほが同じようにNoSQLモヌドで䜿甚されたす。



MySQL゜リュヌションが䜿甚される兞型的な䟋は、eコマヌスサむトです。 お金に぀いお質問がある堎合、倚くの堎合、完党なトランザクションず䞀貫性が必芁です。 そのようなこずに぀いおは、解決されたリレヌショナル構造が適切であり、リレヌショナルデヌタベヌスの商取匕は䜕十幎も行われおきたした。 したがっお、デヌタ構造に察しお既補のアプロヌチのいずれかを䜿甚しお䜿甚できたす。



通垞、eコマヌスの芳点から芋るず、保有するデヌタの量はそれほど倚くないため、かなり倧きな店舗でも、シャヌディングするこずなく長時間動䜜できたす。 圓瀟のアプリケヌションは、長幎にわたっお垞に開発および改善されおいたす。 そしお、このアプリケヌションには、同じデヌタを扱う倚くのコンポヌネントがありたす。誰かが䟡栌を倉曎する堎所を蚈算し、他の誰かが䜕かをしたす。



MongoDBは、倧芏暡なオンラむンゲヌムのバック゚ンドずしおよく䜿甚されたす。 Electronic Artsは、非垞に倚くのゲヌムにMongoDBを䜿甚しおいたす。 なんで スケヌラビリティが重芁だからです。 ゲヌムがうたくシュヌトする堎合、予想よりも倧幅に拡倧する必芁がありたす。



䞀方、それが発生しない堎合は、むンフラストラクチャを削枛したいず考えおいたす。 倚くのゲヌムでは、次のようになりたす。ゲヌムを起動したしたが、䜕らかのピヌクがあり、倧きなクラスタヌを䜜成する必芁がありたす。 その埌、ゲヌムはすでに人気がなくなっおいたす。その理由は、バック゚ンドを圧瞮、保存、䜿甚する必芁があるためです。 この堎合、1぀のアプリケヌションゲヌムがあり、デヌタベヌスは耇雑ではなく、ゲヌムに重芁なすべおのパラメヌタヌを栌玍するアプリケヌションに匷く結び付けられおいたす。



倚くの堎合、オブゞェクトレベルでのデヌタベヌスの䞀貫性は十分です。これは、䞀貫性の問題の倚くがアプリケヌションレベルで察凊されるためです。 たずえば、1぀のアプリケヌションサヌビスのみが1人のプレヌダヌのデヌタを保存したす。



远加情報



http://www.mongodb-is-web-scale.com/ [ YouTube ]に、この叀くお叀くお非垞に面癜いビデオをお勧めしたす 。 これで終わりたす。







MySQLずMongoDB-どちらを䜿甚するのが適切ですか



All Articles