Какую распределенную базу данных мне нужно выбрать для среднего проекта данных - PullRequest
0 голосов
/ 19 ноября 2018

Теперь у нас есть проект Java с базой данных PostgreSQL при загрузке Spring 2 с Spring Data JPA (Hibernate).

Требования к новой архитектуре: На N компьютерах у нас есть рабочее место.Каждое рабочее место использует одну и ту же программу с различной конфигурацией (настроенный клиент для перераспределенной базы данных).Количество компьютеров не велико - количество 10/20 компьютеров.База данных должна быть масштабируемой (много данных может храниться на диске ~ 1/2 Тб).Каждый день до 1 миллиона строк могут быть вставлены в базу данных с одного рабочего места.Каждое рабочее место работает с перераспределенной базой данных - это означает, что каждый узел должен иметь возможность чтения / записи данных, измененных друг другом.И принять какое-то решение на основе данных, измененных другим рабочим местом во время выполнения (Транзакционный).Хранилище данных (дисковый архив базы данных) должно быть в состоянии архивировать и копировать как резервный снимок.Проект должен быть переносим на новую архитектуру с Spring Data JPA 2 и резервное копирование базы данных с жидкой базой.Работает на Windows / Linux.

Краткий обзор показывает, что наиболее популярной распространяемой БЕСПЛАТНОЙ базой данных в настоящее время являются: 1) Redis 2) Apache Ignite 3) Hazelcast

Мне нужна помощь в пониманиичтобы архитектор описал систему.Прежде всего, я пытался использовать Redis и зажигать.Redis запускается легко - но работает как простой IMDG (в сетке данных памяти).Но мне нужно хранить все данные в постоянной базе данных (на диске, как, например, воспламенять постоянство).Есть ли способ использовать Redis с существующей базой данных PostgreSQL?Postgres синхронизируется со всеми узлами, а Redis использует в кеше памяти свежие данные, создаваемые каждым рабочим местом.Каждые 10 минут данные сбрасывались на диск.1) Это возможно?Как?

Также я пытался использовать Ignite - но мой проект работает с весенней загрузкой 2. Spring data 2. И последняя выпущенная версия Ignite 2.6, а поддержка data data 2 появится только в apache ignite 2.7!2) Я должен загрузить версию 2.7 для ночной сборки, но как я могу использовать ее в своем проекте?(нужно установить в локальный репозиторий Maven?)

3) И в конце концов, какая архитектура будет лучшей в этом случае?Поставщик хранилища данных хранит постоянные данные на диске, синхронизируется с каждым рабочим пространством в кэш-памяти и сохраняет данные в памяти на диск по таймауту?Какое решение будет лучшим и какую базу данных мне выбрать?(может быть что-то работает с существующим PostgreSQL?)

Thx)

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Ignite не подходит для этих параметров, поскольку JPA 1 поддерживает только. Redis не поддерживает запросы SQL. Наш выбор - простой PostgreSQL master с подчиненной репликацией. Может быть, таракан DB также применяется. Спасибо за помощь))

0 голосов
/ 19 ноября 2018

Ваш вариант использования звучит как обычный для Hazelcast. Вы можете хранить ваши данные в памяти (то есть в Hazelcast IMap), использовать MapStore / MapLoader для сохранения изменений в вашей базе данных или читать из базы данных. Сохраняющиеся изменения могут быть выполнены в режиме сквозной или обратной записи в зависимости от вашей конфигурации. Также доступна интеграция с пружинной загрузкой и Spring-JPA.

Кроме того, объем данных, которые вы хотите сохранить, достаточно велик для 10-20 машин, поэтому вы можете использовать опцию Hazelcast High-Density Memory Store, чтобы иметь возможность хранить большие объемы данных на обычном оборудовании без GC. проблемы.

Следующие ссылки должны дать вам дальнейшее представление:

...