2011-11-09 24 views
3

EBSボリュームでAmazon EC2インスタンスを実行する予定のJavaプログラムとPHP Webサイトがあります。プログラムは、データベースへの書き込みと読み取りを行います。このウェブサイトは同じデータベースからのみ読み込みます。Amazon EC2のMySQLとSQLite

AWSでは、ボリュームに対するIOPS(1秒あたりのI/O要求数)を支払うことになります。 IOPSが最も少ないデータベースはどれですか?また、SQLiteはプログラムとウェブサイトの両方から同時にクエリを処理できますか?

+1

データベースのサイズはどれくらいですか?ウェブ全体(読み取り専用)のメモリにすべてのものをキャッシュすることができれば、その側のI/Oをほとんどなくすことができます。あなたはサーバーコードで、またはメモリ内のSQLiteデータベースを使用してこれを行うことができます。 –

+0

データベースは約1-5GBになります。それがJavaアプリケーションのメモリにある場合、Webサーバーはどのようにそれにアクセスしますか? – Arjan

+1

Javaアプリケーションはディスク上のデータベースに対して動作します。ウェブアプリケーションは、そのデータベースをメモリにキャッシュします。定期的に更新するか、メモリ内の何かを更新する必要があるときにJavaアプリケーションから命令を受け取ります。おそらく1GBで動作しますが、おそらく5GBでは動作しません。 –

答えて

7

IOの量は、MySQLの設定方法とアプリケーションのデータベース使用方法に大きく依存します。キャッシング、ログファイルのサイズ、データベースエンジン、トランザクションなどはすべて、あなたが行うIOの量に影響します。言い換えれば、MySQLの書き込みと読み取り(特に)がキャッシュされている間は、データベースファイルを常に開いて閉じなければならないため、SQLiteにはディスクIOが増えていると思いますが、事前に予測することはおそらく不可能ですメモリ内にMySQL自体があります。

このサイトEstimating I/O requestsには、実際のIOを計算し、それを使ってEBSコストを見積もるためのきれいな方法があります。シミュレートされた負荷の下でテストシステムでアプリケーションを実行し、この手法を使用してMySQLソリューションとSQLiteソリューションの間のIO差を測定することができます。

実際には、実際には問題ではありません。コストはIOリクエスト数で0.10ドルです。重度のデータベースアクセスを持つ中規模の電子商取引サイトでは、1か月に3億1500万回のIOリクエスト、つまり31ドルを処理していました。これは、数千に及ぶEC2、ストレージ、および帯域幅のコストと比較すると、ごくわずかでした。 AWS cost calculatorを使用して見積もりを組み込み、すべてのAWS費用を計算できます。

また、SQLiteの人々だけrecommend that you use it for low to medium traffic websitesを覚えておく必要があります。 MySQLはトラフィックの多いサイトにとってはより良いソリューションです。

+0

2016年時点で、sqliteはボリュームを本当にうまく処理します。交通量の多いサイトではロックエラーがかなり発生しました.WAL(write ahead log 'pragma journal_mode = WAL')をチェックポイントデータベースに毎日cronと一緒に使用しなければなりませんでした。 – John

0

はいSQLiteは、プログラムとウェブサイトの両方から同時にクエリを処理できます。 SQLiteはファイルレベルロックを使用して一貫性を確保します。

メモリ内のSQLiteは、スタンドアロンまたは組み込みのプログラム用です。

メモリ内のみのSQLiteを使用しないでください:あなたは、あなたが活用することができなくなり、その場合にはPHPベースのウェブサイトを持っているときに、複数のプロセス

  • 間デシベルを共有する場合

    • をPHP fastcgi