2008-09-13 28 views
33

Nếu có thể, tôi quan tâm đến việc có thể nhúng cơ sở dữ liệu PostgreSQL, tương tự như sqllite. Tôi đã đọc rằng đó là not possible. Tôi không có chuyên gia cơ sở dữ liệu, vì vậy tôi muốn nghe từ bạn.Nếu có thể làm thế nào có thể nhúng PostgreSQL?

Về cơ bản tôi muốn PostgreSQL mà không cần cấu hình và cài đặt. Nếu có thể, hãy cho tôi biết làm thế nào.

+1

Điều gì xảy ra với các CaP của RaNdOm? –

+1

Không có mũ ngẫu nhiên ở đó. Dường như tôi đã nhầm lẫn với g, tôi hiểu rồi. – pc1oad1etter

+1

Thay vì theo nghĩa đen nhúng nó, bạn có thể cài đặt nó cùng với chương trình của bạn và chỉ chạy nó trong khi chương trình của bạn đang chạy không? –

Trả lời

10

Trừ khi bạn viết lại mã chính, không thể chạy Postgres "được nhúng". Hoặc chạy nó như là một quá trình riêng biệt hoặc sử dụng một cái gì đó khác. SQLite là một sự lựa chọn tuyệt vời. Nhưng có những người khác. MySQL có một phiên bản nhúng. Xem tại số http://mysql.com/oem/. Ngoài ra một số lựa chọn java, và Mac có Core dữ liệu bạn có thể viết quá. Địa ngục, bạn thậm chí có thể sử dụng FoxPro. Bạn đang sử dụng hệ điều hành nào và dịch vụ nào bạn cần từ cơ sở dữ liệu?

+0

Chúng tôi đã có một ứng dụng sử dụng PGSQL (Windows XP), tôi không biết những nhánh chuyển đổi sang cơ sở dữ liệu khác - nhưng tôi cho rằng chúng sẽ ít quan trọng hơn nếu có phiên bản PGSQL nhúng. – pc1oad1etter

+1

Môi trường là Windows XP, và một trong những mối quan tâm lớn nhất là các chính sách của môi trường đòi hỏi phải có thêm các bước nhảy nếu gói mới đang được cài đặt, trong khi chỉ đơn giản là thả một cấu hình zero-config, không có tập tin cài đặt nào đơn giản hơn. – pc1oad1etter

+0

@ pc1oad1etter vấn đề của bạn (không có cách dễ dàng để cài đặt gói mới) có thể được giải quyết ở một cấp độ khác nhau. Nếu bạn cung cấp ** one ** gói cài đặt postgres và mã của bạn ... điều này có giúp được không? – guettli

1

PostgreSQL được dự định chạy như một máy chủ độc lập; nó có thể nhúng nó nếu bạn hack nó cứng và đủ lâu, nhưng nó sẽ dễ dàng hơn nhiều để chỉ chạy nó như dự định trong một quá trình riêng biệt.

12

Bạn không thể nhúng và cũng không nên thử.

Để nhúng, bạn nên sử dụng sqlite như bạn đã đề cập hoặc firebird rdbms.

+5

Tôi khuyên bạn nên sử dụng Firebird –

+2

Tôi hiện đang xem xét việc học Firebird làm cơ sở dữ liệu duy nhất có cả dạng nhúng và máy khách/ứng dụng. nguồn, chương trình nghị sự phi thương mại. – explorer

+0

_ "... bạn cũng không nên thử ..." _ Tại sao không? Thậm chí Oracle có thể nhúng được. –

7

Bạn không thể nhúng nó dưới dạng loại quy trình như sqlite, v.v. nhưng bạn có thể dễ dàng nhúng nó vào thiết lập ứng dụng của mình bằng cách sử dụng thiết lập Inno tại http://www.innosetup.org. Tìm kiếm kho lưu trữ danh sách gửi thư của họ và bạn sẽ tìm thấy ai đó đã làm hầu hết công việc cho bạn và tất cả những gì bạn phải làm là lấy bản phân phối đã nén và bạn có thể dễ dàng cài đặt postgresql khi người dùng cài đặt ứng dụng của bạn. Sau đó bạn có thể sử dụng tệp pg_hba.conf để hạn chế máy chủ chỉ lưu trữ cục bộ. Không phải là một DB nhúng đúng, nhưng nó sẽ hoạt động.

+0

Bạn đã thành công khi sử dụng innosetup để cài đặt postgresql im lặng chưa? điều đó thật tuyệt vời! – swdev

12

Run postgresql trong một quá trình nền.

Bắt đầu một chuỗi riêng biệt trong ứng dụng của bạn sẽ khởi động máy chủ postgresql ở chế độ cục bộ bằng cách liên kết nó với máy chủ cục bộ với một số cổng miễn phí ngẫu nhiên hoặc bằng cách sử dụng ổ cắm (cửa sổ hỗ trợ ổ cắm?). Điều đó khá dễ dàng, chẳng hạn như:

hệ thống ("C: \ Program Files \ MyApplication \ pgsql \ postgres.exe -DC: \ Documents and Settings \ User \ Local Settings \ MyApplication \ database -h 127.0.0.1 -p 12345 ");

và sau đó chỉ cần kết nối với 127.0.0.1:12345.

Khi ứng dụng của bạn thoát, bạn luôn có thể gửi SIGTERM đến chủ đề của mình và sau đó đợi vài giây để postgresql thoát (ví dụ: tham gia chuỗi).

PS: Bạn cũng có thể sử dụng pg_ctl để kiểm soát cơ sở dữ liệu "được nhúng" của mình, ngay cả khi không có chủ đề, chỉ cần thực hiện "pg_ctl start" (với tùy chọn thích hợp) khi khởi động ứng dụng và "pg_ctl stop" khi thoát.

+2

Không, tôi không hài hước, theo bất kỳ cách nào mà tôi đã biết, trong câu hỏi của tôi. – pc1oad1etter

+0

Tuyệt! Cảm ơn bạn đã cung cấp dòng lệnh! –

+0

Cảm ơn bạn. Giải pháp này có vẻ tốt. Có, bắt đầu postgres là công việc nhiều hơn bằng cách sử dụng sqlite, nhưng theo cách này bạn có một cơ sở dữ liệu thực sự, không chỉ là một đồ chơi :-) – guettli

1

HSQLDB (http://hsqldb.org/) là một db khác dễ dàng được nhúng. Yêu cầu Java, nhưng là một sự lựa chọn tuyệt vời và thường được sử dụng cho các ứng dụng Java.

+2

Tôi recommand H2 (http://www.h2database.com) thay vì HSQLDB. – Stephan

Các vấn đề liên quan