2014-11-23 2 views
0

В настоящее время я работаю над (коммерческим) проектом логистики. Мы строим (частично) автоматизированную систему хранения, в которой товары хранятся случайным образом (подумайте о наноамазоне). Позиции объектов хранятся на главном компьютере, и в настоящий момент мы осуществляем резервное копирование через WAL (любые возражения?). Одна из наших проблем заключается в том, что мы должны работать во время отключения электроэнергии, и мы не можем обеспечить достаточную энергию для наших компьютеров для наихудшей продолжительности отключения электроэнергии, которая может составлять несколько часов. [Это, вероятно, никогда не произойдет, как в Германии, но есть некоторые правила, которые нам необходимо выполнить].Сервер Postgresql на планшете?

Итак, моя идея - использовать планшет [дешевле, чем ноутбук], отправить WAL-файлы на него, чтобы пользователь мог получить доступ к данным во время отключения электроэнергии. Но до сих пор я не видел реализации сервера для планшетов (либо Android, либо ios). Разве нет, или я просто не нашел его?

Но, возможно, я также двигаюсь в неправильном направлении. База данных довольно небольшая (< 50000 объектов на складе с каждым < 1kb), а информация, которая нам нужна во время отключения, - это всего одна таблица (object_id -> position_in_warehouse), поэтому я даже думаю о том, чтобы записать эту информацию в файл и использовать git to скопируйте изменения на планшет. Нам также нужно знать, какие объекты были удалены во время отключения, чтобы эта информация легко переносилась обратно в исходный бит.

Или у вас есть другие идеи?

+0

Возможно, возможно направить изменения из таблицы postgres в удаленную базу данных SQLite через функцию trigger + pl/pythin. Или триггер + SQLite FDW. SQLite DB можно установить на планшет. –

+0

Вы считаете ИБП? –

ответ

2

Я не думаю, что есть порт Postgres для Android - для использования файлов WAL вам нужен рабочий сервер. Даже если он был портирован, вы не можете отправлять файлы WAL с сервера x86 на Android-планшет - ведущий и подчиненный должны быть той же основной версией, ОС и архитектурой.

Вы действительно должны периодически экспортировать свои данные из Postgres в простой файл (я бы рекомендовал SQLite) и просто загрузить его с сервера. Я полагаю, что ваши планшеты используют WiFi, и этот файл будет похож на 10MB zip-compress.

В качестве альтернативы вы можете использовать rsync, чтобы поддерживать этот файл. Не используйте git - он сохранит все предыдущие версии этого файла на вашем планшете - он будет расти довольно быстро.

+0

Спасибо! (пока не может повыситься). Что касается git: я планировал использовать простой текстовый файл для хранения местоположений объекта. И в этом случае git просто хранит diff, а не новый текстовый файл.Или что вы хотели сказать? – Foo

+0

Да, он хранит различия. Но все они. Единственное обновление Evey. Это будет работать, но это будет пустой тратой пространства на планшете. – Tometzky

+0

Хорошо. Я не знал, что rsync также отправляет только diff. Поэтому я думаю, что самый простой способ для меня - использовать задание cron с интервалом в несколько минут, которое запускает обновление моего текстового файла и использует rsync для обновления планшета. – Foo

3

Есть ли у вас какое-то значение для вас? Отмените опцию Android + PostgreSQL прямо сейчас.

Сохраните это. Вы можете получить дешевый ноутбук практически ничего, особенно секундной стрелки. Так как вы явно не заботитесь об этом, работает как резервный вариант, который кажется без проблем. Вы можете запустить поточную реплику с архивированием WAL для резервного копирования.

Для вашего реального варианта возврата вы находитесь на правильном пути, записывая данные, которые вам нужны, для плоского файла и синхронизируете именно это. Не забудьте на самом деле проверить это - вы должны использовать его иногда и убедитесь, что он работает.

BTW, для ваших резервных копий WAL-streaming, предлагаю PgBarman, который будет управлять удержанием и поворотом для вас. Вы должны также делать логические свалки, а не проверять свои резервные копии.

+0

Резервное копирование (планшет или ноутбук) будет частью нашего продукта, и у меня возникает ощущение, что полный ноутбук слишком большой и как-то мощный. Я просто хочу показать некоторые простые значения из базы данных (или файла), и полноценный ноутбук звучит как перебор. Но мы все еще разрабатываем эту функцию. Если мы решили не использовать планшет, мы могли бы даже записать данные на USB-Stick и использовать ноутбук пользователя. (Но мы, конечно, заставляем его всегда заряжать ноутбук). – Foo

+0

@Foo Разработка функции для продукта? Eep. То, как вы разговаривали, звучит так, будто вы имеете дело с назойливым непрактичным регулированием для какой-то внутренней работы, а не для чего-то другого. Я думаю, что для * продукта * подходящая вещь - почти наверняка иметь прикрепленный планшет и регулярно обновлять базу данных SQLite копией критической таблицы. –