Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Chcę zrobić bazę danych (tu wybiorę MySQL). Dla użytkownika ma być dostępnych wiele funkcji np. przeglądanie, dodawanie, wybieranie, generowanie raportów, wysyłanie na emaila, generowanie wydruków, PDF, kopie zapasowe, podpięcie do strony, żeby użytkownicy mogli się logować itd. itd. Czy muszę to wszystko sam ręcznie zrobić (tu wybrałbym PHP+HTML/CSS/JS)? Czy może jest jakieś darmowe ułatwienie? Potrzeba mi coś w stylu phpMyAdmin, tylko, żebym mógł to sobie sam dostosować. Może jakiś prosty framework (w którym byłyby gotowce ułatwiające tworzenie, typu zadbanie o bezpieczeństwo, gotowe formularze+zapytania, których używa się zawsze)? Albo jest może coś takiego jak Access, tylko online (jakiś darmowy silnik na PHP)?Marcin Kowalczyk edytował(a) ten post dnia 18.08.12 o godzinie 00:13
Dariusz J.

Dariusz J. Administrator sieci
komputerowej

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Co prawda nie jest to darmowy soft , ale korzystałem z http://www.sqlmaestro.com/products/mysql/phpgenerator/ można stworzyć ciekawy szablon do zarzadzania w PHP, posiada sporo opcji sam ustawiasz jakie ci są potrzebne.
Tutaj masz opisane co i jak
http://www.tweaks.pl/php-generator-baz-danych-mysql/
Pozdrawiam

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Dzięki, nawet fajne. Ale jednak nie spełnia moich wymagań (płatne; średnio można dostosować - mi potrzebne bardziej coś gotowego w PHP niż generowanego, albo jakieś klasy/gotowce do wykorzystania). Nie ma nic takiego OpenSource? Przecież przy tworzeniu takiej bazy zawsze robi się to samo... Zostaje napisanie jakiejś klasy tylko dla siebie i potem korzystanie z niej? Myślałem, że już ktoś to kiedyś zrobił ;)
Daniel Podlejski

Daniel Podlejski DBA,
SysAdmin/DevOps,
backend developer

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

1. To temat raczej na grupę o PHP, ewentualnie o językach skryptowych.
2. Jeśli rzeczywiście PHP - http://www.phpframeworks.com/ - nie wynajduj koła na nowo, obejrzyj, wybierz ten który najlepiej spasuje. Proponowałbym jakiś dojrzały, długo istniejący, ale też niezbyt przegadany. Z tego co pamiętam, CakePHP i CodeIgniter były całkiem ok. Symfony - zdecydowanie przegadane.
3. Jeśli chcesz poszerzyć horyzonty - może Django albo Rails?
Marcin Badtke

Marcin Badtke Administrator Baz
Danych, Citibank
Europe plc

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Marcin Kowalczyk:
Chcę zrobić bazę danych (tu wybiorę MySQL).

A dlaczego akurat MySQL ? Ta baza ma ograniczenia jeśli chodzi o zaszycie w niej logiki biznesowej. Podejrzewam, że masz podejście: baza danych będzie miała tabelki z danymi, a resztę skrobnę w php. Może warto rozważyć nieco bardziej zaawansowany motor jak np. Oracle lub SQL Server (są darmowe wersje) i zaszyć jak najwięcej logiki w bazie. Np. security, więzy integralności. Bekap online również całkiem dobrze im wychodzi. A jak bazka i serwis się rozrośnie (czego życzę) to prosto przesiąść się na płatną wersję z dodatkowymi ficzerami. Łatwiej też zarządzać dużymi wolumenami danych np. poprzez partycje.

konto usunięte

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Marcin Badtke:
Marcin Kowalczyk:
Chcę zrobić bazę danych (tu wybiorę MySQL).

A dlaczego akurat MySQL ? Ta baza ma ograniczenia jeśli chodzi o zaszycie w niej logiki biznesowej. Podejrzewam, że masz podejście: baza danych będzie miała tabelki z danymi, a resztę skrobnę w php. Może warto rozważyć nieco bardziej zaawansowany motor jak np. Oracle lub SQL Server (są darmowe wersje) i zaszyć jak najwięcej logiki w bazie. Np. security, więzy integralności. Bekap online również całkiem dobrze im wychodzi. A jak bazka i serwis się rozrośnie (czego życzę) to prosto przesiąść się na płatną wersję z dodatkowymi ficzerami. Łatwiej też zarządzać dużymi wolumenami danych np. poprzez partycje.

a jest to na darmowym hostingu?
MySQL jest wszędzie i jest prosty
Marcin Badtke

