[MySQL/XML] Która odpowiedniejsza?

0

Witam serdecznie,
Zajmujemy się z grupą tworzeniem sporej platformy.. nazwijmy ja - publicystycznej. Jako, że jest to nasze pierwsze większe przedsięwzięcie tego typu (serwis w php wymagający szybkiej i efektywnej bazy danych), zastanawiamy się czy nie wykorzystać do tego plików XML. Dlatego właśnie chciałbym zasięgnąć opinii fachowców - co lepsze do gromadzenia danych tego typu? XML czy MySQL?

0

Zdecydowanie cokolwiek, co mozna nazwac baza danych. XML baza nie jest i nie bedzie, a o zaletach baz danych mozesz przeczytac w Internecie. MySQL jest baza w porzadku pod warunkiem, ze nie masz specjalnych wymagan co do bazy typu rozbudowane transakcje, wielkosc bazy, super wydajnosc itp.

0

Co rozumiesz przez stwierdzenie, iż XML nie jest formatem baz danych? Jego struktura jak i możliwości jak najbardziej to umożliwiają, więc nie rozumiem Twych przekonań co do XML jako db. Natomiast co do MySQL - gdy jakiś czas temu konsultowałem się z doświadczonymi w tych sprawach ludźmi, odradzali mi to wyjście, gdyż jest podobno zbyt powolne i dobre dla niewielkich baz, a przynajmniej nie tak dużych, jakie nam będą potrzebne.

0

Formatem baz danych - ok. Ale nie baza. Co innego silnik bazy danych, co innego plik bazy danych. Ja nie twierdze, ze MySQL jest dobry, bo przy duzych rozwiazaniach rzeczywiscie wysiada. Ale jezeli MySQL wysiada to XML tym bardziej, bo nawet nie ma porownania jesli chodzi o wydajnosc. XML jest dobry, jezeli trzeba miec dane pod reka bez instalowania roznych aplikacji, typu serwer. Napisz co rozumiesz przez szybkie i efektywne rozwiazanie oraz ile to jest dla was 'duza' baza.

Oprocz MySQL istnieja inne, bardziej wydajne bazy, jak chocby darmowy PostgreSQL.

0

Fakt, małą gafę walnąłem, uproszczając nieco z tym XMLem. Powiem tak - Potrzebujemy bazy o wydajności i efektywności podobnej do tej z digg.com. Nasz serwis ma działać nieco podobnie pod względem technicznym [komentarze,licznik klików, baza felietonów userów oraz baza samych userów]. Czy zatem PostgreSQL da radę uciągnąć przedsięwzięcie o zbliżonej skali?

0

Podaj troche wiecej szczegolow technicznych, typu ile tych userow, ile felietonow, ile mniej wiecej baza zajmowac bedzie. Jak czesto i jak duzo uzytkownikow bedzie z niej korzystac, itp. Generalnie dane techniczne dotyczace ilosci danych, czasu i czestosci dostepu do bazy, itp, bo rozne wielkosci roznie sa oceniane (typu 100MB to dla niektorych duzo). Nie za bardzo mam czas, jak pewnie wiekszosc, zeby sie zaglebiac w to jak dziala nieznany mi digg.com.

0

Podałem digg.com jako miernik czegoś naprawdę ogromnego (bazy danych podejrzewam liczone już w gigabajtach), a że jest powszechnie znany, myślałem, że będzie dobrym przykładem. Anyway, póki co szukam czegoś, co udźwignie bazę danych o wadze ok. gigabajta, ale i nie zachłystnie się, gdy będzie tego trochę więcej ;).

0

Na to sobie popatrz
http://corpo.mandriva.com/xwiki/bin/download/Main/Technology/mysql-performance-whitepaper.pdf

