6


4

私はMySQLの分野では過去数年間にいくつかのアプリを設計し、それからパフォーマンスとスケーラビリティの側面を継続的に洗練してきました。 また、頻繁に照会される結果セットをアプリケーション側で高速化するためにmemcachedを使用した経験もあります。 そして最近、私はAmazon SDBをeコマース実験のための私の主要な「データベース」として実装しました。

簡単に言うと、SDBサービスを使用するために私が考えた簡単な正当化は、スキーマのないデータベース構造を使用することで、プロジェクトの論理的問題に集中し、データストアにコンテンツを迅速に蓄積できるということです。 つまり、製品の属性について考えられるすべての順列をあらかじめ設定して正規化することを心配しないでください。製品のロードを開始するだけで、SDBは使用可能なものすべてを単に記憶します。

私は自分のプロジェクトの最初の数回の反復を通過することに成功し、そしてデータへの簡単なインターフェースをセットアップする必要があるので、私はMySQLでの作業が当たり前のことと思っていた問題に直面しています。 例:selectステートメントをグループ化し、構文を "items 50から100"にクエリするように制限します。 私がSDBのスキーマフリーアーキテクチャを使用して得た簡単な利点は、私がちょうど1800以上のアイテムで結果セットを問い合わせる/ループするというパフォーマンスヒットに負けました。

今度はTokyo Cabinetのような、インメモリのKey-Valueストアの概念を拡張して疑似リレーショナル機能を途方もなく速い速度で提供しているプロジェクトについて読んでいます(14xどこかで読んでいます)。

私の質問:アプリケーション設計者/開発者として私がプロジェクトの各段階でどのDB技術が最も適しているかを評価するために経験できる基本的なガイドラインまたは発見的方法がありますか。

例:アプリケーションの論理的/技術的未知数がデータ構造を流動的にするプロトタイプ作成段階で:SDBを使用する。 ユーザーの成果物が優先されるより成熟した段階では、ソート、グループ化、またはページ付けロジックの作成に時間を費やす必要がない従来のツールを使用してください。

これらのツールを使った実践的な経験は大いに評価されるでしょう。

ありがとうございます。

Shaheeb R.

2 Answer


5


あなたが発見している問題は、RDBMSのスペシャリストがいくつかの代替システムを黄金の目で見る理由です。 そうです、代替システムはある特定の要件を非常に速く処理しますが、同じデータを使って別のことをしたいと思うとすぐに、最も逃げやすいものが遅れてしまいます。 これとは対照的に、RDBMSは通常、より大きな不安でバリエーションを管理します。それは処理するためにマイクロ最適化されている特殊な作業負荷のための最も速いほど速くないかもしれませんが他の問い合わせを処理するために要求されるときそれがめったに劣化することはめったにありません。


4


新しい解決策は弾丸ではありません。

従来のRDBMSと比較して、これらのシステムは、他の側面(クエリ能力の低下、最終的な一貫性、特定の操作に対するひどいパフォーマンス)をトレードオフすることによって、いくつかの側面(スケーラビリティ、可用性または単純さ)を改善します。

これらを従来のデータベースの代わりに使用するのではなく、既知の特定のニーズに合った特殊なツールです。

Amazon Simple DBを例にとると、SDBは基本的に巨大なスプレッドシートです。もしそれがあなたのデータがどのようなものであれば、それはおそらくうまく機能し、優れた拡張性と単純さはあなたに多くの時間とお金を節約します。

あなたのシステムが非常に構造化された複雑な問い合わせを必要としているが、これらのクールな新しい解決策の一つを主張するならば、あなたはすぐにその固有の問題のすべてと共に素人っぽく、設計の悪いRDBMSを再実装する途中で気付くでしょう。

この点で、これらが自分のニーズに合っているかどうかわからない場合は、特に単一サーバーの展開で適度な柔軟性があるため、最初の数回の反復を従来のRDBMSで行うほうが実際には良いと思います負荷。 ( CAP定理を参照)。

あなたのデータがどのように見えるか、そしてそれらがどのように使われるかについてより良いアイデアを得たら、それからあなたはあなたの必要性を他の解決策と合わせることができます。

あなたがクラウドでホストされたソリューションの単純さを望むが、リレーショナルデータベースを必要とするならば、あなたはチェックアウトすることができます: アマゾンリレーショナルデータベースサービス