Marcin Badtke Administrator Baz
Danych, Citibank
Europe plc

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Przemysław R.:
Marcin Badtke:
Marcin Kowalczyk:
Chcę zrobić bazę danych (tu wybiorę MySQL).

A dlaczego akurat MySQL ? Ta baza ma ograniczenia jeśli chodzi o zaszycie w niej logiki biznesowej. Podejrzewam, że masz podejście: baza danych będzie miała tabelki z danymi, a resztę skrobnę w php. Może warto rozważyć nieco bardziej zaawansowany motor jak np. Oracle lub SQL Server (są darmowe wersje) i zaszyć jak najwięcej logiki w bazie. Np. security, więzy integralności. Bekap online również całkiem dobrze im wychodzi. A jak bazka i serwis się rozrośnie (czego życzę) to prosto przesiąść się na płatną wersję z dodatkowymi ficzerami. Łatwiej też zarządzać dużymi wolumenami danych np. poprzez partycje.

a jest to na darmowym hostingu?
MySQL jest wszędzie i jest prosty

Nie wiem czy Oracle/SQL Server jest na darmowym hostingu, ale zaczynać używać bazy MySQL z myślą o aplikacji to tak jak zaczynać od programowania w basicu. Też jest prosty.

konto usunięte

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Marcin Badtke:
a jest to na darmowym hostingu?
MySQL jest wszędzie i jest prosty

Nie wiem czy Oracle/SQL Server jest na darmowym hostingu, ale zaczynać używać bazy MySQL z myślą o aplikacji to tak jak zaczynać od programowania w basicu. Też jest prosty.

a co jest złego w Basicu? zwłaszcza VB.NET?
Marcin Badtke

Marcin Badtke Administrator Baz
Danych, Citibank
Europe plc

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Miałem na myśli tego starszego. W każdym razie jego rozwój szedł w stronę procedur, obiektów, kompilacji które w innych językach już były. W końcu i basic to osiągnął i umożliwił pisanie bardziej zaawansowanych aplikacji. Ale po co rozwiązanie/aplikacja ma rosnąć razem z językiem skoro można skorzystać z już dojrzałego języka ?

Przenosząc analogię na bazy danych: po co wykorzystywać prostą bazę danych i czekać na moment aż aplikacji przestanie wystarczać skoro można od razu wykorzystać zaawansowany produkt, a póki co, nie wykorzystywać wszystkich jego ficzerów ? Ale gdy ficzery będą potrzebne lub nawet niezbędne to już będą czekały na wykorzystanie.

konto usunięte

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Marcin Badtke:
Przenosząc analogię na bazy danych: po co wykorzystywać prostą bazę danych i czekać na moment aż aplikacji przestanie wystarczać skoro można od razu wykorzystać zaawansowany produkt, a póki co, nie wykorzystywać wszystkich jego ficzerów ? Ale gdy ficzery będą potrzebne lub nawet niezbędne to już będą czekały na wykorzystanie.

właśnie dochodzimy do sedna
większość dostępnych hostingów oferuje PHP + MySQL i to w nie najnowszej wersji, dalej jest kwestia tego że frameworki wręcz oduczają programistów bezpośredniego kontaktu z bazą danych na rzecz ORM-mów

idźmy dalej, nawet te ficzery które ma MySQL są black magic dla większości programistów PHP, bo który zrobi procedurę po stronie SQL-a, skoro może to samo zrobić w PHP - to że wolne to pryszcz, wynajmuje się szybszy hosting

ja tylko pokazuję obecny stan, nie to żebym się zgadzał z tym faktem
Daniel Podlejski

Daniel Podlejski DBA,
SysAdmin/DevOps,
backend developer

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Marcin Badtke:
zaszycie w niej logiki biznesowej.
jak najwięcej logiki w bazie.

Baza danych nie jest miejscem na logikę biznesową. Od logiki biznesowej jest serwer aplikacji, middleware czy jak tam się to nazwie. Baza danych służy do przechowywania danych, pilnowania ich spójności, pilnowanie uprawnień. Pchanie logiki biznesowej do bazy prędzej czy później boli.
Marcin Badtke

