W jaki sposób najlepiej jest przechowywać artykuły?


(sajmon17099) #1

Witam. W mojej stronie można już się logować i rejestrować, i teraz chcę móc dodać opcję dodawania artykułów. Samo to nie powinno być problemem. Problemem jest jednak to, w jaki sposób artykuły powinny być przechowywane.

Ogólnie cel jest jeden - jedna szablonowa, pusta strona ładująca potrzebne dane z “czegoś”, by nie robić masy podstron. I teraz nie mam pewności, czym te “coś” ma być.

Zastanawiałem się nad przetrzymywaniem całych artykułów w bazie danych MySQL, jednakże z tego co przeczytałem to nie jest to dobry pomysł. Baza może stać się super duża, i jej działanie będzie spowolnione. Myślę też nad zapisywaniem artykułów do osobnych plików i tylko linkowaniem ich w bazie, ale też nie mam pewności jak to zrobić. Nie wiem np. czy te artykuły przetrzymywać w jakiejś zmiennej w pliku .php czy żeby były w zwykłym pliku tekstowym i były wybierane przez file_get_contents…

Pomożecie mi z wyborem dobrej metody przechowywania artykułów? Ogólnie może na razie na mojej stronie nie będzie dużo czytelników, jednakże chciałbym ją przygotować tak, by mogła przetrzymać bardzo dużą ilość artykułów, w końcu to użytkownicy w większości będą je dodawać. I nie, nie chcę korzystać z jakiś szablonów czy CMS - chcę zrobić wszystko sam. Chcę się czegoś nauczyć przy robieniu tej strony.


(Tatoo) #2

możesz zastosować bazę danych w oparciu MYSQL albo tekstową czyli plik, taka jak używa kilka CMS (których nie lubisz)


(sajmon17099) #3

Nie uważam to za dobrą odpowiedź, bo o tym pisałem w pytaniu. Nie wiem co wybrać. Czytałem wiele, ale nie ma jednoznacznej odpowiedzi na ten temat. Jedyne co na razie wiem to to, że na dłuższą metę przetrzymywanie artykułów w bazie danych nie jest raczej dobrym pomysłem, bo ta baza w przyszłości może stać się super duża, będzie wolniej działać i backup może być przez to trudniejszy (z powodu tego dużego rozmiaru).

I nie, nie mówiłem, że nie lubię CMSów, po prostu chcę to zrobić sam.


(ziggurad) #4

Baza! baza! baza! Żadnych plików tekstowych.


(sajmon17099) #5

Ale co jeśli takich artykułów będzie z 10 000? Zapewne nigdy do tego nie dojdzie, ale mam jednak nadzieję że strona będzie popularna, i wolę się zabezpieczyć na przyszłość.


(ziggurad) #6

No nie jest problem, MySQL czy inna baza łyknie Ci to bez problemu. Aktualnie baza przy której pracuję ma ponad 1TB i MySQL daje radę :wink:


(sajmon17099) #7

A co jeśli chciałbym zrobić jej pełnego backupa? Za pierwszym razem byłoby tak samo jak z osobnymi plikami, lecz za drugim w przypadku osobnych plików te nie zmienione nie byłyby kopiowane, co oszczędziłoby mi wiele transferu, a w przypadku bazy danych cała baza jest kopiowana. Raczej. Nie mam do końca pewności, bo jeśli chodzi o bazy danych MySQL to jeszcze się ich uczę.

Poza tym, jakby to wszystko było w bazie, to jak wyglądałby link do takiego artykułu? I lepiej jest zrobić linki do artykułów takie jak na YouTube - przypadkowe znaki, czy może spróbować je zamienić na te “przyjazne”?


(ziggurad) #8

Na początku Twoja baza będzie tak mała że nie musisz się przejmować takimi problemami jak wielkość backupu. Robienie kopi całej bazy danych ma tą zaletę że wszystkie dane masz spójne ze sobą. Jeśli będziesz chciał wrzucić wersję z dnia poprzedniego (bo np wyczyściłeś sobie wszystko) masz wszystkie dane, np użytkowników, z jakimiś artykułami i ich komentarzami.

Przechowywanie takich danych w plikach to przestarzałe podejście, nikt tak nie robi. W plikach możesz trzymać jakąś konfigurację co najwyżej.

Co do tego jak będą miały wyglądać linki - nie ma to nic wspólnego z tym jak będziesz przechowywał dane. Link zależny od tego jak skonfigurujesz sobie serwer (np apache/nginx) + jak Twój kod będzie to ogarniał.

Według mnie najlepszy adres to coś w stylu:
domena.pl/artykuły/Czytaj-forum-dobrychprogramow-2123
można też:
domena.pl/artykuły/2123/Czytaj-forum-dobrychprogramow
można też dorzucić gdzieś datę :wink:


(sajmon17099) #9

Dzięki, no to wiem już co powinienem wybrać. Mam jeszcze jedno, ostatnie pytanie - jak sobie poradzić z sytuacją, gdy jakiś użytkownik wrzuci jakieś zdjęcie na stronę żeby je dodać do artykułu? Z tego co przeczytałem nie poleca się przechowywania zdjęć w bazie danych.

Jeśli ciekawi cię, skąd biorę te informacje to biorę je m.in ze stackoverflow, np. te o przechowywaniu zdjęć wziąłem stąd: http://stackoverflow.com/questions/6472233/can-i-store-images-in-mysql


(ziggurad) #10

No i to dobre rozwiązanie. Plik trzymasz na serwerze a w bazie jedynie jakieś odniesienie do niego, na przykład nazwę pliku.

Stackoverflow to dobre źródło :wink:


(sajmon17099) #11

No to zabieram się do robienia strony :smile:
Jeszcze raz - serdecznie dziękuję za odpowiedzi. Naprawdę mi się przydały.