У меня есть вопрос о обработке более крупных данных с использованием сетки данных Hazelcast In-Memory. Я не смог найти конкретный ответ об использовании этой технологии для следующего сценария, поэтому я обратился сюда для помощи. Мы собираемся выполнить два типа операций по этим данным: во -первых, мы собираемся взять структурированный запрос SQL от пользователя, этот запрос может включать в себя очень сложные соединения, фильтрацию, операции агрегации и аналитические функции (например, те, которые поддерживает Oracle). Результатом будет создание новых таблиц, которые мы собираемся написать в базы данных назначения; которые могут быть одинаковыми, что и источники или разные DBS в разных машинах. Второй тип операций включает в себя выполнение вычислений тяжелых алгоритмов на данных, которые мы считываем из исходного DBS, например, выполнение алгоритма градиента спуска для оптимизации статистической модели, которую мы создаем, используя данные из исходных DBS в качестве учебных данных. Результатом в основном станет новая таблица, которая содержит параметры модели или результаты тестовых данных, например. Я могу загрузить данные в распределенные карты или мультимапы, распределять вычислительную нагрузку между узлами кластера и собирать результаты, возможно, используя парадигму MapReduce. Я в основном обеспокоен нашей первой проблемой, которая включает в себя сложные структурированные SQL. У меня есть следующие вопросы, на которые я не смог найти удовлетворительные ответы в целом; Любая помощь или указатели очень желанные. В этом случае я думаю, что это невозможна, возможно, даже возможная вещь, чтобы загрузить их все в распределенную память Hazelcast, RAM по -прежнему очень дорогой по сравнению с хранением дисков, и наш кластер должен состоять из товарных машин. Как мы должны подходить к этой проблеме тогда; Я думаю о распределенном центральном слое DB, например, как Apache Cassandra, в котором читаются все неоднородные источники. Затем структурированные запросы SQL будут выполнены в этой центральной базе данных, независимой от любых этапов вычислений в памяти. < /p>
2) Как следует предоставить настройку диска в сетке в памяти Hazelcast? Например, мы читаем большую таблицу БД в память (предполагая, что она вписывается в память) в структуру карты, предоставленную Hazelcast. Затем мы как -то обновили эти данные в памяти. Как это обновление должно отражаться на дисковой копии фактической таблицы? Является ли JCache в игру здесь, например, с использованием API JCache, автоматически ли мы получаем последовательность между диском и память предикаты. Но возможно ли, что мы пишем полностью собственную строку команды SQL и запросили их в объектах памяти с ними? Я имею в виду что -то вроде: < /p>
string sqlCommand = "SELECT A.Col1,B.Col2 FROM TABLE A LEFT JOIN TABLE B ON A.IdCol = B.IdCol WHERE A.FilterCol='X' AND B.FilterCol='Y'";
ImagineryHazelcastSqlCommandObject o = new ImagineryHazelcastSqlCommandObject (sqlCommand);
data = ImagineryHazelcastSqlCommandObject.Execute();
Подробнее здесь: https://stackoverflow.com/questions/337 ... -to-handle