Wiem, że App Engine ma własny magazyn danych. Jest to świetne rozwiązanie w większości przypadków i dość łatwe w użyciu. Mamy jednak bazę danych MySQL, którą używamy dla kilku aplikacji i nie wszystkie są oparte na Internecie. Chcemy korzystać z App Engine z wielu powodów, ale chcielibyśmy, aby aplikacja App Engine uzyskała dostęp do naszej bazy danych MySQL. Dokumentacja, którą znalazłem, nie wskazuje wyraźnie, czy mogę to zrobić, czy nie. Czy ktoś to zrobił lub ma wskazówki do dokumentów, które pokazują, jak to zrobić?Czy mogę używać bazy danych MySQL z aplikacją App Engine?
Odpowiedz
Prosta odpowiedź brzmi: NIE.
Sposób dostępu do MySQL polegałby na udostępnieniu mu interfejsu usługi sieciowej.
Nie można utworzyć bezpośredniego połączenia sieciowego z bazą danych. overview page opisuje główne ograniczenia, które uniemożliwią korzystanie z Mysql - w tym przypadku najważniejszym jest "arbitralne połączenie sieciowe". Możesz wykonywać tylko wywołania http (s) z poziomu silnika aplikacji.
JVM działa w zabezpieczonej „sandbox” środowiska odizolować aplikację dla obsługi i bezpieczeństwa. Sandbox zapewnia, że aplikacje mogą tylko wykonywać działania, które nie zakłócają działania przy wydajności i skalowalności innych aplikacji. Na przykład aplikacja nie może odradzać wątków, zapisywać danych w lokalnym systemie plików ani uzyskiwać arbitralnych połączeń sieciowych . Aplikacja również nie może używać kodu JNI lub innego natywnego kodu . JVM może wykonywać każdy kod Java , który działa w ramach ograniczeń obszaru izolowanego .
Naprawdę chciałbym wiedzieć, jak ta odpowiedź zasługuje na uwagę, zwłaszcza rok po fakcie. –
To już nie jest prawda. Sprawdź Google Cloud SQL: https://code.google.com/apis/sql/docs/developers_guide_java.html –
@lukas zauważysz, że nadal nie możesz połączyć się z zewnętrznymi bazami danych MySql, takimi jak pożądany program operacyjny. Jesteś ograniczony do łączenia się z bazami danych mysql hostowanych przez App Engine. Ponadto w tej chwili nie można połączyć się z bazą hostowaną w chmurze z poziomu aplikacji App Engine. –
Google niedawno ogłosił wsparcie dla Cloud SQL w GAE - http://googleappengine.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html
Tak, ale nie jest normalne, tworząc usługę internetową lub prostą stronę php, który działa jako produkt pośredni i przekazujący dane w json lub xml.
jestem jeszcze w fazie uczenia się tego wszystkiego, ale jestem niemal pewien, można to zrobić teraz kilka sposobów:
- link Aplikacje skryptów do App Engine i korzystać z JDBC i tusz do Google
- Store bazy danych SQL na Google cloud Storage
- Połącz Aplikacje Skrypty poprzez kalkulacyjnego skryptów
- Użyj ich cloud SQL
"Skrypt Google Apps może nawiązywać połączenia z bazami danych za pośrednictwem JDBC z usługą Jdbc. Obecne wsparcie obejmuje MySQL, Microsoft SQL Server i Oracle. Aplikacja Skrypt ułatwia łączenie się z bazami danych hostowanymi w Google Cloud SQL, ale współpracuje również z innymi platformami do hostowania w chmurze, a nawet z lokalnymi bazami danych."https://developers.google.com/apps-script/jdbc
(origionally z App Engine Question)
użyciu lokalnego MySQL przykład podczas rozwoju.
import com.google.appengine.api.rdbms.AppEngineDriver; public static void makeConnection() { try { if (conn == null || !conn.isValid(0)) { String url = "localhost/databasename"; String username = "root"; String password = "password"; DriverManager.registerDriver(new AppEngineDriver()); String urlForConnection = "jdbc:mysql://" + url; conn = DriverManager.getConnection(urlForConnection, username, password); } } catch (SQLException e) { e.printStackTrace(); } } // in web.xml <filter> <filter-name>_ah_DevSocketFilter</filter-name> <filter-class>com.google.appengine.api.socket.dev.DevSocketFilter</filter-class> <init-param> <param-name>use-native-sockets</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>_ah_DevSocketFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Korzystanie obłokowi
DriverManager.registerDriver(new AppEngineDriver());
c = DriverManager.getConnection("jdbc:google:rdbms://instance_name/guestbook");
dzięki za dostarczenie kodu, ten kod działa z lokalną instancją MySQL podczas programowania chcę wiedzieć, czy możliwe jest podłączenie zewnętrznej bazy danych mysql (nie w chmurze instancji MySql) z aplikacją (podczas produkcji) – Dev
Nie. Można używać tylko chmury Google Cloud sql . Jest to ze względów bezpieczeństwa (tylko one nie dają Ci dostępu do swoich usług internetowych). Ale możesz połączyć Google Cloud Sql z jakimś klientem desctope, takim jak mysql workbench, aby zarządzać Google Cloud Sql na twoim komputerze – makkasi
dziękuję za odpowiedź @ makkasi. – Dev
Tak, można
Przeczytaj o int https://cloud.google.com/sql/docs
Możesz go używać z dowolnym językiem obsługiwanym przez GAE i łączyć się z nim także spoza GAE.
- 1. Zadzwoń do bazy danych Firebase z Google App Engine
- 2. Czy można używać Google App Engine jako bazy danych dla aplikacji na Androida?
- 3. Czy można używać bibliotek dostawców Go z Google App Engine?
- 4. Google App Engine Geohashing
- 5. Maven + Grails + App Engine
- 6. Czy można używać Django 1.2 w Google App Engine?
- 7. Przechowywanie danych w aplikacji Google App Engine
- 8. Czy mogę zaszyfrować hasło bazy danych SQLite?
- 9. Wersja App Engine, Memcache
- 10. Normalizacja bazy danych MySQL
- 11. Do czego mogę użyć Google App Engine?
- 12. Zdalny interfejs API z kontami usługi Google App Engine?
- 13. Czy można używać Laravel 4 bez domyślnej bazy danych
- 14. Czy mogę obsługiwać wielokrotne logowanie Google za pomocą App Engine?
- 15. Schemat bazy danych MySQL
- 16. Czy mogę korzystać z autonomicznej warstwy bazy danych Laravel?
- 17. Kiedy należy NIE używać interfejsu API wyszukiwania pełnotekstowego App Engine?
- 18. Google App Engine APNS
- 19. Tworzenie bazy danych WWW/serwera do użycia z aplikacją Android
- 20. Czy mogę utworzyć początkową migrację bazy danych CodeIgniter z .sql?
- 21. Czy Google App Engine obsługuje ftp?
- 22. Korzystanie z protokołu HTTP Basic-Auth z aplikacją Google App Engine Usługa URLFetch
- 23. Czy są jakieś zastrzeżenia dotyczące używania Objectify z Google Cloud Endpoints w Java Engine App Engine?
- 24. Wysyłanie danych obrazowych do android aplikacji z App Engine
- 25. Pomiar w usłudze Google App Engine
- 26. Czy Google App Engine obsługuje Python 3?
- 27. mapa istniejącej bazy danych mysql z gorm
- 28. Google App Engine: get_or_create()?
- 29. Synchronizacja bazy danych Access w Ukazuje App
- 30. App Engine return JSON z JsonProperty
dziękuję za odpowiedź, czy masz na myśli SOAP i RESTful usług internetowych tutaj? – Dev