Komponent typu Serwer MySQL

0

Witam Was, muszę napisać komercyjny program który będzie się opierał o bazę mysql. Połączenie zewnętrzne np z nazwa.pl / home.pl itp. Ale program musi też oferować możliwość instalacji lokalnej bazy na tym samym komputerze co program ( np. komputer pozbawiony dostępu do internetu ). A to powoduje że muszę napisać drugi program który będzie serwerem mysql o ile istnieją takie komponenty do tego lub wykorzystać jakąś gotową instalkę "microsoft server mysql"? Czy do komercyjnego programu mogę użyć serwera od microsoftu bez żadnych kosztów czy trzeba coś wykupić ?

Komponenty do łączenia z bazą danych to MyDac od Devartu, system operacyjny tylko windows

1

Między programem a bazą danych dobrze jest postawić jakiś serwis wymieniający dane, tzn. program nie będzie łączyć się bezpośrednio do bazy.

W sytuacji gdy potrzebuje aby baza stała u klienta instalujesz mu
https://dev.mysql.com/downloads/mysql/
a w serwisie konfigurujesz połączenie z lokalną bazą.

microsoft server mysql

Takiego cuda to chyba nie ma :D

0

Zdajesz sobie z tego sprawę, że większość hostingów ma zablokowany dostęp do serwera MySQL spoza localhost i tym samym połączenie się z bazą z internetu będzie niemożliwe?

Poza tym chyba nie sądzisz, że ktoś przygotował gotowy serwer bazodanowy w postaci komponentu (najlepiej darmowego) który upuszczamy na formatkę i już. To by było zbyt piękne :) Rzeczywistość jest zupełnie inna i takie rzeczy się pisze zupełnie inaczej. Serwery zazwyczaj działają jako usługi, a te ze względu na swoją specyfikę się pisze inaczej niż aplikacje okienkowe.

0
Mr.YaHooo napisał(a):

Zdajesz sobie z tego sprawę, że większość hostingów ma zablokowany dostęp do serwera MySQL spoza localhost i tym samym połączenie się z bazą z internetu będzie niemożliwe?

Aj tam gadasz, ruting se ustawi i będzie banglać :D

Poza tym chyba nie sądzisz, że ktoś przygotował gotowy serwer bazodanowy w postaci komponentu (najlepiej darmowego) który upuszczamy na formatkę i już. To by było zbyt piękne :)
Rzeczywistość jest zupełnie inna i takie rzeczy się pisze zupełnie inaczej. Serwery zazwyczaj działają jako usługi, a te ze względu na swoją specyfikę się pisze inaczej niż aplikacje okienkowe.

Aj tam od razu...
Nie jestem pewien na 100%, ale chyba taki NexusDB da się użyć w wersji osadzonej jako "komponent" :D
https://www.nexusdb.com/support/index.php?q=node/517

0

@hipekk: Architektura trójwarstwowa nie będzie potrzebna. Poza tym mam akurat wersję Embercadero professional a tam nie ma DataSnap.

Czyli mogę legalnie zrobić instalatora na zasadzie że sam automatycznie pobierze MySQL Community Server i się zainstaluje na komputerze danego użytkownika? Ręcznie to odpada gdyż program przeznaczony dla wielu klientów zagranicznych.

0
Rafał D napisał(a):

@hipekk: Architektura trójwarstwowa nie będzie potrzebna. Poza tym mam akurat wersję Embercadero professional a tam nie ma DataSnap.

DataSnap nie jest do niczego potrzebny. Nawet nie polecam tej wolnej kobyły...
Taki birdge, który pozwala wykonać dowolny kod SQL przez HTTP, dla dowolnej bazy danych można napisać z wykorzystaniem mORMot w 15 minut.
http://blog.synopse.info/post/2014/11/18/HTTP-remote-access-for-SynDB-SQL-execution

Czyli mogę legalnie zrobić instalatora na zasadzie że sam automatycznie pobierze MySQL Community Server i się zainstaluje na komputerze danego użytkownika? Ręcznie to odpada gdyż program przeznaczony dla wielu klientów zagranicznych.

Możesz zainstalować, jak kupisz licencję:
https://www.mysql.com/about/legal/licensing/oem/

