Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Michał Płonka Właściciel
Notifero,
programista PHP

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Hej,
chciałbym się Was poradzić w sprawie połączenia Symfony + TSearch2. Chodzi mi mianowicie o kwestię, który ORM (Propel czy Doctrine) lepiej poradzi sobie z wyszukiwaniem oraz wstawianiem danych pod TSearch2? Chciałbym uniknąć jakiegoś obchodzenia problemu i w miarę prosto (jak najprościej) móc pracować. Czy ktoś z Was miał jakieś doświadczenia na tym polu?
Pozdrawiam,
M. Płonka
21.11.2009, 10:00

Roman Piekarski Programista do
wynajęcia

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Michał Płonka:
Hej,
chciałbym się Was poradzić w sprawie połączenia Symfony + TSearch2. Chodzi mi mianowicie o kwestię, który ORM (Propel czy Doctrine) lepiej poradzi sobie z wyszukiwaniem oraz wstawianiem danych pod TSearch2? Chciałbym uniknąć jakiegoś obchodzenia problemu i w miarę prosto (jak najprościej) móc pracować. Czy ktoś z Was miał jakieś doświadczenia na tym polu?
Pozdrawiam,
M. Płonka

Generalnie to robilem full text search ale dla mysql'a. Nie do konca jestem przekonany do mechanizmow wyszukiwania czysto bazodanowych, ale to moze moje zboczenie podyktowane niezlym bajzlem przy deserializowaniu danych co sie wiaze z FTS.
Lepiej abys zdecydowal sie na mechanizm czysto podyktowany wyszukiwaniu w stylu xapian, lucine, sphinx etc.
propel nie wspiera FTS. Trzeba robic custom queries.
21.11.2009, 12:06

Michał Płonka Właściciel
Notifero,
programista PHP

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Dzięki za odpowiedź. Prawdopodobnie wybiorę Doctrine. Pola ts_vector i tak nie będą edytowalne więc odpadnie konieczność zarządzania nimi spod Panelu Administracyjnego. Mam nadzieję, że nie wpakuję się w bagno ;)
21.11.2009, 15:01

Roman Piekarski Programista do
wynajęcia

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Michał Płonka:
Dzięki za odpowiedź. Prawdopodobnie wybiorę Doctrine. Pola ts_vector i tak nie będą edytowalne więc odpadnie konieczność zarządzania nimi spod Panelu Administracyjnego. Mam nadzieję, że nie wpakuję się w bagno ;)

Pewnie sie niewpakujesz o ile dobrze przemyslisz temat i wyeliminujesz wszystkie niestabilne punkty. Moze zacznij od tego wlasnie, czyli odpowiedz sobie na pytanie: co bedzie błędogenne? z czym mogą wystąpić największe problemy?
Następnie dopasuj najlepsze rozwiazanie (nie pierwsze z brzegu) i po sprawie;)
22.11.2009, 00:09

Michał Płonka Właściciel
Notifero,
programista PHP

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Jak na razie Doctrine spisuje się nieźle. Trochę boli mnie brak multi-insertów, ale czytałem, że tego i tak nie wprowadzą. I tu właśnie moje pytanie: czy warto dopisywać sobie taką funkcjonalność? Chodzi mi o:
INSERT INTO x (id) VALUES (1), (2)

Wiadomo, że wtedy odpadnie praca na obiektach, no ale coś za coś. Generalnie mam operację, która wymaga blisko 21500 INSERTów + kilka DELETów oraz UPDATów (na sporej ilości danych - też ok. 20000), a wszystko to zamknięte w transakcji. Na razie nie zauważyłem żadnych problemów z działaniem, ale czy nie bezpieczniej byłoby zrobić to poprzez multi insert? Wówczas mógłbym robić INSERT w paczkach po np. 30 rekordów, co zmniejszyło liczbę INSERTów do nieco ponad 700. Warto?
22.11.2009, 10:59

Adam W. www.fotomody.pl
fotografia mody, IT

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Michał Płonka:
nie zauważyłem żadnych problemów z działaniem, ale czy nie bezpieczniej byłoby zrobić to poprzez multi insert? Wówczas mógłbym robić INSERT w paczkach po np. 30 rekordów, co zmniejszyło liczbę INSERTów do nieco ponad 700. Warto?

jak to tylko liczba do jednej kolumny to zrób multiinsert po 300 rekordów albo i więcej.
22.11.2009, 19:23

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Od siebie dodam, ze jezeli chodzi o wbudowane mechanizmy full search w Doctrine to rozbilem sie na PostGresie - tzn. Doctrine nie wspiera GIN i GIST (choc w dokumentacji sie pochwalili, ze wspiera :), ale zapomnieli w kodzie tego zamiescic ;) - Doctrine 1.1.15
30.11.2009, 14:25

Łukasz Adamczewski Programista Symfony

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

nie ma multiinsertów? a jak za pomocą Doctrine_Menagera pobierasz połączenie i je rozpoczynasz a potem przekazujesz do metody save (w pętli tyle ile trzeba obiektów tworzysz) referencje do tego połączenia i na końcu commitujesz połączenie to Twoim zdaniem wykonają się inserty osobno czy właśnie multiinserty?
wiem że w propelu to działa, w doctrinie również
2.12.2009, 21:03

Michał Płonka Właściciel
Notifero,
programista PHP

Temat: Symfony + TSearch2 (Propel czy Doctrine?)

Łukasz Adamczewski:
przekazujesz do metody save (w pętli tyle ile trzeba obiektów tworzysz) referencje do tego połączenia i na końcu commitujesz

Stwierdzenie o braku multi-insertów opieram na tym:
http://www.doctrine-project.org/blog/doctrine2-batch-p...
Some people seem to be wondering why Doctrine does not use multi-inserts (insert into (...) values (...), (...), (...), ...

CIACH!

These are the reasons why it is not worth the effort to implement an abstraction that performs multi-inserts on mysql and postgresql in an ORM.

Osobiście nie zgadzam się z takim rozumowaniem. Napisałem sobie klasę do wykonywania multi-insertów z wykorzystaniem Doctrine i nie uważam, aby włożony "wysiłek poszedł na marne". Z 25000 zapytań zszedłem do niecałych 800, szybkość wrzucania danych również znacznie się zwiększyła. Moim zdaniem było warto.
3.12.2009, 08:57



Wyślij zaproszenie do