2008-09-13 4 views
33

가능하다면 sqllite과 비슷한 PostgreSQL 데이터베이스를 삽입 할 수 있다는 것에 관심이 있습니다. 나는 그것이 not possible이라고 읽었습니다. 나는 데이터베이스 전문가가 아니기 때문에 여러분의 의견을 듣고 싶습니다.가능한 경우 어떻게 PostgreSQL을 내장 할 수 있습니까?

필자는 기본적으로 모든 구성 및 설치없이 PostgreSQL을 원합니다. 가능하다면, 어떻게 말해.

+1

RaNdOm CaP는 무엇입니까? –

+1

무작위 대문자가 없습니다. 분명히 나는 ​​g에서 착각을 당했다. – pc1oad1etter

+1

문자 그대로 삽입하는 대신 프로그램과 함께 설치하고 프로그램이 실행되는 동안에 만 실행할 수 있습니까? –

답변

10

코드를 크게 재 작성하지 않으면 "포함 된"Postgres를 실행할 수 없습니다. 별도의 프로세스로 실행하거나 다른 것을 사용하십시오. SQLite는 탁월한 선택입니다. 그러나 다른 사람들이 있습니다. MySQL에는 임베디드 버전이 있습니다. http://mysql.com/oem/에서 확인하십시오. 또한 몇 가지 자바 선택, 그리고 Mac은 당신이 쓸 수있는 핵심 데이터가 있습니다. 지옥, 당신도 FoxPro를 사용할 수 있습니다. 어떤 OS를 사용하고 있으며 데이터베이스에서 필요한 서비스는 무엇입니까?

+0

PGSQL (Windows XP)을 사용하는 응용 프로그램이 이미 있습니다. 다른 데이터베이스로 전환 할 때 어떤 영향을 미치는지는 모르겠지만 PGSQL이 내장되어 있으면 중요하지 않다고 생각했습니다. – pc1oad1etter

+1

환경은 Windows XP이며, 가장 큰 우려 사항 중 하나는 새로운 패키지를 설치하는 경우 환경 정책에서 점차적으로 뛰어 넘어야한다는 것입니다. 단순히 0 설정을 삭제하면 설치 파일이 더 간단하지 않습니다. – pc1oad1etter

+0

@ pc1oad1 귀하의 문제 (새로운 패키지를 쉽게 설치할 수 없음)를 다른 수준에서 해결할 수 있습니다. postgres와 코드를 설치하는 ** 패키지를 제공하면 ... 도움이 될까요? – guettli

1

PostgreSQL은 독립 실행 형 서버로 실행됩니다. 해킹을 어렵게하거나 길게 해킹하는 것이 가능할 수도 있지만 별도의 프로세스에서 의도 한대로 실행하는 것이 훨씬 쉽습니다.

12

삽입 할 수 없으며 시도해야합니다.

퍼가기 위해 언급 한대로 sqlite이나 firebird rdbms을 사용해야합니다.

+5

나는 Firebird를 추천합니다 –

+2

저는 Firebird를 임베디드 및 서버/클라이언트 형태로 제공하고 완전히 무료 인 오픈 데이터베이스 출처, 비상업적 인제. – explorer

+0

_ "시도하지 않아도 되나요?"_ 왜 안 되니? 오라클조차도 임베딩이 가능합니다. –

7

sqlite 등과 같이 프로세스 유형의 것으로 임베드 할 수는 없지만 에서 Inno 설정을 사용하여 응용 프로그램 설정에 쉽게 임베드 할 수 있습니다. 그들의 메일 링리스트 아카이브를 검색하면 누군가가 당신을 위해 대부분의 일을했고, 압축 된 배포판을 잡는 것만 알면 사용자가 앱을 설치할 때 postgresql을 쉽게 설치할 수 있습니다. 그런 다음 pg_hba.conf 파일을 사용하여 서버를 로컬 호스트로만 제한 할 수 있습니다. 진정한 임베디드 DB는 아니지만 작동 할 것입니다.

+0

postgresql 자동 설치를 수행하기 위해 innosetup을 사용하여 성공 했습니까? 그게 좋을거야! – swdev

12

실행 PostgreSQL을 (물론 SQLite는 내 임베디드뿐만 아니라 선택의 DB 것이다).

응용 프로그램에서 로컬 모드로 postgresql 서버를 시작하는 별도의 스레드를 임의의 자유 포트를 사용하여 localhost에 바인딩하거나 소켓을 사용하여 시작합니다 (Windows는 소켓을 지원합니까?). 매우 간단해야합니다.

시스템 ("C : \ Program Files \ MyApplication \ pgsql \ postgres.exe -DC : \ Documents and Settings \ User \ Local Settings \ MyApplication \ database -h 127.0.0.1 -p 12345 ");

127.0.0.1:12345에 연결하십시오.

응용 프로그램이 종료되면 항상 스레드에 SIGTERM을 보내고 postgresql이 종료 될 때까지 기다릴 수 있습니다 (예 : 스레드에 참여).

추신 : pg_ctl을 사용하여 스레드가 없어도 "포함 된"데이터베이스를 제어 할 수 있습니다. 응용 프로그램을 시작할 때 적절한 옵션으로 "pg_ctl start"를 실행하고 종료 할 때 "pg_ctl stop"을 수행하십시오.

+2

아니, 나는 내 질문에 내가 알고있는 어떤 방식으로도 재밌지는 않았다. – pc1oad1etter

+0

쿨! 커맨드 라인을 제공해 주셔서 감사합니다! –

+0

감사합니다. 이 솔루션은 좋아 보인다. 예, postgres를 시작하는 것은 sqlite를 사용하는 것보다 더 많은 일이지만,이 방법은 장난감이 아니라 실제 데이터베이스를 가지고 있습니다. – guettli

1

HSQLDB (http://hsqldb.org/)는 쉽게 임베드 될 수있는 또 다른 DB입니다. Java가 필요하지만 Java 응용 프로그램에 대해 우수하고 자주 사용되는 선택입니다.

+2

HSQLDB 대신 H2 (http://www.h2database.com)를 권합니다. – Stephan

관련 문제