Путь наименьшего сопротивления для переноса приложения ядра приложения, вероятно, будет использовать AppScale , который реализует основную часть API ядра приложения.В частности, вы можете использовать хранилище данных HyperTable , которое близко отражает хранилище данных Google App Engine.
Редактировать: хорошо, так что вы собираетесь провести редизайн.Я хотел бы остановиться на некоторых моментах, которые вы указали в своем вопросе.
Низкое использование памяти
Это в значительной степени противоположно тому, что вы хотите в базе данных;Вы хотите как можно больше своего набора данных в памяти ядра;Это может означать настройку самого набора данных для эффективного размещения или добавление memcached
узлов, чтобы можно было распределить набор данных по нескольким хостам, чтобы у каждого хоста была достаточно малая часть набора данных, чтобы он уместился в ядре.
Чтобы довести эту мысль до конца, учтите, что чтение значения из оперативной памяти примерно в 1000 раз быстрее, чем чтение с диска;База данных, которая может удовлетворить каждый запрос от ядра, может в 10 раз увеличить нагрузку по сравнению с базой данных, которая должна посещать диск только для 1% своих запросов.
Я планирую иметь огромныенабор данных около 10 ГБ.
Я не думаю, что 10 ГБ можно назвать «огромным набором данных».Фактически, это то, что могло бы вписаться в оперативную память достаточно большого сервера баз данных;Вам не понадобится более одного узла memcached, гораздо меньше дополнительных узлов персистентности (типичные размеры дисков указаны в терабайтах, в 100 раз больше этого ожидаемого набора данных.
На основании этой информации я определенноПосоветуйте использовать зрелый продукт баз данных, такой как PostgreSQL, который обеспечит вам высокую производительность для данных, которые вы описываете, легко предоставит все функции, о которых вы говорите. Если придет время, вам нужно масштабировать до того, что PostgreSQL может на самом делепредставьте, у вас действительно будет реальная рабочая нагрузка для анализа, чтобы узнать, в чем заключаются узкие места.