Marcin Badtke Administrator Baz
Danych, Citibank
Europe plc

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Pozwolę się nie zgodzić z tą tezą. Mało tego uważam dokładnie na odwrót. Baza danych, a ściślej jej motor jest skomplikowanym kawałkiem oprogramowania o ogromnych możliwościach. Na dodatek kosztownym. Jako taki będzie pielęgnowany i rozwijany przez długi czas. Niestety nie można tego powiedzieć o architekturze aplikacji i językach programowania. Mody na nie zmieniają się znacznie częściej. W każdym razie uważam, że wykorzystanie ficzerów bazy do obsługi logiki biznesowej, a nie pisanie ich od nowa, ma zdecydowanie korzystniejszy wpływ na długość życia aplikacji, a często na jej wydajność i skalowalność. Gdy najważniejsza część logiki będzie w bazie to nie ma znaczenia czym i w jakim języku się do niej podłączymy. Gdy w bazie będą tylko dane to każda aplikacja będzie musiała mieć tę logikę w sobie. Np. aplikacja pracująca na jboss dla pracowników biurowych, aplikacja na smartfony dla pracowników 'w polu', aplikacja dla klientów z intenetu, itp. Np. kiedyś modne były aplikacje klient-serwer i język c. Teraz trzy warstwy i java lub jeszcze nowszy wynalazek. Inny przykład: zrobiliśmy coś w php, a z jakichś powodów przesiadamy się na jsp lub asp. Gdy logika biznesowa jest w bazie co za problem przepisać aplikację ?
Daniel Podlejski

Daniel Podlejski DBA,
SysAdmin/DevOps,
backend developer

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Oho. Widać, że kolega reprezentuje IT dużego korpo.

Dobra, powyzłośliwiam się odrobinę, mam nadzieję, że nikt się nie pogniewa:
- "Jako taki będzie pielęgnowany i rozwijany przez długi czas" - ile to jest długi czas? Jak w praktyce wyglądają terminy End of Line dla Oracle i MSSQLa? Jak wygląda migracja takiej logiki po stronie baz danych do nowszej wersji?
- "Niestety nie można tego powiedzieć o architekturze aplikacji i językach programowania." - bzdura, trudna do skomentowania.
- "zdecydowanie korzystniejszy wpływ na długość życia aplikacji" - i żyją po różnych korporacjach takie potworki rodem z zeszłego wieku, trudne i drogie do modernizacji, więc się przy nich rzeźbi w excelu i accesie, żeby nadążały za zmianami w świecie zewnętrznym. Długi czas życia aplikacji nie zawsze jest zaletą, czasem ważniejsza jest łatwość modyfikacji i dostosowania do bieżących potrzeb. Owszem, są sytuacje kiedy długość życia aplikacji się liczy - ale wtedy przenoszenie logiki do bazy nie jest jedynym rozwiązaniem, ani nawet najlepszym rozwiązaniem.
- "wydajność i skalowalność" - baza danych jest zdecydowanie najtrudniejszym i najdroższym do skalowania elementem architektury, szczególnie baza komercyjna, więc ten korzystny wpływ gryzie się ze zdrowym rozsądkiem.
- "Gdy w bazie będą tylko dane to każda aplikacja będzie musiała mieć tę logikę w sobie" - cudne, kolega albo nie wie co to jest warstwa logiki biznesowej, bo zatrzymał się w rozwoju w latach 90 zeszłego wieku, albo z racji specjalizacji celowo naciąga rzeczywistość do tezy. Otóż po to pisze się middleware, żeby interfejs webowy, klient mobilny i aplikacja desktopowa korzystały z tego samego "środka". To naprawdę jest nie tylko moda, ale rozwój technologii.

I na koniec - trochę nie na miejscu jest proponowanie człowiekowi pytającemu jak złożyć sobie rower do jazdy po mieście z części dostępnych w sklepie, złożenie sobie z części Jeepa Explorera, bo więcej się przy tym nauczy.Daniel Podlejski edytował(a) ten post dnia 22.08.12 o godzinie 20:01
Paweł B.

Paweł B. architekt baz danych
/ SQL Developer /BI
Developer

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Daniel Podlejski:
Marcin Badtke:
zaszycie w niej logiki biznesowej.
jak najwięcej logiki w bazie.

Baza danych nie jest miejscem na logikę biznesową. Od logiki biznesowej jest serwer aplikacji, middleware czy jak tam się to nazwie. Baza danych służy do przechowywania danych, pilnowania ich spójności, pilnowanie uprawnień. Pchanie logiki biznesowej do bazy prędzej czy później boli.
A dokładnie, to jakie są zagrożenia? Bo wielokrotnie spotkałem się z problemami aplikacji z całą logiką zaszytą w kodzie PHP czy Java: koszmarna wydajność, kulejąca obsługa transakcji, osierocone rekordy...
Daniel Podlejski

Daniel Podlejski DBA,
SysAdmin/DevOps,
backend developer

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Paweł B.:
A dokładnie, to jakie są zagrożenia? Bo wielokrotnie spotkałem się z problemami aplikacji z całą logiką zaszytą w kodzie PHP czy Java: koszmarna wydajność, kulejąca obsługa transakcji, osierocone rekordy...

