Jak przechowywać długie teksty - db czy plik?

Hej,
chcę zbudować aplikację, która pozwala (m.in) na operacje CRUD na tekstach piosenek (z chwytami na gitarę). Zastanawiam się jak najlepiej będzie je przechowywać - jako zwykłe pole text w bazie danych, czy może jako osobny plik, a w bazie pod song.text będzie ścieżka do pliku?
Co będzie działało efektywniej? (tak, żeby użytkownik mógł dodawać teksty, edytować. itd.) Zależy mi na łatwym wyświetlaniu tekstu - każda linijka osobno (czyli żeby widok odczytywał “\n” poprawnie - tu chyba lepiej plik?).

Mam nadzieję, że w miarę sensownie sformułowałem moje myśli. Z góry dzięki za odp.

Baza

2 Likes

Baza!
Alternatywą są opisy w pliku, ale wtedy musisz samodzielnie oprogramować wyszukiwanie odpowiedniej treści.
Czyż nie jest prościej:

Rails g model Description text_for_display:text

rails/rake db:migrate
rails c

Description.create(text_for_display: "to jest długi tekst występujący na mojej stronie...")

i później pisać:
<%= Description.find(id_szukanego_tekstu).text_for_display %>
?

Baza. W activerecordzie dla mysql’a, typ text standardowo może przyjąć 65k znaków, który możesz spokojnie powiększyć do 16mln znaków. Znak nowej linii też można ogarnąć :wink:

Baza, ale nie dlatego ze ‘w MySQL mozna 65k znakow’, ale bardziej dlatego, ze tu jednak masz do czynienia z ustrukturyzowanymi danymi. Zastanowilbym sie, co tutaj stanowi ‘jednostke’ - piszesz, ze tekst tworza linie, ale zauwaz, ze akordy zmieniaja sie pewnie co pół / cały takt. Zakladam, ze bez sensu jest opisywanie ich na zasadzie ‘po 4.5 sekundzie zmieniam z C na e7’, ale bardziej na zasadzie ćwierćnut / półnut czy ósemek, w zaleznosci od utworu. A tekst - zazwyczaj jakos tam sie z tymi akordami synchronizuje, wiec moim zdaniem on tez bedzie rozbity, przynajmniej na ‘takty’.

Był kiedyś program ‘guitar pro’ do tabulatur i mial swoj format eksportu/zapisu ‘tabow’ - https://en.wikipedia.org/wiki/Guitar_Pro - moglbys poczytac, jak tam do tego podeszli.

2 Likes

Dzięki wszystkim za odp. Już ogarnięte.
Temat chyba można zamknąć jak coś.