Можно ли использовать PostgreSQL с базой данных на диске?

StackOverflow https://stackoverflow.com/questions/1626818

Вопрос

В настоящее время у меня есть приложение, которое использует Firebird во встроенном режиме для подключения к относительно простой базе данных, хранящейся в виде файла на моем жестком диске.Я хочу переключиться на использование PostgreSQL, чтобы сделать то же самое (Да, я знаю, что это перебор).Я знаю, что PostgreSQL не может работать во встроенном режиме, и это нормально - я могу оставить серверный процесс запущенным, и меня это устраивает.

Я пытаюсь найти строку подключения, которая позволит достичь этого, но безуспешно.Я пробовал вариации на тему следующего:

jdbc:postgresql:C:\myDB.fdb
jdbc:postgresql://C:\myDB.fdb
jdbc:postgresql://localhost:[порт]/C:\myDB.fdb

но, похоже, ничего не работает.PostgreSQL's указания не включайте пример для этого случая.Возможно ли это вообще?

Это было полезно?

Решение

Базы данных Postgres - это не единый файл.В каталоге данных, внутри каталога для базы данных, будет один файл для каждой таблицы и каждого индекса.Всем файлам будут присвоены имена с идентификатором объекта (OID) базы данных / таблицы / индекса.

URL-адреса JDBC указывают на имя базы данных, а не на какой-либо конкретный файл:jdbc:postgresql:foodb (подразумевается localhost)

Если под "диском, который ведет себя как память" вы подразумеваете, что база данных существует только в течение срока службы вашей программы, то нет причин, по которым вы не можете создать базу данных при запуске программы и удалить ее при выходе из программы.Обратите внимание, что это просто DDL для создания базы данных, а не для создания каталога данных с помощью программы init-db.Вы могли бы подключиться к базе данных postgres по умолчанию, создать свою базу данных, а затем подключиться к ней.

Другие советы

Вы можете обмануть это.Если вы используете PostgreSQL в системе, подобной Unix, то вы должны иметь возможность создать RAMDISK и использовать его для хранения базы данных.Вот довольно хороший шаг за шагом руководство для RAMdisks в Linux.

В целом, однако, я бы предложил использовать SQLITE для приложений типа SQL db in RAM.

Firebird версии 2.1 поддерживает глобальные временные таблицы, которые существуют только на время подключения к базе данных.

Синтаксис выглядит примерно так : СОЗДАТЬ ГЛОБАЛЬНУЮ ВРЕМЕННУЮ ТАБЛИЦУ ...ПРИ ФИКСАЦИИ СОХРАНЯЙТЕ СТРОКИ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top