Q3: As a commercial OEM, ISV or VAR, when should I purchase a commercial license for MySQL software?

A: OEMs, ISVs and VARs that want the benefits of embedding commercial binaries of MySQL software in their commercial applications but do not want to be subject to the GPL and do not want to release the source code for their proprietary applications should purchase a commercial license from Oracle. Purchasing a commercial license means that the GPL does not apply, and a commercial license includes the assurances that distributors typically find in commercial distribution agreements.

0

Czyli mogę legalnie zrobić instalatora na zasadzie że sam automatycznie pobierze MySQL Community Server i się zainstaluje na komputerze danego użytkownika? Ręcznie to odpada gdyż program przeznaczony dla wielu klientów zagranicznych.

Ale program musi też oferować możliwość instalacji lokalnej bazy na tym samym komputerze co program ( np. komputer pozbawiony dostępu do internetu )

Coś mi się tu gryzie ;).

Ręcznie to odpada gdyż program przeznaczony dla wielu klientów zagranicznych.

Jakieś kolejne B2B piszesz :D?

Możesz to zrobić na bazie SQLite.

Wtedy nie musisz nic instalować.

Pomijając wszystko:

Zgaduje, że baza danych musi być też jakoś zasilana danymi?
Jak to będzie się odbywać gdy komputer nie będzie miał połączenia z Internetem?

0
hipekk napisał(a):

Czyli mogę legalnie zrobić instalatora na zasadzie że sam automatycznie pobierze MySQL Community Server i się zainstaluje na komputerze danego użytkownika? Ręcznie to odpada gdyż program przeznaczony dla wielu klientów zagranicznych.

Ale program musi też oferować możliwość instalacji lokalnej bazy na tym samym komputerze co program ( np. komputer pozbawiony dostępu do internetu )

Coś mi się tu gryzie ;).
Możesz to zrobić na bazie SQLite.

Wtedy nie musisz nic instalować.

Pomijając wszystko:

Zgaduje, że baza danych musi być też jakoś zasilana danymi?
Jak to będzie się odbywać gdy komputer nie będzie miał połączenia z Internetem?

Program do obsługi firm, w przypadku np jedno osobowej działalności w PL będzie tylko jedno stanowisko a więc najwygodniej będzie aby program działał także bez dostępu do internetu. Czyli na lokalnej bazie. W przypadku gdy będzie wiele stanowisk + obsługa sklepów internetowych zewnętrzny serwer mysql.

Ciekawe rozwiązanie podsunąłeś. W przypadku pracy na zewnętrznym serwerze wykorzystam MySQL a w przypadku lokalnej bazy SQLite.

1
Rafał D napisał(a):

/ciach/

Program do obsługi firm, w przypadku np jedno osobowej działalności w PL będzie tylko jedno stanowisko a więc najwygodniej będzie aby program działał także bez dostępu do internetu. Czyli na lokalnej bazie. W przypadku gdy będzie wiele stanowisk + obsługa sklepów internetowych zewnętrzny serwer mysql.

To jest fatalny pomysł.

Ciekawe rozwiązanie podsunąłeś. W przypadku pracy na zewnętrznym serwerze wykorzystam MySQL a w przypadku lokalnej bazy SQLite.

A dlaczego nie serwer aplikacyjny, albo ta sama baza danych na kliencie i serwerze?
Np. tak Firebird działa doskonale i identycznie jako klient/serwer i wersja osadzona.
A to z kolei pozwala mieć dokładnie identyczny kod do obsługi bazy.

Ale jak pisałem wyżej, to jest fatalny pomysł.
Działać to będzie, ale bezpośrednio dostęp do bazy danych z internetu?
Słabo to widzę...

0

title

wloochacz napisał(a):

A dlaczego nie serwer aplikacyjny,

Bo do działania na jakimś PC zawsze musi być odpalony program, PC na którym jest serwer musi mieć zewnętrzne i publicznę IP, łącze musi być szybkie itp. Inny użytkownik pierw musi się połączyć z serwerem na danym PC a ten łączy się z mySQL

wloochacz napisał(a):

albo ta sama baza danych na kliencie i serwerze?

Tak początkowo chciałem ale jak zobaczyłem koszty licencji na serwer MySQL instalowany na PC to zrezygnowałem z tej opcji 5000$ co rok