A ja się spotkałem z tym wszystkim przy aplikacjach z logiką po stronie silnika bazodanowego, i co z tego wynika?

Zacznijmy od tego, czym jest, a czym nie jest, logika biznesowa - dla mnie to odwzorowanie procesów przeprowadzanych w firmie na aplikację. Przykład - proces obsługi zamówienia w sklepie internetowym.
Więzy integralności czy też jakieś trigery pilnujące spójności danych nie są logiką biznesową.

Generalnie i bardzo w skrócie logika biznesowa po stronie bezy danych:
- mało elastyczna
- kosztowna w utrzymaniu
- kosztowna i trudna w skalowaniu

A jak ktoś chce sobie wyrobić własne zdanie, to polecam:
http://www.codeproject.com/Articles/10746/Dude-where-s...

konto usunięte

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

A ja bym nie przesadzał z tak kategorycznymi twierdzeniami. Są projekty, gdzie trzymanie logiki w bazie ma sens i takie, gdzie to sensu nie ma. Widziałem system do obsługi warsztatów samochodowych - logika, po definicje formatek - wszystko w bazie danych. Działa, ludzie sobie chwalą. Jeżeli system ma się kontaktować z zewnętrznymi zasobami, całość - chyba wolałbym jednak mieć to jakoś inaczej rozwiązane...
Marcin Badtke:
Pozwolę się nie zgodzić z tą tezą. Mało tego uważam dokładnie na odwrót. Baza danych, a ściślej jej motor jest skomplikowanym kawałkiem oprogramowania o ogromnych możliwościach. Na dodatek kosztownym.

Chciałbym zauważyć, że MySQL to też baza danych.
Jako taki będzie pielęgnowany i rozwijany przez długi czas. Niestety nie można tego powiedzieć o architekturze aplikacji i językach programowania.

Kiedyś byłem na szkoleniu z jee. Pan narysował architekturę - położył rękę na obrazku bazy danych i powiedział: "Zakładamy, że to jest głupie". Chodzi o to, że dla programisty - to serwer aplikacji jest utrzymywany, pielęgnowany, a na bazie danych - czasem indeks trzeba dodać i po temacie. Testy jednostkowe dotyczą logiki biznesowej, która ma być na serwerze aplikacji. Dostęp do bazy danych się mockuje, żeby było szybciej i bez problemów.
Każdy ma swoją perspektywę - twierdzenie, że nasza jest lepsza, "bo tak"... słabe trochę jest.
Mody na nie zmieniają się znacznie częściej. W każdym razie uważam, że wykorzystanie ficzerów bazy do obsługi logiki biznesowej, a nie pisanie ich od nowa, ma zdecydowanie korzystniejszy wpływ na długość życia aplikacji, a często na jej wydajność i skalowalność. Gdy najważniejsza część logiki będzie w bazie to nie ma znaczenia czym i w jakim języku się do niej podłączymy. Gdy w bazie będą tylko dane to każda aplikacja będzie musiała mieć tę logikę w sobie.

Daniel mówił o serwerze aplikacji. Nikt nie tyka bazy danych bezpośrednio - tylko przez serwer aplikacji... W ten sposób można zmienić bazę danych. Nie jest się uwiązanym do SQLa, tylko udostępnia się interfejs, który można zaimplementować jak się chce.
Z bazami danych jest parę problemów. Ciężko je rozwiązać, jeżeli wszyscy korzystają z interfejsu tej konkretnej bazy danych. Jeżeli np. mam kilka webservice'ów - część rzeczy mogę przenieść np. do nosql. Generalnie - wzrost przepustowości pociąga za sobą wzrost czasu dostępu, bo ten cały ruch trzeba obsłużyć, ale w ten sposób łatwiej zarządzać tym całym kramem, takie interfejsy ładnie się cache'ują. Świat idzie mocno do przodu - trzymanie logiki w bazie danych ogranicza skalowalność systemu. No i takiego JBossa można zamienić na Websphere, albo Weblogica - jeden w jeden, jak się używa standardu. Przeniesienie logiki z takiego PostgreSQLa na Oracle? Start z wersją darmowa? Ta ma ograniczenie na RAM - 2GB? Tyle to ja w domu - do testów używam... Kolejna sprawa - sensowne oprogramowanie logiki, po stronie bazy danych to są narzędzia, które kosztują. Serwer aplikacji - mam za darmo, eclipse też... Dzięki temu masa osób używa - jak mam problem - na 99% już ktoś go miał i dawno rozwiązał. Jest Microsoft, ze swoimi narzędziami - system, silnik - trzeba zapłacić. Tutoriale w sieci są na takim poziomie, że nawet włosy opadają - jak młode wiśnie. Jak się chce coś konkretnie - szkolenia, prowadzone przez certyfikowanych trenerów, za "certyfikowane" pieniądze. Tak trochę koloryzuję, ale... tak to wygląda z drugiej strony barykady. Ja na niej siedzę okrakiem i się rozglądam - bo z obu stron lecą argumenty i z każdej strony oberwać można.
Np. aplikacja pracująca na jboss dla pracowników biurowych, aplikacja na smartfony dla pracowników 'w polu', aplikacja dla
klientów z intenetu, itp. Np. kiedyś modne były aplikacje klient-serwer i język c. Teraz trzy warstwy i java lub jeszcze nowszy wynalazek. Inny przykład: zrobiliśmy coś w php, a z jakichś powodów przesiadamy się na jsp lub asp. Gdy logika biznesowa jest w bazie co za problem przepisać aplikację ?

