Karierę programistyczną rozpocząłem od programowania stron internetowych przy użyciu PHP i MySQL. Przyzwyczaiłem się do wykorzystywania db do przechowywania większości danych dynamicznych, a także niektórych danych ustawień / parametrów. Czasami będzie dużo danych, a innym razem wpisów w tabelach będzie niewiele. Wydało mi się to po prostu naturalne i, o ile wiem, jest to mniej lub bardziej akceptowalne podejście do tworzenia stron internetowych. (Proszę popraw mnie jeżeli się mylę...)
Zajmuję się teraz aplikacjami komputerowymi, a moją naturalną skłonnością jest ponowne wykorzystanie bazy danych do przechowywania wielu informacji, które zostaną wygenerowane podczas korzystania z aplikacji. Jednak, o ile wiem, nie widzę aplikacji (których używam) bardzo często korzystających z bazy danych. [EDYCJA: Od tego czasu zauważono, że było to błędne założenie, ponieważ wiele aplikacji korzysta z lekkich dbs wbudowanych w sam program.] Jaki jest tego powód? W którym momencie należy wykorzystać db? Czy istnieją jakieś standardy w tej sprawie? Jakie są również powody, dla których NIE należy używać bazy danych do tworzenia aplikacji komputerowych?
źródło
Odpowiedzi:
jeśli twoja aplikacja jest zorientowana na dokument, przechowuj rzeczy w pliku dokumentu
jeśli aplikacja zajmuje się bardziej uporządkowanymi danymi, zbyt wiele dla pojedynczego dokumentu (np. dokumentu XML), skorzystaj z bazy danych
źródło
System baz danych jest tradycyjnie postrzegany jako stosunkowo ciężka usługa - której niekoniecznie trzeba było instalować na każdym komputerze klienckim. Właściwie to byłem w sytuacjach (tworzenie aplikacji GUI na komputery, w których trzeba było zapisać dużo danych), w których prawdziwy system DB byłby „idealnym” rozwiązaniem - ale ponieważ w tamtych czasach jedyne dostępne bazy danych były stosunkowo ciężkie, zamiast tego poszliśmy z płaskimi plikami danych.
Mimo że obecnie istnieje kilka lżejszych baz danych, jest to nadal ważny argument przeciwko bazom danych po stronie klienta. Wyobraź sobie prostą małą aplikację komputerową (na przykład prostą zabawkę lub grę komputerową), która musi przechowywać kilkadziesiąt ustawień i parametrów. Wygląda na to, że ktoś instaluje MySQL tylko po to, by uruchomić twoją aplikację.
W przypadku tworzenia stron internetowych serwer jest oczywiście zapleczem, w którym posiadanie bazy danych jest czymś oczywistym. na przykład. Użytkownicy nie muszą się martwić o zainstalowanie bazy danych na swoim końcu.
źródło
Aplikacje komputerowe utrzymują swój stan podczas działania. Podczas gdy tworzenie stron internetowych zwykle nie. Więc chociaż może być konieczne zapisanie ustawienia użytkownika w bazie danych między ładowaniami stron, w aplikacji komputerowej po prostu przechowujesz je w pamięci. To znacznie zmniejsza zapotrzebowanie na tego rodzaju trwałe przechowywanie. Jeśli chcesz przechowywać preferencje między zastosowaniami, możesz zapisać je wszystkie w jednym pliku lub umieścić je w innym miejscu, jak rejestr systemu Windows.
Biorąc to pod uwagę, systemy baz danych są dość często używane w aplikacjach komputerowych. Na długo przed pojawieniem się w Internecie aplikacje komputerowe zostały połączone z DBMS. Przede wszystkim dla aplikacji, które nie są oparte na dokumentach. Chociaż w dzisiejszych czasach, przy lepszej dostępności lekkich silników, linie nieco się zacierają. Na przykład używam baz danych SQLite jako dokumentów w kilku moich aplikacjach.
źródło
Jedną z rzeczy, które możesz chcieć sprawdzić, są lekkie bazy danych, które nie wymagają faktycznej działającej usługi bazy danych. np. na froncie Microsoft jest SQL Server Compact , który jest bezpłatny, wymaga tylko jednego pliku dla bazy danych i niektórych bibliotek DLL dodanych do Twojej aplikacji, a z perspektywy dewelopera zachowuje się tak samo jak „prawdziwy” SQL Server.
Jestem przekonany, że istnieją podobne opcje na innych platformach.
źródło
W aplikacjach internetowych ważne jest przechowywanie dowolnego trwałego stanu w scentralizowanym magazynie. Ponieważ aplikacja internetowa jest zwykle pierwszym wąskim gardłem, ważne jest, aby móc ją rozpowszechniać bez pytania, która kopia zawiera dane (zasada „Shared Nothing”). Nie tylko baza danych, ale
memcached
systemy kolejkowe istnieją z tego samego powodu.Aplikacje komputerowe nie mają tego samego celu skalowalności. Zazwyczaj większość danych jest przechowywana lokalnie na każdej stacji roboczej. Udostępnianie danych to w większości przypadków inny problem. Eliminuje to jeden ważny powód korzystania z bazy danych.
Aplikacje GUI mogą mieć także złożone dokumenty, które mogą być traktowane jako złożona sieć obiektów w pamięci. Znormalizowanie struktury w relacyjny schemat DB może znacznie zwiększyć złożoność problemu, czasem łatwiej jest po prostu serializować całość w jednym strumieniu. Wiele platform OOP zawiera tylko niektóre udogodnienia.
Mimo to, czynienie przechowywanych dokumentów czytelnymi za pomocą narzędzi spoza głównej aplikacji jest dużą zaletą w wielu przypadkach, więc albo używając formatów czytelnych dla ludzi (XML, JSON, YAML, itp.), Lub plik zip łączący kilka prostszych elementów, staje się coraz więcej i bardziej powszechne.
Z tego samego powodu kolejnym świetnym rozwiązaniem jest użycie wbudowanej biblioteki bazy danych (BDB, Tokyo Cabinet, SQLite, MS-SQL * server Compact itp.).
źródło
Bazy danych mogą być przesadzone, ale zwykle nie muszą . Bardzo proste programy po prostu ich nie potrzebują. Jeśli twój dokument może załadować się do pamięci w trywialny sposób i pozostać tam bez problemów, tak naprawdę nie potrzebujesz go dla wielu programów.
Na przykład rozważ:
Cóż, to zbyt uproszczone, ale oczywiście to po prostu za dużo. Nie ma sensu mieć takiego poziomu zarządzania danymi w „Hello World”
Zazwyczaj podstawową zasadą jest używanie bazy danych, jeśli masz wiele zestawów danych, szczególnie jeśli są one wyjątkowo różne LUB używanie bazy danych, jeśli ilość danych jest dość duża . Zasadniczo bazy danych są związane z pewnym narzutem, ale jest wiele takich, które tak naprawdę nie mają wiele. Na przykład małe, lekkie bazy danych w pamięci są czasem przydatne w przypadku małych projektów z intensywnym przetwarzaniem, harmonogramem lub dużą ilością dynamicznych zmian danych.
Istnieją różne style kodowania, wiele razy nie ma nic złego w bazie danych, ale większość z nas po prostu nie posunie się tak daleko do podstawowych zadań. Są jeszcze inne czasy, gdy odpowiednia baza danych zapewnia korzyści w zakresie wydajności. Staraj się szczególnie rozumieć różnice w tym, gdzie będą dane, jak długo będą one dostępne i co je zmieni w trakcie ich trwania.
źródło
Korzystanie z bazy danych jest zawsze właściwe, a dzięki implementacjom SQLite praktycznie dla każdego języka nieużywanie jednego języka jest po prostu złym podejmowaniem decyzji projektowych. Jedynym powodem, dla którego nie należy go używać, jest programowanie osadzone lub inny rodzaj programowania nieaplikacyjnego. Kwerendowanie danych i ustawień za pomocą języka deklaratywnego, takiego jak SQL, jest o wiele bardziej naturalne niż przechodzenie do plików płaskich lub innych obiektów w pamięci z konieczną składnią. Co więcej, oddziela operacje danych od innych kodów aplikacji, co w dłuższej perspektywie czyni kod bardziej modułowym i łatwym w utrzymaniu.
źródło