2009-10-26 5 views
0

현재 내 하드 드라이브에 파일로 저장되어있는 비교적 간단한 데이터베이스에 연결하기 위해 임베디드 모드에서 Firebird를 사용하는 응용 프로그램이 있습니다. PostgreSQL을 사용하여 동일한 작업을 수행하고 싶습니다 (예, 과용이라고 알고 있습니다). 나는 PostgreSQL가 임베디드 모드에서 작동 할 수 없다는 것을 알고 있습니다. 서버 프로세스를 그대로두면 괜찮습니다.PostgreSQL을 디스크상의 데이터베이스와 함께 사용할 수 있습니까?

나는 이것을 달성 할 수있는 연결 문자열을 찾아 내려고했지만 실패했습니다.

JDBC : 나는 다음에 변화를 시도했습니다 PostgreSQL의 : C : \ myDB.fdb
JDBC : PostgreSQL의 : // C : \ myDB.fdb
JDBC : PostgreSQL의 : // localhost를 : [포트] /C:\myDB.fdb

하지만 아무 것도 작동하지 않는 것 같습니다. PostgreSQL의 directions에는이 경우에 대한 예제가 없습니다. 이것은 가능한가?

+2

포스트 그레스는 하나 개의 파일에 데이터베이스를 저장할 수 없습니다 ROWS를 유지 COMMIT. 운영 체제에 따라 단일 파일 내에 디스크 이미지를 가질 수 있습니다. Firebird 또는 다른 내장 데이터베이스를 계속 사용하면 어떤 문제가 있습니까? 나는 Postgres도 좋아하지만 - 그것이 당신의 요구 사항에 맞지 않는다면 ... –

+0

나는 이것을 두려워했다. 최종 사용자가 제기 한 보안 문제로 인해 전환 중이지만 다른 옵션을 찾아야합니다. – Chris

+0

@Chris : 데이터베이스 파일에 액세스 할 때 데이터베이스가 실제로 안전하다고 생각하지 않습니다. 따라서 임베디드 모드는 안전하지 않습니다. –

답변

0

Postgres 데이터베이스는 단일 파일이 아닙니다. 각 테이블마다 하나의 파일이 있고 데이터 디렉토리의 각 색인이 데이터베이스의 디렉토리 안에 있습니다. 모든 파일의 이름은 db/table/index의 오브젝트 ID (OID)로 지정됩니다. JDBC : PostgreSQL의 "메모리처럼 동작 디스크"로하면 foodb (로컬 호스트가 암시)

, 당신은 DB 만 존재한다는 것을 의미

JDBC의 URL은 데이터베이스 이름이 아닌 특정 파일을 가리 프로그램의 수명주기 동안 프로그램 시작시 db를 생성하고 프로그램 종료시 db를 생성 할 수없는 이유는 없습니다. 이것은 단지 init-db 프로그램을 통해 데이터 디렉토리를 생성하지 않고 DB를 생성하는 DDL 일뿐입니다. 기본 'postgres'db에 연결하고 db를 만든 다음 연결하십시오.

+0

스티브 케이의 답을 해결책으로 표시하고 싶습니다.하지만 코멘트 였기 때문에 이것이 가장 좋은 방법입니다. – Chris

1

당신은 그것을 속일 수 있습니다. 유닉스 계열 시스템에서 PostGRESQL을 실행한다면, RAMDISK를 생성하여 데이터베이스 저장 장치에 사용할 수 있어야합니다. 여기에 꽤 좋은 단계가 있습니다 guide for RAMdisks on Linux.

그러나 일반적으로 RAM 유형의 응용 프로그램에서는 SQL 데이터베이스를 SQLite로 사용하는 것이 좋습니다.

+0

의견을 주셔서 감사합니다. 그러나 RAM 디스크는 메모리처럼 작동하는 디스크가 필요한 반면 디스크처럼 작동하는 메모리 인 것으로 보입니다. – Chris

+0

디스크와 메모리 간의 주요 동작 차이는 메모리가 매우 빠르며 모든 위치가 똑같이 빠르게 액세스된다는 것입니다. 메모리처럼 작동하는 디스크를 얻는 유일한 방법은 메모리를 사용하는 것입니다. 즉, SSD 디스크 또는 플래시 메모리입니다. PostgreSQL은 그 둘 중 하나에 데이터베이스를 저장할 수 있습니다. –

0

Firebird 2.1 이상은 데이터베이스 연결 기간 동안 만 존재하는 전역 임시 테이블을 지원합니다.

구문 GLOBAL TEMPORARY 테이블 만들기 같은 간다 ... ON은

관련 문제