Dziś jest coś takiego jak ESB - jest wiele aplikacji, które udostępniają sobie wzajemnie interfejsy. Co za różnica co to za interfejsy i w czym to coś jest napisane? Za zgranie tego wszystkiego odpowiada ESB + ktoś, kto to skonfiguruje.
Paweł B.

Paweł B. architekt baz danych
/ SQL Developer /BI
Developer

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Oddzielmy warstwę prezentacji, bo do tego służy właśnie serwer aplikacji. Ale kiedy w przykładowym sklepie internetowym klient kliknie "generuj zamówienie" to moim zdaniem bez sensu jest ściągać zawartość koszyka na serwer aplikacji, sumować, sprawdzać dostępność itp. Dużo prościej jest uruchomić pojedynczą procedurę na bazie danych która wykona wszystkie operacje na rekordach i zwróci pojedynczy lub kilka rekordsetów.
To jest ta logika, którą warto zaszywać w bazie danych. I z takich klocków bazodanowych interfejsowanych serwerem aplikacji (lub aplikacją desktopową) można składać wszystkie procesy w firmie.

Swoją drogą, czy definicje formatek są składowane w plikach ini/xml czy w bazie danych to jest bez różnicy.

konto usunięte

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Chciałbym zobaczyć facebooka którego logika leży cała w SQL'u ;)
(cała bo moim zdaniem cięcie logiki na kawałki i rozpraszanie ich po zupełnych różnych systemach o różnym przeznaczeniu, jest z punktu widzenia utrzymania koszmarem).
Marcin Badtke

Marcin Badtke Administrator Baz
Danych, Citibank
Europe plc

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Łukasz M.:
Chciałbym zobaczyć facebooka którego logika leży cała w SQL'u ;)
(cała bo moim zdaniem cięcie logiki na kawałki i rozpraszanie ich po zupełnych różnych systemach o różnym przeznaczeniu, jest z punktu widzenia utrzymania koszmarem).
Uf, ale się dyskusja zrobiła :-)
W FB pokutuje właśnie podejście 'zróbmy coś szybko, najlepiej za darmo, a później się zobaczy'. Próbowali się przesiąść na Oracle, ale wydajnościowo nie dali rady. Te ich bazy są tak wytjunowane, że trzeba się zdrowo nagłowić nad przesiadką. Jedni mogą powiedzieć: proszę darmowy MySQL a daje radę i to bez logiki w bazie, a Oracle nie dał rady. Drudzy mogą powiedzieć: gdyby zaczęli od razu na Oracle to teraz nie musieliby się przesiadać.

Co do wcześniejszych wypowiedzi to Michał reprezentuje głos rozsądku. Pewnie tak jest - nie można generalizować, racja jest gdzieś po środku. Z drugiej strony twórcy aplikacji potrafią wyszukać kawałki kodu w sieci, pozlepiać to, nauczyć się nowego języka, nowego serwera aplikacji, itd. A dlaczego nie chcą się uczyć co potrafi motor baz danych ? Przecież to baza jest najważniejsza ;-)

konto usunięte

Temat: System zarządzania bazą danych - jakiś silnik, skrypt,...

Kocham takie dyskusje. Każdy zaciekle broni tego co zna a i tak się nie przekonacie :)

Z trzeciej zupełnie strony dodam, że Skype używa Postgresa w tle. Wszystko jest w procedurach napisanych w PL/pgSQL, ze względu na użycie PL/proxy (czyli mechanizmu do ładnego rozrzucenia danych na różne serwery, tzw. sharding). Jest sobie API całe w postaci procedur… no i działa.



Wyślij zaproszenie do