![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 8.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
tworzę bibiliotekę, którą najprawdopodobniej udostępnię publicznie. Mam jednak pewien dylemat: biblioteka ta będzie korzystać z bazy danych (6 powiązanych ze sobą relacyjnie tabel) i niestety nie wiem jakie rozwiązanie będzie najbardziej optymalne ze względu na dostępność. Zastanawiam się nad Doctrine ORM, jednak gdyby jakiś użytkownik chciał skorzystać z tej biblioteki, a nie posiadał komponentu Doctrine będzie zmuszony do jego instalacji, dublowania konfiguracji bazy danych, tworzenia podwójnych połączeń itp. Dodatkowo biblioteka korzystać będzie z komponentów Symfony, jednak one z zasady konfliktów większyć tworzyć nie będą. Jedynie konfiguracja może wymagać pewnych akrobacji. Czy ktoś z Was miał podobny problem i jest w stanie zasugerować dobre rozwiązanie? Z góry dzięuję za pomoc! |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 44 Dołączył: 18.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Może zamiast WIelkiego molocha jakim jest Doctrine, skożystać z czegoś mniej inwazyjnego, np:
Idiorm ORM => Nakładka na PDO (obsługuje MySQL, SQLite, Firebird, PostgreSQL) Paris Active Record => Nakładka na powyższy Idiorm Bardzo przyjemne w użytkowaniu, nie wymaga instalacji. Ten post edytował maniana 4.06.2013, 11:04:00 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli kodu związanego z obsługą bazy danych nie masz zbyt dużo i są to w miarę proste operacje myślę, że najlepiej jeżeli zdecydujesz się na surowe PDO. Tam gdzie trzeba ręcznie utworzysz sobie obiekty na podstawie danych z bazy (w trywialnych przypadkach samo PDO może to zrobić za Ciebie). Dzięki temu niezależnie od tego z czego korzysta z klient Twojej biblioteki, będzie mógł on ją w miarę bezproblemowo połączyć ze swoim kodem.
Jeżeli zaś kodu wymagającego ORM-a jest więcej, śmiało korzystaj z Doctrine. Na pewno jest to lepsze rozwiązanie w porównaniu do innych ORM-ów, ponieważ: a) Doctrine jest popularny, więc ktoś już i tak może korzystać z niego w swoim projekcie; ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 8.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuję za wszelkie sugestie. Posiadam napisaną bibliotekę pod własny framework, jednak różni się od popularnych, dlatego przed udostępnieniem biblioteki zmuszony jestem dokonać zmian i znaleźć rozwiązania, które pozwolą z niej korzystać wielu osobom. W obecnej wersji operacje na bazie danych wykonuje prosta klasa oparta na pdo. Skłaniam się jednak ku doctrine.
Mam jednak jeszcze jedno pytanie, mianowicie biblioteka przed użyciem będzie wymagać instalacji. Instalacja bedzie przebiegać w interakcji z użytkownikiem za pomocą formularzy, których zawartość wypełni w odpowiedni sposób tabele bazy danych. Tutaj również problem wiąże się z kwestią dostępności- jak wykonać ogólnodostępną stronę (lub kilka stron), które pozwolą na instalację biblioteki. Opcji widzę kilka:
Przyznam, że zależy mi na prawidłowym podejściu i czystym, poprawnym kodzie. Będę wdzięczny za dalsze podpowiedzi! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 50 Dołączył: 28.10.2006 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
A ja proponuję obejście tego w jeszcze inny sposób.
1. Stwórz własny interfejs, który będzie udostępniał wszystkie operacje na danych potrzebne wewnątrz biblioteki. 2. Zaimplementuj klasę, która implementuje ten interfejs i korzysta np. z Doctrine (patrz: adapter). 3. Ciesz się z elastyczności, która pozwala na wykorzystanie połączeń istniejącej aplikacji oraz dodanie nowych źródeł danych (np. XML, NoSQL, zwykłe pliki). To co opisałem to tak pokrótce realizacja wzorca projektowego o nazwie most. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Mam jednak jeszcze jedno pytanie, mianowicie biblioteka przed użyciem będzie wymagać instalacji. Instalacja bedzie przebiegać w interakcji z użytkownikiem za pomocą formularzy, których zawartość wypełni w odpowiedni sposób tabele bazy danych. To ma być biblioteka czy już jakiś gotowy "system"? Ile danych jest potrzebnych do jej poprawnego użycia na początku? Może wystarczy dorzucić jakieś informacje w dokumentacji dot. instalacji? Opisz dokładniej co to za biblioteka oraz co będzie ona wykonywać - wtedy też będziemy mogli łatwiej określić czy użycie Doctrine/komponentów Symfony jest dobrym pomysłem czy nie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 8.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Pomysł z wykorzystaniem wzorców projektowych i wewnętrznego interfejsu może być ciekawym. Zastosowanie dodatkowej warstwy pozwoli (przynajmniej w domyśle) na uniezależnienie od ORM. Wymaga to jednak wielu przemyśleń.
Co to za biblioteka? Będzie to obiektowa nakładka na Allegro Web Api z dodatkowymi funkcjami wspomagającymi korzystanie z tego rozbudowanego Api. Co będzie wykonywać? Generalnie odpowiadać zarówno za połączenie z Allegro jak i zarządzanie danymi zwrotnymi. Konstrukcja biblioteki będzie pozwalać na podpowiedzi IDE zarówno dla klas reprezentujących funkcje API jak i danych zwrotnych, również przez obiekty reprezentowanych. Pozostaje jednak jeszcze pytanie o skrypt instalacyjny... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 50 Dołączył: 28.10.2006 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
Jeśli ma to być biblioteka, to ja pominąłbym kwestię instalacji. To już powinno być zawarte w konkretnej aplikacji, która będzie korzystać z Twojej biblioteki - ponadto jeśli zdecydujesz się na dodanie poziomu abstrakcji, który opisałem wcześniej, to będzie to nawet wskazane, gdyż nie będziesz narzucał konkretnych struktur do przechowywania danych.
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:48 |