Bazy danych a pliki tekstowe

0

Rozpatrujmy mój temat na 2 rodzaje baz. Te na komputerze/telefonie. Te dostępne w sieci lokalnej.
SZBD to tylko programy. Nie mogą zrobić niczego więcej czego ja nie mogę teoretycznie.
Spotkałem się z różnymi opiniami w internecie.
[php]Pliki txt czy baza danych
https://stackoverflow.com/questions/38120895/database-vs-file-system-storage
https://insights.dice.com/2014/04/23/nosql-alternative-disk-folders/
https://stackoverflow.com/questions/2147902/is-it-faster-to-access-data-from-files-or-a-database-server

Jedyna zaleta gotowych SZBD na użądzeniach i w sieciach lokalnych to to, że mogę nie zwracać uwagi na systemy operacyjne. Ale to nie taki problem jak tylko na urządzeniu. W sieci lokalnej to dostępna to trochę większe wyzwanie. Po prostu zrobię jedną apkę SZBD na windows i tam w pliczkach będzie zapisywać na dysku . Z którą będzie się komunikować po udp. Ale to w bardzo prostych przypadkach.
Taka własna baza danych jest też bezpieczna

1
kamil kowalski napisał(a):

Taka własna baza danych jest też bezpieczna

Aż do momentu gdy utracisz dane, przez jakis "krzywy" zapis. Jak byłem bardzo, bardzo młodym programistą, też w to wierzyłem...
Gratuluję wiary, że jakiś twór w jednym osobno-garażu lepiej będzie przygotowany na różne pady zasilania, komunikacji, systemu operacyjnego niż produkty mające tysiące osobo-lat na development i testy

0

Myślę że oni też nie są na to przygotowani. System operacyjny windows chyba tak samo interpretuje prośbę zapisu na dysku pliku od mojego programu a od jakiegoś SZBD ?

1

Są dużo bardziej gotowe na to niż ty. Poza tym wydajność, spójność i tak dalej. Uzyj jakiegoś sqlite i będziesz zadowolony zamiast kombinować. W pracy ludzie będą mieli gdzieś czy potrafisz zapisać do pliku za to ważne będzie jakie bazy ogarniasz.

0

Wszystko zależy od tego, jak wiele typowo bazodanowych funkcjonalności potrzebujesz. Jeśli mało i jeśli format plików będzie tak prosty, że będzie się go dało precyzyjnie opisać za pomocą kilkudziesięciu zdań (i - odpowiednio - obsłużyć bardzo krótkim programem), to myślę że pliki będą lepsze. Podoba mi się następujący tekst omawiający taki przypadek: https://indieweb.org/database-antipattern

Im więcej funkcjonalności typowej dla bazy danych potrzebujesz, tym większy sens ma użycie gotowego SZBD.

2

mam dla ciebie zadanie - stwórz plik tekstowy o rozmiarze np. 1GB i teraz tak, z różnych komputerów jednocześnie

  1. dodaj coś do niego
  2. zmień coś w środku tekstu
  3. usuń coś na końcu
  4. usuń coś w środku
  5. wyszukaj jakąś frazę

Całkowicie pomijam przypadek, że dane masz w 2, 3, ..., 10 plikach i musisz je najpierw odpowiednio połączyć. Bo trzymanie listy znajomych w pliku to nie jest żadna baza danych.

Jeśli chcesz porównać system bazy danych do pliku to SZBD mają:

  1. zarządzanie dostępem (uprawnienia na poziomie bazy/tabeli/nawet wiersza)
  2. wielodostęp
  3. indeksy
  4. transakcyjność
  5. relacyjność

Nie ma znaczenia gdzie ta baza jest (sieć, web, telefon) bo to nie jest wyznacznik czy się nada czy nie. Wyznacznikiem jest ilość i typ danych, flow (np. czy będziesz tylko i wyłącznie dodawał) i ich przeznaczenie

1

A ja bym raczej zapytał "po co". Jeśli dla zabawy/satysfakcji/nauki, to spoko. Jeśli dla lepszego efektu, to daruj sobie :)

1
kamil kowalski napisał(a):

Jedyna zaleta gotowych SZBD na użądzeniach i w sieciach lokalnych to to, że mogę nie zwracać uwagi na systemy operacyjne.

Myślę, że nie jedyna... część z nich wymienili powyżej.

Ale to nie taki problem jak tylko na urządzeniu.

To, że będzie na jednej maszynie też nic nie zmienia bo dzisiaj "maszyny" są wielowątkowe, dają możliwość odpalenia 2 lub więcej razy tej samej aplikacji itp.. itd...
Nawet na jednym urządzeniu zalety bazy danych są nie do dogonienia przez dane trzymane w pliku - zakładam, że tekstowego lub typu file of record.