Natomiast jesli chodzi o taki rozmiar to mysle, ze XML bedzie kompletna klapa, bo jednak serwery bazodanowe powstaly po to, zeby gwarantowac najlepsze mozliwe rozwiazania, w sensie szybkosci i wydajnosc. Plik XML 1GB nie wydaje mi sie byc porownywalnym z jakakolwiek baza danych. Oczywiscie mozna przyspieszac wyszukiwanie w pliku nawet, ale to juz bedzie wlasna implementacja silnika bazy i w przypadku mozliwosci uzycia dostepnych na rynku mija sie z celem. Fakt mozna, bo nie zawsze instalacja serwera jest mozliwa, ale jezeli jest to bym sie nie zastanawial.

Poszukaj sobie jeszcze informacji o PostgreSQL, bo z tego co wiem jest nieco wydajniejszy od MySQL, chyba, ze stac was na kombajny typu Oracle czy MSSQL.

0

Dzięki Ci wielkie za radę, sporo nam pomogłeś ;). Zastanawiać się zatem będziemy nad serwerem bazodanowym w takim razie. Dzięki raz jeszcze, temat do zamknięcia, chyba, że ktoś jeszcze chciałby zabrać w niniejszej sprawie głos ;p.

0

Jeszcze jeden wariant wart przemyślenia po zapoznaniu się z poniższym cytatem ...

Deutsche Presse-Agentur GmbH
„System, który zaprojektowaliśmy przechowuje wiadomości wysyłane przez dziennikarzy w bazie danych Firebird. Zainstalowaliśmy serwery w naszych trzech głównych ośrodkach: Hamburg, Berlin i Frankfurt. Każdy z nich wykorzystywany jest przez dziennikarzy z danego regionu. Jest ich od 120 do 150 na jeden serwer. Nasi zagraniczni korespondenci używają serwera specjalnie dla nich uruchomionego. Łączą się do niego przez Internet z użyciem VPN. Wielu z naszych dziennikarzy ma laptopy, na których zainstalowany jest Firebird do obsługi lokalnej bazy danych. Ci użytkownicy mogą również połączyć się przez modem, telefon lub VPN do każdego z głównych serwerów w celu wymiany dokumentów. Przełączanie pomiędzy bazą lokalną i zdalną jest w pełni automatyczne. Na każdym z czterech serwerów codziennie składowanych jest około 7 000 nowych dokumentów z częstotliwością od 3 do 5 dokumentów na sekundę. Każda zmiana w bazie danych jest transmitowana do wszystkich maszyn klienckich, które to z kolei podejmują określone akcje takie jak na przykład odświeżenie widoku. Głównym problemem jest brak indeksowania pól typu BLOB, co pozwoliłoby nam na szybsze wyszukiwanie tekstu.
Firebird jest prosty w instalacji i bardzo efektywny. Można zainstalować go równie dobrze na głównym serwerze jak i pojedynczych laptopach nie tracąc nic na funkcjonalności. Nie wymaga w zasadzie żadnej administracji. Doskonałe wsparcie zarówno na grupach dyskusyjnych jak i wielu serwisach internetowych (IBPhoenix).“

0

Ano, jest jeszcze pare darmowych rozwiazan, jak chocby wspomniany Firebird, SQLite, itp. Generalnie chodzilo mi o to, ze wydajnoscia obsluga XML nie dorowna bazie danych bez specjalnych kombinacji - czyli de facto wlasnego silnika bazodanowego.

0

Zastanawiam się jednak czy owe "specjalne kombinacje" nie były by warte świeczki.. Może jednak lepiej spróbować napisać taki silniczek oparty właśnie na XML?

0

Przepraszam, że tak jeden post pod drugim (jeszcze się nie zarejestrowałem), jednak chciałem tylko powiedzieć, że znalazłem całkiem ciekawy kompromis, aby oprzeć bazę na XMLu, a jednak nie pisać jej osobiście, co zjadłoby bezpowrotnie cenny czas na tworzenie serwisu - zwie się on XQuantum i jest serwerem baz danych opartym na plikach XML, stworzonym właśnie z myślą o dużych bazach. Czy ktoś z forum zna XQuantum'a z praktyki i może powiedzieć nieco więcej na jego temat poza sloganami z jego strony głównej? ;)

0

