在这样的环境下运行 Crate 是可能的。不过,我不会推荐它。在任何情况下,您都需要采取一些预防措施:
- 选择一个精简的 Linux 发行版,它实际上以如此小的内存占用启动和运行。阿尔卑斯山可能是一种选择。
- 安装 Java。您至少需要 openjdk7(更新 55 及更高版本)。
- 按照 Crate 网站上的说明从 tarball 安装和启动 Crate。
在基于 Alpine 3.3 的具有 128 MB RAM 的虚拟机上,我在磁盘上安装了openjdk8-jre(您必须在/etc/apk/repositories 中启用社区存储库)。我下载了 Crate 0.54.7 压缩包并解压缩了它。我设置了CRATE_HEAP_SIZE=64m,因为这是推荐的可用内存的一半。
我创建了一个表格“演示”
DROP TABLE IF EXISTS demo;
CREATE TABLE demo (
data string
);
并用 10,000 条 10 KB 随机字符串的记录填充它,每条记录都使用慢速 bash 脚本:
head -c7380 /dev/urandom | uuencode - | grep ^M | tr -d '\n\047'
这需要几分钟(大约 20 条记录/秒),但使用批量插入应该方式更快并且只需几秒钟。
根据管理 UI 的报告,净数据量约为 100 MB,总共占用了 287 MB 的磁盘空间。
操作系统、安装的软件和数据总共占用了 820 MB 磁盘空间。
我将内存量配置为交换空间的两倍,并得到以下占用空间(没有数据的 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 秒。
总结:是的,这是可能的,但如果你真的这样做,你会失去很多功能。您的结果很大程度上取决于您实际运行的查询类型。