2008-09-13 11 views
33

Jeśli to możliwe, interesuje mnie możliwość osadzenia bazy danych PostgreSQL, podobnej do sqllite. Czytałem, że to jest not possible. Nie jestem jednak ekspertem od baz danych, więc chcę usłyszeć od ciebie.Jeśli to możliwe, jak osadzić PostgreSQL?

Zasadniczo chcę PostgreSQL bez całej konfiguracji i instalacji. Jeśli to możliwe, powiedz mi jak.

+1

Co jest z CaNs RaNdOm? –

+1

Brak losowych czapek tam. Najwyraźniej się pomyliłem, chociaż widzę. – pc1oad1etter

+1

Zamiast dosłownie go osadzać, możesz zainstalować go razem z programem i uruchamiać go tylko podczas pracy programu? –

Odpowiedz

10

Dopóki nie wykonasz poważnej przeróbki kodu, nie można uruchomić PostgreStu "osadzonego". Uruchom go jako oddzielny proces lub użyj czegoś innego. SQLite to doskonały wybór. Ale są też inni. MySQL ma wbudowaną wersję. Zobacz go na http://mysql.com/oem/. Również kilka wyborów w języku Java, a Mac ma Core Data, możesz też pisać. Do diabła, możesz nawet użyć FoxPro. Jakiego systemu operacyjnego używasz i jakie usługi potrzebujesz z bazy danych?

+0

Mamy już aplikację, która używa PGSQL (Windows XP), - nie wiem, jakie są konsekwencje przejścia do innej bazy danych - ale założyłem, że byłyby mniej istotne, gdyby istniała osadzona wersja PGSQL. – pc1oad1etter

+1

Środowisko to Windows XP, a jednym z największych problemów jest to, że polityka środowiskowa wymaga dodatkowych kółek, aby przeskoczyć, jeśli instalowany jest nowy pakiet, podczas gdy zwykłe upuszczenie zerowej konfiguracji, bez pliku instalacyjnego, byłoby prostsze. – pc1oad1etter

+0

@ PC1oad1etter swój problem (brak łatwego sposobu instalacji nowego pakietu) może być rozwiązany na innym poziomie. Jeśli podasz ** jeden pakiet, który zainstaluje PostgreSQL i twój kod ... czy to pomoże? – guettli

1

PostgreSQL ma działać jako samodzielny serwer; Prawdopodobnie można go osadzić, jeśli włamie się na niego wystarczająco długo i mocno, ale znacznie łatwiej byłoby po prostu uruchomić go zgodnie z przeznaczeniem w oddzielnym procesie.

12

Nie można go osadzić ani spróbować.

Do osadzania należy użyć sqlite jak wspomniano lub firebird rdbms.

+5

Polecam Firebird –

+2

Rozważam także uczenie się Firebirda jako jedynej bazy danych, która jest dostępna zarówno w formie osadzonej, jak i na serwerze/kliencie i ma całkowicie darmowy, otwarty źródłowy, niekomercyjny program. – explorer

+0

_ "... nie powinieneś też próbować ..." _ Dlaczego nie? Nawet Oracle można osadzać. –

7

Nie można osadzić go jako elementu typu procesu, takiego jak sqlite itp., Ale można go łatwo osadzić w konfiguracji aplikacji przy użyciu konfiguracji Inno pod adresem http://www.innosetup.org. Przeszukuj ich archiwa list mailingowych, a znajdziesz kogoś, kto wykonał dla ciebie większość pracy, a wszystko, co musisz, to pobrać rozpakowaną dystrybucję i możesz łatwo zainstalować postgresql, gdy użytkownik zainstaluje twoją aplikację. Następnie można użyć pliku pg_hba.conf, aby ograniczyć serwer tylko do lokalnego hosta. Nie jest to prawdziwy osadzony DB, ale zadziałałby.

+0

Czy odniosłeś sukces przy korzystaniu z innosetup do instalacji cichej postgresql? byłoby świetnie! – swdev

12

Run PostgreSQL w procesie tła.

Uruchom osobny wątek w swojej aplikacji, który uruchamia serwer PostgreSQL w trybie lokalnym poprzez powiązanie go z localhost za pomocą losowego wolnego portu lub za pomocą gniazd (czy obsługuje gniazda windows?). To powinno być dość łatwe, takie jak:

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

, a następnie po prostu połącz z 127.0.0.1:12345.

Po zamknięciu aplikacji zawsze możesz wysłać SIGTERM do wątku, a następnie poczekać kilka sekund, aż postgresql zakończy pracę (tzn. Dołączy do wątku).

PS: Możesz również użyć pg_ctl do kontrolowania swojej "osadzonej" bazy danych, nawet bez wątków, po prostu wykonuj "pg_ctl start" (z odpowiednimi opcjami), gdy uruchamiasz aplikację i "pg_ctl stop", gdy wychodzisz.

+2

Nie, w moim pytaniu nie byłem zabawny, w żaden sposób, o czym wiedziałem. – pc1oad1etter

+0

Fajnie! Dzięki za dostarczenie linii poleceń! –

+0

Dziękuję. To rozwiązanie wygląda dobrze. Tak, zaczynanie postgretu to więcej pracy niż używanie sqlite, ale w ten sposób masz prawdziwą bazę danych, a nie tylko zabawkę :-) – guettli

1

HSQLDB (http://hsqldb.org/) to kolejny element, który można łatwo osadzić. Wymaga Java, ale jest doskonałym i często wykorzystywanym wyborem dla aplikacji Java.

+2

Polecam H2 (http://www.h2database.com) zamiast HSQLDB. – Stephan

Powiązane problemy