Nie znam, wiec na temat tego konkretnego sie nie wypowiem. Ale skoro tak wam zalezy na odpowiednim serwerze, to napiszcie sobie testy. Np. stworzcie przykladowa baze z tabelami, wypelnijcie danymi do np. 2GB i testujcie predkosci i czasy dostepu dla roznej ilosci klientow na poszczegolnych serwerach. Bedziecie mieli pojecie czy w ogole rzad wielkosci (np. szybkosci) jest w porzadku.

0

to ja zapytam wprost: co takiego ma w sobie XML, czego nie ma dobry silnik bazodanowy? (pomijamy trzymanie konfiguracji programu lub "bazy" nie przekraczające kilku MB)

Jak wyobrażasz sobie wyszukiwanie czegokolwiek w pliku XML? Przecież to zwykły plik txt, w dodatku z kupą nadmiarowego textu. Nody nie są tam zapisywane ani alfabetycznie ani w jakiejś określonej kolejności (chodzi mi o dodawanie danych), nie ma indeksów, nie ma spójności danych, nie ma procedur, wyzwalaczy, widoków, ba nie ma nawet zapytań - jak pobierzesz dane, które znajdują się w więcej niż jednym pliku??

Praktycznie cały "silnik" trzeba by pisać od nowa a i wtedy na 99% szybszy by był, gdyby działał na własnym formacie.

MySQL nadaje się na bazę dla strony, forum, sklep internetowy, aplikację z bazą do kilku GB. Jego jedyną zaletą jest mnogość darmowych serwerów, ale te zazwyczaj nie udostępniają więcej jak kilkadziesiąt MB na bazę. Jeśli myślicie o darmowym rozwiązaniu to PostgreSQL, Oracle XE, MSSQL Serwer Express, DB2 Express-C. Jednak darmowe wersje komercyjnych silników mają ograniczenia, nad którymi musielibyście się zastanowić. PostgreSQL jest natomiast najbardziej zaawansowaną (naprawdę) darmową bazą danych z dużymi możliwościami. Oczywiście nie dogoni MsSQL, Oracla czy DB2.

0

Osobiście uważam, że jeśli XMLowi czegoś brakuje, można w jego pliku to zaimplementować ;p. Ale nvm, po prostu lubiłem używać go jako bazę danych w swoim sofcie, więc pomyślałem, ze nie głupie byłoby użycie go do celów sieciowych. A zatem ok, faktycznie przekonaliście mnie, że PostgreSQL może faktycznie być tym, czego poszukujemy przynajmniej na początku. Czeka nas zatem nieco stresstestów, żeby ewentualnie w porę go wykluczyć i zacząć rozglądać się za czymś hmm.. większym ;). Mam jednak nadzieję, że się nada. Dzięki raz jeszcze za garść dobrych rad.

0
BlackSheep napisał(a)

Osobiście uważam, że jeśli XMLowi czegoś brakuje, można w jego pliku to zaimplementować ;p

Zaimplementuj indeksy, w jednym pliku bedziesz mial dane a w drugim posortowane klucze z odniesieniami do... linijek, numerow "nodow" (tak to sie nazywa?)? :P

XML sie nie nadaje do tego o czym mowisz, to nawet nie jest baza danych, to format pliku i do dzialania wymaga dopiero jakiegos parsera (jak kazdy inny plik -> z .jpg tez mozesz zrobic baze :P). Jak ktos juz wspomnial to zwyczajny plik tekstowy z duzym narzutem, ktorego trzeba parsowac znak po znaku (te wszystkie < > & itp, ba nawet zapisujac inta trzeba go konwertowac na tekst :/) i ktorego przetwarza sie sekwencyjnie (jak lista jednokierunkowa). A, i powodzenia jak bedziesz chcial cos edytowac w wazacym 1GB XMLu ;)

0
Wolverine napisał(a)

A, i powodzenia jak bedziesz chcial cos edytowac w wazacym 1GB XMLu ;)

W zwiazku z narzutami jak slusznie wspomnial Misiekd plik bedzie mial raczej 2GB... ;)

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