Jest raczej odwrotnie niż myślisz. Jedyną zaletą pliku jest rozmiar danych na dysku... a i tutaj można być zaskoczonym bo bazy potrafią kompresować dane w locie.

Taka własna baza danych jest też bezpieczna

W jakim aspekcie? Jak sam robisz na pliku to albo będziesz miał bazę strasznie wolną bo za każdym odwołaniem będziesz otwierał i zamykał plik albo będziesz miał cały czas otwarty i wtedy w przypadku resetu systemu stracisz dane...

kamil kowalski napisał(a):

Myślę że oni też nie są na to przygotowani. System operacyjny windows chyba tak samo interpretuje prośbę zapisu na dysku pliku od mojego programu a od jakiegoś SZBD ?

Nie sądzę. Poczytaj sobie na ile sposobów i z jakimi uprawnieniami można otwierać pliki.

0

To chyba taka kolej rzeczy , jak człowiek ma 20 +/-5 lat to zadaje dużo "dziwnych" pytań , z czasem człowiek się zmienia i po prostu chwila wewnętrznej refleksji nad tematem umożliwili odpowiedzieć na 99,9% zagadnień
W okolicach 1999 też myślałem nad takim problem poruszanym przez OP teraz to by mi nawet przez mysl mi by nie przyszło. W moim świecie sqlite jest idealny do moich skromnych potrzeb

0

Kiedyś robiłem prosty pogram na konkurs. Do zapisywania prostych rzeczy użyłem sql lite. Wtedy w ide nie było funkcji do podglądu zawartości bazy danych albo jej nie widziałem. A by to dużo pomogło i edycja w trakcie działania aplikacji z poziomu tego narzędzia. Gdybym wtedy drążył temat i znalazłbym alternatywy jeszcze lżejsze od sql lite i prostsze no code. To nie poświęciłbym 30% czasu na bazy danych tylko 5% i nie popełniłbym błędów(logicznych) które popełniłem. Bo narzędzia były by zbyt proste. Ustawienia miały być pamiętane po wyłączeniu aplikacji.

0

eeeee? Przecież odkąd istnieje sqlite istnieją apki do odczytywania ich.

0

0

No i? To co oferuje jetbrains niestety nie daje takich możliwości jak oferują apki typowo do konkretnych baz, phpmyadmin, pgadmin, workbench, sqlite studio itp.

0

A zdjęcia i filmy? Taki 100 GB film trzymać w bazie danych? przecież to też dane. Udostępniał bym to w sieci. Ale ciężko otworzyć udostępniony plik z windowsa na androidzie.

0
kamil kowalski napisał(a):

Ale ciężko otworzyć udostępniony plik z windowsa na androidzie.

jeśli chcesz to zrobić po sieci lokalnej, to coś takiego możesz spróbować:

cd KATALOG_Z_FILMEM
python3 -m http.server

a potem w przeglądarce na komórce łączysz się pod odpowiedni lokalny IP / port (domyślnie 8000) i ściągasz sobie film.

aha, ale nie wiem jak to będzie działać z tak dużymi plikami. czy będzie je streamować wtedy?

0

a czmu by nie trzymać zdjęć w bazie danych? Można, jak ma to uzasadnienie.

przecież to też dane. Udostępniał bym to w sieci. Ale ciężko otworzyć udostępniony plik z windowsa na androidzie.

A jak myślisz jak działają usługi streamingowe, iptv itd. ? Player dostaje adres i tyle(w uproszczeniu). Oczywiście w dużych instalacjach wybieramy serwery bliżej użytkownikach cały ten temat load balancerów itd. Nie wiem jaki masz problem udostępnić film w sieci i podpiąć się multicastem czy jakimś rtsp. Jak źródło można użyć np. VLC.

0

Mi chodziło o to że aplikacja na telefonie otwiera zdjęcie w sobie na przykład. A nie tylko wyświetlać. Może zapisywać nowe w miejscu udostępnionym na komputerze z windows. Coś takiego próbowałem ale nie działało. Mogę jeszcze po udp przesłać znak po znaku i tak prześle zdjęcie. Ale z tym jeszcze więcej roboty.

0

Może zapisywać nowe w miejscu udostępnionym na komputerze z windows. Coś takiego próbowałem ale nie działało.

tych protokołów jakich android do tej komunikacji używa nie znam. No ale wiesz to jakaś appka trzecia ma problem. Nie znam konfiguracji twojego telefonu ani windows. Czy to twoja appka?

0

Tak ja próbowałem zrobić aplikacje.

0

nie znam tych protokołów ale zakładam że korzystasz z jakiejś libki. może jej źle używasz czy coś. W ogóle nazwa tematu nie koresponduje z tym co mówisz. Chciałeś robić jakieś bazy tekstowe sam co raczej sugeruje że chciałeś dane tekstowe trzymać anie video/zdjęcia.

Sugeruję pójść do działu android/kotlin i przedstawić problem technicznie.

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