Цель: Для масштабирования существующего приложения, в котором PostgreSQL используется в качестве хранилища данных.
Как может помочь Apache Ignite: У нас есть приложение, в котором много модулей, и все модули используют некоторые общие таблицы. Итак, у нас есть только одна основная база данных PostgreSQL, и она уже находится на больших SSD-машинах AWS. У нас уже есть Redis для кеширования, но, поскольку у нас нет ограничений Redis, это непростые частичные обновления и запросы по вторичным индексам.
Наш вариант использования: У нас есть две большие таблицы, одна для участников, а вторая - для подписок. Это много ко многим отношениям, когда один участник подписан в нескольких группах, и мы поддерживаем подписки в таблице подписок. Размер таблицы элементов составляет около 40 миллионов, а размер этой таблицы составляет около 40 МБ x 1,5 КБ и более ~ = 60 ГБ.
Вызов
Проблема в том, что мы не можем заархивировать эти данные, поскольку все участники работают, и эта таблица часто обновляется и читается.
Моя мысль:
Apache Ignite может помочь предоставить слой кеширования поверх таблицы PostgreSQL, как я прочитал из документации.
Теперь у меня есть пара вопросов с точки реализации Посмотреть.
Мы очень ценим быстрый ответ и заранее спасибо.





Да, это должно соответствовать вашему случаю.
Apache Ignite имеет постоянство, что означает, что он может хранить данные на диске по желанию, но если вы используете его только для кеширования, он с радостью сохранит все в ОЗУ.
Есть два подхода. Вы можете делать свои обновления в Apache Ignite (который будет распространять их на PostgreSQL) или вы можете делать свои обновления в PostgreSQL, и Apache Ignite загружает их при первом использовании (извлечение из PostgreSQL). Как вы можете себе представить, последнее работает только для новых записей. Нет поддержки распространения данных из PostgreSQL в Apache Ignite, я думаю, вы могли бы сделать что-то подобное, используя триггеры, но это не проверено.
Есть Сторонний клиент. Я не пробовал. Apache Ignite пока имеет только встроенных собственных клиентов для C++ / C# / Java, другие платформы могут подключаться только через JDBC / ODBC / REST и используют только часть функциональности.
Есть REST API, и он недавно улучшился.
С точки зрения Apache Ignite, 120 ГБ - ничего страшного.
в дополнение к ответу Аламара:
Вы можете хранить свои данные в памяти на многих машинах, поскольку Ignite поддерживает многораздельные кеши, которые делятся на части и распределяются между машинами. Вы можете установить размещение данных и количество резервных копий.
В Apache Ignite есть интересная модель памяти, которая позволяет быстро сохранять данные на диске. Как заявили разработчики Ignite, база данных за кластером будет работать медленнее, чем постоянство Ignite, потому что связь проходит через внешние протоколы.
В нашей компании есть огромный кластер Ignite, который хранит в оперативной памяти гораздо больше данных.