wloochacz napisał(a):

Działać to będzie, ale bezpośrednio dostęp do bazy danych z internetu?
Słabo to widzę...

Wiem że zagrożeniem jest przechowywanie haseł na komputerze u każdego klienta.

Myślę jeszcze że można by zastosować zamiast SQLite np. MS Access co o tym sądzicie?

0
Rafał D napisał(a):

Bo do działania na jakimś PC zawsze musi być odpalony program, PC na którym jest serwer musi mieć zewnętrzne i publicznę IP, łącze musi być szybkie itp. Inny użytkownik pierw musi się połączyć z serwerem na danym PC a ten łączy się z mySQL

Do samej bazy też musisz mieć szybkie łącze. Co do adresów IP to taka sama sytuacja istnieje przy serwerze aplikacyjnym oraz bazodanowym. Jednak zawsze można przekierować porty. Nie mniej jednak i w jednym i w drugim przypadku będzie trzeba robić tak samo. Z punktu widzenia użytkownika bez znaczenia jest czy mamy serwer aplikacyjny czy bazodanowy. I tak i tak trzeba konfigurować dostęp.

Rafał D napisał(a):

Tak początkowo chciałem ale jak zobaczyłem koszty licencji na serwer MySQL instalowany na PC to zrezygnowałem z tej opcji 5000$ co rok

Coś chyba nie tak patrzyłeś. Ale ja nie raz nie dwa instalowałem MySQL i nic nie płaciłem. Jest on darmowy.

Rafał D napisał(a):

Wiem że zagrożeniem jest przechowywanie haseł na komputerze u każdego klienta.

Żeby to tylko to. Ogólnie to nie jest bezpieczne. W dobie ochrony danych osobowych itp nikt przy zdrowych zmysłach nie wystawia serwera bazodanowego do internetu. Chyba nie chcesz żeby ktoś Ci za pomocą brute-forca dropnął bazę danych, albo zapuścił takie zapytanie, że Ci serwer stanie w miejscu. Serwer aplikacyjny umożliwia lepsze sterowanie uprawnieniami itp. Nic poza tym co Ty sobie zechcesz nie zostanie wykonane. Wystawiając MySQL'a do internetu ryzykujesz włam i zaistnienie sytuacji, że włamywacz zrobi wszystko co mu się podoba jak złamie hasło root'a. Tyczy się to oczywiście każdego serwera bazodanowego.

Rafał D napisał(a):

Myślę jeszcze że można by zastosować zamiast SQLite np. MS Access co o tym sądzicie?

Daj spokój to jeszcze gorsze. Jeśli już nie chcesz SQLite to zainteresuj się np. Firebird'em. Może działać jako pełnoprawny serwer instalowany i udostępniany w sieci. Oraz jako wersja tzw. Embedded gdzie nie wymaga żadnej instalacji, a jedynie wrzucenie paru plików do katalogu programu.

0
Mr.YaHooo napisał(a):
Rafał D napisał(a):
Rafał D napisał(a):

Tak początkowo chciałem ale jak zobaczyłem koszty licencji na serwer MySQL instalowany na PC to zrezygnowałem z tej opcji 5000$ co rok

Coś chyba nie tak patrzyłeś. Ale ja nie raz nie dwa instalowałem MySQL i nic nie płaciłem. Jest on darmowy.

No mistrzowski komentarz po prostu...
To może jak będziesz instalował po raz trzeci to przeczytaj licencję ;-)

No to jeszcze raz:
Q3: As a commercial OEM, ISV or VAR, when should I purchase a commercial license for MySQL software?
A: OEMs, ISVs and VARs that want the benefits of embedding commercial binaries of MySQL software in their commercial applications but do not want to be subject to the GPL and do not want to release the source code for their proprietary applications should purchase a commercial license from Oracle. Purchasing a commercial license means that the GPL does not apply, and a commercial license includes the assurances that distributors typically find in commercial distribution agreements.

Źródło:
https://www.mysql.com/about/legal/licensing/oem/

Nie chcesz rozprowadzać swojej aplikacji na licencji GPL lub otwartym kodem - musisz kupić komercyjną.
Koniec i kropka.

0
wloochacz napisał(a):

