128MB の RAM を搭載した安価な VPS ホストを見つけることができます。最初はテスト用に、小さなデータベース用のクレート ノードを実行するのに十分かどうか疑問に思います。(推奨メモリを探しているわけではありませんが、メモリ不足の例外が発生しないようにするための最小メモリを探しています。クレートは、ノード内の唯一のサービスであると想定されています。)
2 に答える
そのような環境で Crate を実行することは可能です。しかし、私はそれをお勧めしません。いずれにせよ、いくつかの予防措置を講じる必要があります。
- このような小さなメモリフットプリントで実際に起動して実行できる無駄のない Linux ディストリビューションを選択してください。アルパインは一つの選択肢かもしれません。
- Java をインストールします。少なくとも openjdk7 (アップデート 55 以降) が必要です。
- Crate の Web サイトで説明されているように、tarball から Crate をインストールして起動します。
Alpine 3.3 上に 128 MB の RAM を搭載した仮想マシンに、ディスクにインストールopenjdk8-jre
しました (コミュニティ リポジトリを有効にする必要があります/etc/apk/repositories
)。Crate 0.54.7 tarball をダウンロードして解凍しました。CRATE_HEAP_SIZE=64m
これが使用可能なメモリの推奨される半分であるように設定しました。
テーブル「デモ」を作成しました
DROP TABLE IF EXISTS demo;
CREATE TABLE demo (
data string
);
10 KB のランダムな文字列の 10,000 レコードでそれぞれが遅い bash スクリプトでいっぱいになりました。
head -c7380 /dev/urandom | uuencode - | grep ^M | tr -d '\n\047'
これには数分 (約 20 レコード/秒) かかりましたが、一括挿入を使用すると、はるかに高速になり、数秒しかかかりません。
データの正味量は約 100 MB であり、管理 UI によって報告されたように、ディスク上で合計 287 MB を使用しました。
オペレーティング システム、インストールされたソフトウェア、およびデータを合わせて、ディスク上で 820 MB を要求しました。
スワップスペースとして 2 倍の量のメモリを構成し、次のフットプリントを得ました (データのない Crate プロセス自体は約 40 MB を占めます)。
# free
total used free shared buffers cached
Mem: 120472 117572 2900 0 652 6676
-/+ buffers/cache: 110244 10228
Swap: 240636 131496 109140
10,000 レコードすべての全文検索 ( SELECT count(*) FROM demo WHERE data LIKE '%ABC%'
) には、約 1.9 秒かかりました。
概要: はい、可能ですが、実際にそうすると多くの機能が失われます。結果は、実際に実行するクエリの種類に大きく依存します。