No to jeszcze raz:
Q3: As a commercial OEM, ISV or VAR, when should I purchase a commercial license for MySQL software?
A: OEMs, ISVs and VARs that want the benefits of embedding commercial binaries of MySQL software in their commercial applications but do not want to be subject to the GPL and do not want to release the source code for their proprietary applications should purchase a commercial license from Oracle. Purchasing a commercial license means that the GPL does not apply, and a commercial license includes the assurances that distributors typically find in commercial distribution agreements.

A to nie jest tak, że licencja komercyjna jest wymagana tylko jeśli MySQL'a dostarczamy wraz z oprogramowaniem komercyjnym np. na tej samej płytce instalacyjnej albo nawet jako opcja podczas instalacji naszego systemu?

Q6: What is Oracle's commercial license for MySQL software?
A: Oracle offers a commercial license for all of its MySQL software that is embedded in or bundled with another application. The commercial license allows OEMs, ISVs and VARs to distribute commercial binaries of MySQL software with their own commercial software without subjecting that software to the GPL and its requirement to distribute source code.

Z tego co kojarzę wystarczy żeby user sam pobrał i zainstalował MySQL'a oraz biblioteki klienta i już nie trzeba wykupować licencji. Ogólnie to faktycznie ludzie mają wątpliwości kiedy należy wykupywać licencję, a kiedy nie. Kiedyś czytałem o tym trochę i większość ludzi twierdzi tak jak ja. Pytanie tylko czy to prawda. Np tu jest ładnie opisane: https://www.quora.com/Can-I-use-MySQL-Community-edition-in-a-commercial-application-if-I-dont-edit-any-of-its-source-code
One way to work around the GPL is to distribute your software as "MySQL ready" but without the MySQL software. Tell your customer that they're responsible for downloading and installing MySQL themselves. That way you didn't distribute MySQL.

0
Mr.YaHooo napisał(a):

A to nie jest tak, że licencja komercyjna jest wymagana tylko jeśli MySQL'a dostarczamy wraz z oprogramowaniem komercyjnym np. na tej samej płytce instalacyjnej albo nawet jako opcja podczas instalacji naszego systemu?

Nie wiem, nie jestem prawnikiem, ale...

Np tu jest ładnie opisane: https://www.quora.com/Can-I-u[...]t-edit-any-of-its-source-code

Jest napisane w pierwszym zdaniu. No.
Potem kręci tak jak Ty (naprawdę, no offence :-)), a na końcu przyznaje:

"Disclaimer: I am not a lawyer, and this post is not intended to be legal advice. I make no claim or guarantee about its accuracy. Do not take legal advice from random people on the internet, including me. Consult a qualified legal professional before making business decisions."

Także, dla mnie temat z używanie MySQL w komercyjnym programie bez licencji jest śliski...
I dobrze, bo MySQL to straszny badziew (ok, teraz jest lepiej, ale i tak potrafi wrzucić na totalną minę) jest; na szczęście jest doskonały PostgreSQL lub Firebird, ktore nie udają że są "darmowe, ale..."

0

@wloochacz też nie jestem prawnikiem, ale pogdybać można ;) Tak naprawdę nie mam pojęcia jak to jest z licencją i dużo ludzi ma z tym problem. Z tego powodu (oraz innych) odradzałbym stosowanie MySQL'a komukolwiek.

0

Po co używać niepewnego licencyjnie MySQL-a (by oracle) jak jest świetny PostgreSQL - darmowy i opensource.

0

a tak w ogóle to koledze zapewne chodziło o MariaDB a nie MySQL. W odróżnieniu od MySQL, MariaDB jest darmowa i do wykorzystania komercyjnego. W zasadzie prawie każdy hosting który oferuje MySQL tak naprawdę ma na myśli MariaDB (a nawet jak nie to jest ona do wyboru). Oczywiście często można wystawić bazę na porcie zewnętrznym na hostingach chociaż faktycznie należy zadbać chociaż o odpowiednio mocne hasła. Do bazy oferowany jest konektor dla odbc, tak więc piszesz aplikację wykorzystując połączenie odbc a czy baza jest lokalna, czy na serwerze w firmie czy też w internecie to już niech się odbc martwi. Dla Ciebie - jeden czort.

1 użytkowników online, w tym zalogowanych: 0, gości: 1