Którą bazę SQL wybrać?

Którą bazę SQL wybrać?
YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:6 dni
  • Postów:252
1

Baz SQL jest wiele, w większości mają podobne zastosowania, załóżmy czysto teoretycznie, że zaczynamy coś czysto od zera i nie jesteśmy związani żadnymi wymogami, którą bazę wybrać?

Zakładam, że jest sens użyć SQLa, czyli że odpowiedź nie brzmi: żadną ani: Jakiś NoSQL

Niewiele wiem o różnicach między bazami, ale na intuicję scharakteryzowałbym je tak:

  • 👌 Postgres: Cool kid on the block, defaultować do niej. Baza robiona przez ludzi, którzy mają mózgi, w przeciwieństwie do pozostałych baz (tak się wypowiedział na jej temat wykładowca na uczelni). Darmowa. W zasadzie najlepsza?
  • ✔️ MSSQL: Jak się robi coś w dotnecie? Oprócz tego płatna, sensowna ale nieco gorsza alternatywa Postgresa?
  • ✔️ OracleDB: Jak MSSQL, tylko do Javy
  • 😑 MariaDB / MySQL: Bardzo popularne, ale raczej marne. Czemu wszyscy tego używają? MariaDB jest jak MySQL, ale lepsza.
  • ❌ SQLite: Jedno zastosowanie: Jeśli chce się uniknąć serwera bazy danych, bardzo by chciało zmieścić się w DLLce (np. w przypadku przeglądarki internetowej ma to sens). Oprócz tego NIE

Czyli: Albo wiesz, co robisz, i bierzesz to, co ci potrzebne; albo, jak po prostu potrzebujesz JAKIEJŚ bazy, to idź w Postgresa? (Albo cokolwiek jest domyślnego w twoim środowisku, tj. jeśli dotnet wepchnie ci mssql to niech tam będzie)


Domyślam się, że to mogą być głupoty, co napisałem. Jakie byłoby więc sensowniejsze podsumowanie dostępnych baz?


Domyślam się, że przy zaczynaniu nowego projektu to może być częste zjawisko: potrzebuje się JAKIEJŚ bazy, ale nie ma się eksperckiej wiedzy na temat baz, więc wyboru trzeba dokonać "na czuja". Stąd myślę, że jakieś ogólne guidelines mogłyby być przydatne


A może odpowiedź brzmi: To nie ma najmniejszego znaczenia? I tak będzie się najprawdopodobniej używać jakiegoś ORMa. Czy ORMy abstrahują bazy na tyle dobrze, że różnice zaczynają być nieistotne, można równie dobrze rzucić monetą?

edytowany 2x, ostatnio: YetAnohterone
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
1
  1. MSSQL nie jest zawsze płatny. Jest wersja Express (10GB bazy, ~1GB RAM (w rzeczywistości więcej), chyba 1 rdzeń CPU ???)
  2. Nie ma najmniejszych przeszkód pracy MSSQL z Javą, działa wyśmienicie, nie wiem o czym piszesz.
  3. Przewaga MySQL wywodzi się z zastosowań internetowych. Wytworzyła się znaczna ilość ludzi którzy ją znają (albo im się tak wydaje). Wieki, wieki temu zupełnie bez-transakcyjna (ale szybka). Obecnie transakcyjność gorsza niż MSSQL (w MS transakcyjne są również altery)
  4. Sympatyzował bym z Postgresesem, ale rodzaj produktów w moim portfelio jest jaki jest, i niekoniecznie dobrowolnie pracuję z pozostałymi
  5. Oracle ma też wersję express, i obserwuję instalację na tym, nie jest źle (wcale nie java ani *xiksy, Windows i coś a'la delphi. Dośc egzotyczny wybór producenta programu)

If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 4 godziny
  • Postów:1431
2

Te intuicje to są oparte głównie na jakiś plotkach czy blednych przeświadczeniach, jak wiązanie bazy z platformą. Na moją intuicje to nic co tam napisałeś w tym podsumowaniu nie jest prawdziwe. Ani wyższość Postgresa, ani kiepskosc MySQL, ani wyzsosc MariaDB nad MySQL.
Wybór bazy jest istotny, szczegolnie dla adminów, którzy będą tym zarządzać, programiści zapominają, że świat nie kończy się na nich.

YA
Plotki? Rzeczywiście, sporo powtarzam po innych ludziach. Ale zakładam, że znających się na rzeczy. Jak pisałem, chwalenie Postgresa powtarzam po wykładowcy ze studiów, przedmiot bazy danych. Narzekanie na MySQL z kolei powtarzam po adminie w Januszexie, który z MySQLem pracował, i - czy mnie pamięć nie myli - chyba także po wykładowcy ze studiów.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
3

SQLite ma wiele zastosowań ale w zasadzie wszystkie sa jednostanowiskowe.

S4
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:1268
4

Wybrać ale do czego?

YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:6 dni
  • Postów:252
0

Wiem, że MSSQL ma wersję Express, ale pominąłem ją, zakładając, że nie nadaje się do zastosowań innych, niż czysto hobbystyczne, bo ograniczenia na RAM / CPU okażą się niedopuszczalne. Może błędnie zakładałem.

Wybór bazy jest istotny, szczegolnie dla adminów, którzy będą tym zarządzać, programiści zapominają, że świat nie kończy się na nich.f

Aha, czyli wybór sprowadza się do tego, czym adminowi łatwiej będzie zarządzać? Czy z perspektywy programisty: co admin nakaże?

Wybrać ale do czego?

TO jednak ma znaczenie? Zakładałem, że różne SQLe to jak młotki różnych firm, są dokładnie analogicznymi produktami.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
4

Zakładałem, że różne SQLe to jak młotki różnych firm, są dokładnie analogicznymi produktami - nie sa.

Musisz znac rozmiar bazy, jej przyrost / dzien, wymagania co do liczby użytkowników, czy baza ma byc transakcyjna, ile mozesz miec maks RAMu, czy chcesz miec obsługę Geo, Xml, Json, na jakim systemie ma pracowac, z jakimi technologiami ma sie interfejsowac itd.

YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 12 godzin
  • Postów:2368
5

Jak wybierasz coś, to przeważnie masz jakieś oczekiwania, wymagania, budżet i nie wybierasz produktu, który do nich wyraźnie nie pasuje.
Patrzysz jak produkt wpisuje się w wymagania/budżet i skreślasz te pozycje, które nie pasują.

Jaki samochód wybrać? Nie może być tak, że wybierasz samochód na podstawie tylko koloru (takie abstrakcyjny przykład, w którym kolor samochodu można porównać do odczuć developera wobec technologii), a masz do wyboru pomarańczowy kamaz, czarne X7 i żółtego fiata 126p. Czerwony kamaz jako Uber, hmm... nisza rynkowa ;)

Wybierasz baze, więc zapewne chcesz gromadzić dane. Skoro je gromadzisz, to pewnie zadajesz sobie masę pytań:

  • Jak zapewnić bezpieczeństwo danym? Replikacja, backup.
  • Wymogi prawne? Trzeba gromadzić dane o tym kto/kiedy/jak korzysta ze zgromadzonych danych (np. na potrzeby audytu) - funkcjonalność audytowania
  • Kto będzie odpowiedzialny za utrzymanie? Ma odpowiednie umiejętności? Ile kosztują szkolenia?
  • Kto będzie dostarczał wsparcie dla silnika bazodanowego?
  • Czy silnik jest certyfikowany na serwerach które mam?
  • Ile będzie kosztować rezygnacja z funkcjonalności X i zbudowanie protezy tej funkcjonalności? (Kto będzie utrzymywał protezję, jakie zaosby będą potrzebne do jej wdrożenia, .. )
  • Z których wymagań mogę zregyznować?
  • ...

W jaki sposób poszczególne produkty wspierają te wymagania? Ile to kosztuje? Ile będzie kosztować przestój jeśli baza padnie i trzeba będzie odtwarzać dane? Jaki będzie wpływ na reputację czy doświadczenie klientów?

edytowany 1x, ostatnio: yarel
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:3462
7

Z mojego doświadczenia to poza wyborem bazy pod kątem jakichś specjalnych usprawnień jak postgis do postgressa, to właśnie kwestie administracyjne miały znaczenie. Jak firma ma AD i adminom łatwo tym zarządzać to MSSql server jest jak znalazł.
Integracja AD z MySql kiedyś przynajmniej wymagała płatnych dodatków. Postgres ma dodatki wykorzystujące LDAP ale znów to nie jest pełna integracja z AD i z tego co mi wiadomo nie wykorzystuje Kerberos ( ale mogę się mylić). Developersko teraz to wszystko wepchniesz do kontenera i backup, ilość instancji w klastrach czy fail over Cię nie interesuje.

piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 godziny
  • Postów:3277
1

Nie ma prostej, uniwersalnej odpowiedzi. Pytanie czego oczekujesz od takiej bazy i jaką ona ma pełnić rolę. Parę pytań pomocniczych:

  • Czy jakakolwiek część logiki będzie po stronie bazy (procedury składowane, wyzwalacze...)
  • Czy czy potrzebujesz jakiej specjalnej funkcji w tej bazie (GIS, OLAP....)
  • Czy system który budujesz, będzie miał wyłączny dostęp do bazy danych
  • Jak chcesz zarządzać uprawnieniami
  • Czy potrzebujesz replikacji danych
  • Gdzie przewidujesz deploy bazy - Windows, Linux, chmura (jaka), VM, on-premise, bare metal...
  • Ile jednoczesnych transakcji przewidujesz
  • Jakie wsparcie jest oczekiwane ze strony producenta
  • Jakie masz doświadczenie w administracji konkretną bazą danych
  • ile kosztują licencje
Grzyboo
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:206
1

Wybij sobie z głowy myślenie, że baza X to Java, a Y to C#. Już się dawno tak nie pisze oprogramowania, żeby jakieś formularze ściśle integrować z bazą danych (kojarzę coś takiego jak Oracle Forms). Żeby korzystać z bazy danych wystarczy, że istnieje odpowiedni connector do bazy danych, a dla takich języków jak Java, C#, PHP istnieją raczej wszystkie możliwe connectory, więc możesz użyć dowolnej bazy danych i realnie nie ma to żadnego znaczenia.

Ogólnie MSSQL i Oracle to typowe korpo technologie do przepalania pieniędzy i czasu programistów. Jak jesteś korpo to ich używasz zawsze i wszędzie. Management będzie zadowolony, każdy inny pracownik już mniej, ale to przecież nie szkodzi. Oczywiście są jakieś bardzo specyficzne powody dla których warto je wybrać, ale na pewno nie powinny być domyślnym wyborem.

MySQL ma trochę złą sławę, ale jest to przyjemna baza danych.

MariaDB / MySQL: [...] Czemu wszyscy tego używają?

Prawdopodobnie dlatego, że kiedyś wszystkie CMSy(tym samym większość internetu) były oparte o MySQL.

KamilAdam
Ja tam w już w trzecim korpo używam postgresa
Grzyboo
szczęściarz!
RA
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 14 godzin
  • Postów:360
2
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Poznań
  • Postów:8769
4

To jak tak dodam jeszcze jedną rzecz, która może ułatwić podjęcie decyzji. Jak wyżej pisali koledzy - wybór bazy zależy w dużej mierze od okoliczności oraz jej zastosowania.

Jeśli potrzebujesz zrobić jakiegoś REST'a to rzuć okiem na https://postgrest.org/en/stable/ - "nakładka" na Postgresa, która jakby integruje bazę z serwerem REST. W sensie - nie musisz mieć osobnych dwóch rzeczy, które ze sobą gadają i potem wystawiają endpointy w świat (np. Apache, który jest serwerem REST'a i który się komunikuje przez Twoje skrypty z SQL'em), bo tutaj masz to w jednej całości.

PostgREST is a standalone web server that turns your PostgreSQL database directly into a RESTful API. The structural constraints and permissions in the database determine the API endpoints and operations. Using PostgREST is an alternative to manual CRUD programming. Custom API servers suffer problems. Writing business logic often duplicates, ignores or hobbles database structure. Object-relational mapping is a leaky abstraction leading to slow imperative code. The PostgREST philosophy establishes a single declarative source of truth: the data itself


TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:700m n.p.m.
  • Postów:677
1

Jeżeli będziesz miał do dyspozycji serwer dedykowany to bierz PostgreSQL-a. Gdyby projekt miał być uruchamiany na hostingu współdzielonym to MySQL.


DRY > SOLID (nie bierz tego zbyt poważnie)
CW
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
  • Postów:251
2

Moim zdaniem to cała ta dyskusja jest bez sensu. W większych projektach silnik bazy danych jest narzucony przez to co posiada już klient (nawet nie chodzi o sam program, ale administratorów z doświadczeniem) lub ze względu na koszty wybiera się rozwiązania darmowe typu PostgreSQL (w przypadku zamówień publicznych koszt projektu jest ważniejszy od wydajności, a nawet zdrowego rozsądku).

edytowany 1x, ostatnio: cw
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Poznań
  • Postów:8769
1

@cw: ale nie wszyscy siedzą w wielkich projektach tworzonych przez setki ludzików i wartych miliony złotych. Czasem firma 2-3 osobowa musi coś zaproponować swojemu klientowi. Albo nawet w dużych firmach - ktoś jest tym kimś, kto narzuca rozwiązanie, więc nie zgadzam się - ta dyskusja ma baaardzo dużo sensu. Co nie zmienia faktu, że najlepsza z możliwych odpowiedzi to "to zależy od okoliczności i wymagań".


CW
OK, ale przy małych projektach to ogólnie nie ma problemu bo w takim segmencie można sobie przebierać w darmowych rozwiązaniach silników baz danych. Natomiast jak firma ma np. wykupioną licencję MSSQL serwera na procesory za ogromne pieniądze, gotowa infrastrukturę (m.in. system kopii zapasowych), administratorów z doświadczeniem to raczej nie będzie zadowolona z darmowego rozwiązania na MySQL czy PostgreSQL (choć ta darmowość to też jest dość umowna bo jak się oczekuje wsparcia na pewnym poziomie to trzeba niestety płacić)
SL
@cw w dzisiejszych czasach jest dużo prościej utrzymywać bazę przez co jest trudniej z wyborem. Kiedyś nie dało się wyklikać dowolnej bazy w cloudzie z całkiem dobrym supportem.
CW
O cloudzie nie pomyślałem, ale są systemy, które ze względów bezpieczeństwa nie mogą po prostu być przetwarzane w takich "publicznych" chmurach. Oczywiście dla klientów typu sklep internetowy to faktycznie może być najtańsze i najłatwiejsze rozwiązanie. Bezpieczne nie będę pisał bo wystarczy wpisać w google "Jak nie prowadzić firmy hostingowej" rok 2016 i widzimy, że czasami te bezpieczeństwo danych to iluzja.
SL
Jasne, chodziło mi bardziej o sytuację, że mam postawić nowy system w firmie i muszę wybrać bazę. Kiedyś polegałem na tym co mi dadzą, dziś muszę sam wyklikać sam usługę, co rodzi pytanie zadane przez OPa
YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:6 dni
  • Postów:252
1

Skoro MySQL nie jest marny, to skąd się wziął mit o jego marności?

Skoro Postgres nie jest super-duper, to skąd się wziął mit o jego super-duperowatości?

S4
MYSQL marny jakchesz robić jakieś analityki. PG jest ok ale przyprojektach klasy banki itp to już raczej nie dostanie rokemnadacji wszędzie
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 4 godziny
  • Postów:1431
1
YetAnohterone napisał(a):

Skoro MySQL nie jest marny, to skąd się wziął mit o jego marności?

Skoro Postgres nie jest super-duper, to skąd się wziął mit o jego super-duperowatości?

Skoro szczepionki nie powodują autyzmu to skąd wziął się mit o szkodliwości szczepionek? Z powtarzanych bez refleksji obiegowych opinii.

Edit. I co do negatywnych opinii to jest jeszcze jedna przyczyną - ludzie hejtują niektóre technologie, mimo że nigdy nie mieli z nimi do czynienia, bo to jest fajne. z tego powodu hejt leci na PHP, JS, Windows, .NET czy na MySQL. Hejt nie musi mieć żadnych racjonalnych podstaw.

edytowany 1x, ostatnio: Saalin
cerrato
A masz dowody że nie powodują? :P
S4
A masz ze powodują?
cerrato
@S4t: to przecież wszyscy wiedzą, nie trzeba tego udowadniać :D
YA
Dobrze, ale pisałem przecież, że powtarzałem te obiegowe opinie po ludziach, którzy przynajmniej powinni przynajmniej mniej więcej wiedzieć, co mówią
TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:700m n.p.m.
  • Postów:677
0

Wśród najpopularniejszych baz nie ma czegoś takiego jak najlepsza baza. To wszystko zależy od tego co chcesz robić, dlatego ta cała dyskusja jest bez sensu bo nie wiadomo o co Ci chodzi. Do jednych zastosowań MySQL będzie lepszy, do innych PostgreSQL, a w jeszcze innej sytuacji DB2, Firebird albo SQLite.


DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 4x, ostatnio: TomRZ
neves
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Kraków
  • Postów:1114
1

Nie pracowałem za wiele z Oracle, także moje drzewko decyzyjne wygląda tak:
MSSQL - pierwszy wybór, jeśli tylko budżet pozwala,
PostgreSQL - jedynie wtedy gdy brak budżetu, albo potrzebujemy jakiś bardzo specyficznych indeksów których brak w MSSQL,
MySQL - nigdy więcej
SQLite - jak nie potrzebujemy współbieżności

MsSql to jest odpowiednik windowsa w świecie baz danych, pomyślany jak dla idiotów, wiele rzeczy zautomatyzowanych, profilowanie zapytania bajka.
Postgresql to jest odpowiednik Linuksa sprzed 20 lat, niby takie same możliwości jak windows, ale żeby osiągnąć podobne rezultaty jak na MsSql to trzeba się napocić i posiadać dogłębną wiedze o specyficznych rzeczach dla tego silnika.


CW
SQLite - też to chciałem napisać. SQLite jest przeznaczony do obsługi jednego użytkownika i bardzo dobrze sprawdza się w pewnych rozwiązaniach np. aplikacjach mobilnych (osobiście używam go do przechowywania danych w programach skryptowych pisanych na własne potrzeby w pythonie), ale nie jest to rozwiązanie, które można wykorzystać np. w programach księgowych.
neves
też często używałem SQLite w projektach na własne potrzeby w przeszłości, ale teraz praktycznie wszystko już mam zmigrowane do SQLServer LocalDB, ze względu na lepszy tooling
TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:700m n.p.m.
  • Postów:677
2
neves napisał(a):

Postgresql to jest odpowiednik Linuksa sprzed 20 lat, niby takie same możliwości jak windows, ale żeby osiągnąć podobne rezultaty jak na MsSql to trzeba się napocić i posiadać dogłębną wiedze o specyficznych rzeczach dla tego silnika.

Instalacja postgresa jest prosta - zarówno na windowsie jak i linuksie.

Tuning / optymalizacja / konfiguracja to też nic trudnego dla kogoś kto ma podstawowe pojęcie na podstawie wiki, 10-20 minut spokojnej pracy: https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server, nawet bez tej optymalizacji podstawowe ustawienia dadzą radę do większości zastosowań.


DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 1x, ostatnio: TomRZ
CW
Z tą łatwością to byłbym bardzo ostrożny. Administrowałem bazą w PostgreSQL mającą rozmiar ponad 500GB. Nie wiem jak jest teraz, ale dwie największe bolączki jakie były w PostgreSQL (wersja darmowa) - brak możliwości robienia przyrostowych kopii zapasowych, ogólnie słaby system kopii zapasowych (czas wykonywania kopii przekraczał 24h), brak możliwości stworzenia klastra HA (np. MSSQL ma świetny AlwaysOn)
TR
Nie pisałem o administrowaniu, tylko konfiguracji / tuningu. Sprawa kopii zapasowych / replikacji to osobny temat, nie wiadomo jak duża ma być baza czy to w ogóle jest tutaj jakiś problem - nic nie wiadomo.
TR
@cw - aczkolwiek dzięki za ten komentarz, jest wartościowy
vpiotr
@cw: pg idzie cały czas do przodu, być może część rzeczy już rozwiązali - np. tu coś o tym: https://pgdash.io/blog/postgres-incremental-backup-recovery.html
CW
Ok znam to, ale to jest płatne rozwiązane. Chciałem tylko zwrócić uwagę, że przy dużych systemach "darmowość" niektórych rozwiązań jest złudna i jak się chce jakieś dodatki to niestety trzeba za to płacić.
S4
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:1268
3

Pewnie w dużej mierze jak kogoś zapytasz o wybór jakiejś bazy to ci powiedzą, że ta, co oni wybrali jest najlepsza, bo oni innej nie znają, a nie dlatego, że rzeczywiście jest najlepsza. Bo tak naprawdę każde to rozwiązanie ma swoje plusy dodanie i ujemne.
Z mojej prospekty (pracowałem ze wszystkimi tymi bazami przy więcej niż jednym projekcie) .
Oracel - ma sens jak nie masz naprawdę duży projekt i ludzi do oganiania. Ostatnimi czasy koszty licencji wywaliło w kosmos jak ceny paliwa. Fajne narzędzie takie jak APEX - świetny w małych i średnich projektach, bardzo dobrze rozwinięty PL/SQL. Jest masę sofrtu napisane w PL/SQLu i jeszcze przez wiele lat będzie co robić.
MSSQL - jego wadą jest przede wszystkim cena i skomplikowany system licencyjny. Bardzo dobrze działa. T-SQL ma kilka fajnych modyfikacji względem standardu. Dobre wsparcie. Od kilku lat jest też wersja dla Linuxa. Fajne narzędzia jak SSRS, SSIS itp. Jak ktoś działa w światku widowswoym to pewnie jest to dla niego pierwszy wybór.
Postgres - dobre rozwiązanie, darmowe. Poziom wsparcia porównywalny z MSSQL i można nabyć wsparcie. ma kilka denerwujących rzeczy. Ale myślę, że jest bardzo blisko MSSQL. Niestety ten cały PgAdmin jest lata świetlne za SSMS.
MySQL (i inne odłamy tego kościoła) - osobiście nie lubię przez zmieszanie z tymi silnikami. Zaliczyłem parę wpadek w zapytaniach analitycznych na tej bazie. Okazało się, że MySQL robi to jakoś inaczej niż cały świat i zapytanie trwało 2h zamiast 1s. Dobre pod bloga może pod prosty sklep.
SQLLite - tu to chyba tylko da się trzymać konfigurację albo jakieś dane podręczne. Wypierane przez konkretne implementacje w językach i platformach.

Poza samom funkcjonalnością warto spojrzeć też na to, kto to będzie utrzymywał i jak już mają 5 baz SQL Server to nie pakować im postgresa.

edytowany 1x, ostatnio: S4t
Grzyboo
Fajne narzędzia jak SSRS, SSIS itp. to zdanie mnie autentycznie przeraża. Szczególnie w przypadku SSIS to zestawianie go ze słówem "fajne" w jednym zdaniu wywołuje spory niepokój.
S4
A coś bardziej konstruktywnego? Znam kilka projektów opartych na SsIs i ludzie co tam pracowali nie narzekali.
Grzyboo
1. jak w każdym tego typu genialnym pomyśle typu "wyklikaj w aplikacji, zapisz jako XML" - fatalna wersjonowanie, śledzenie zmian, development zespołowy 2. ciężka testowalność 3. antyczne toole 4. ogólny śmietnik, trochę mix SQLa, przeciągalnych bloczków i kodu w C#. 5. klasyczna dokumentacja MS - ściana tekstu, żeby nie dowiedzieć się nic. A to, że ludzie nie narzekają to pewne. Teraz narobią projektów w niszowej technologii, a potem ktoś to musi utrzymywać za dwukrotność pensji programisty, bo nikt inny tego kijem nie chce dotknąć :D
S4
Ty chyba nie wiesz co to niszowe technologie.
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Poznań
  • Postów:8769
2

SQLite - jak nie potrzebujemy współbieżności

Plus jak jeszcze nie trzeba bardziej zaawansowanych ficzerów jak konta z przypisanymi uprawnieniami, replikacja, jakieś zwiększone bezpieczeństwo, nie korzystasz z RIGHT OUTER JOIN lub FULL OUTER JOIN, jeśli dużo zapisujesz to SQLite ma znacząco gorszą wydajność, SQLite ma gorsze/biedniejsze wsparcie dla triggerów, coś mi świta że bywają jakieś Unicode'owe problemy, ALTER jest wykastrowany/ograniczony, .

I żeby była jasność - uważam, że SQLite jest genialnym rozwiązaniem, tylko trzeba wiedzieć gdzie i jak z tej bazy korzystać. Brak (a właściwie - jest, ale słaba) współbieżność to tylko jedna z rzeczy, którą trzeba wziąć pod uwagę podczas podejmowania decyzji.

Instalacja postgresa jest prosta - zarówno na windowsie jak i linuksie.

Podpisuję się pod tym wszystkimi 4 łapkami. Jeśli kogoś to przerasta, to raczej powinien zmienić branżę :P (z zastrzeżeniem, że chodzi po prostu o postawienie bazy. Jej dopieszczenie i zaawansowana konfiguracja to zadanie dla osoby baardzo doświadczonej i z ogromną wiedzą/znajomością Postgresa)


TR
Wyżej napisałem, że to zajmuje 10-20 minut, no może przesadziłem :) Tak z godzinę wystarczy na spokojnie, żeby to zrobić. Najważniejsze parametry do wzięcia pod uwagę to liczba procesorów serwera, pamięć RAM i typ dysku - czy SSD czy SATA.
Marcin.Miga
A kto używa RIGHT JOIN? :)
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:17 dni
2

żeby osiągnąć podobne rezultaty jak na MsSql to trzeba się napocić i posiadać dogłębną wiedze o specyficznych rzeczach dla tego silnika.

¿Que? PostgreSQL o ile pamiętam to DB, która jest najbliżej standardu z dostępnych i raczej unika własnych rozszerzeń, a jak coś to są one wyraźnie w dokumentacji zaznaczone. Większość rzeczy działa OotB i nie potrzebujesz Query Hints czy innych wynalazków. MS SQL w tej kwestii miał AFAIK zawsze bardziej liberalne podejście.


S4
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:1268
0
hauleth napisał(a):

Query Hints

Co masz na myśli?

edytowany 1x, ostatnio: S4t
S4
Oracle tez miał tego dużo. Ale od kiedy są optymalizatory kosztowe a nie regułowe hinty są niewskazane.
neves
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Kraków
  • Postów:1114
1
hauleth napisał(a):

żeby osiągnąć podobne rezultaty jak na MsSql to trzeba się napocić i posiadać dogłębną wiedze o specyficznych rzeczach dla tego silnika.

¿Que? PostgreSQL o ile pamiętam to DB, która jest najbliżej standardu z dostępnych i raczej unika własnych rozszerzeń, a jak coś to są one wyraźnie w dokumentacji zaznaczone. Większość rzeczy działa OotB i nie potrzebujesz Query Hints czy innych wynalazków. MS SQL w tej kwestii miał AFAIK zawsze bardziej liberalne podejście.

Zgadza się, Postgres ma najabliższą standardów implemetancje SQL (a MySql pewnie najmniej). Tyle że bazy danych to już od dawien dawna nie sam SQL tylko masa najróżniejszych ficzerów i toolingów ułatwiajacych życie. I mój komentarz odnosił się do bazy danych jako całości, a nie tylko samego SQL'a. Tutaj pisałem zresztą o różnicach między
Postgres vs. SQL Server


edytowany 1x, ostatnio: neves
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
3
YetAnohterone napisał(a):
  • ✔️ MSSQL: Jak się robi coś w dotnecie? Oprócz tego płatna, sensowna ale nieco gorsza alternatywa Postgresa?
  • ✔️ OracleDB: Jak MSSQL, tylko do Javy

W czym MSSQL jest gorszy od Postgresa?
Wydaje mi się, że do wielu zastosowań Postgres może być lepszy (chociażby z uwagi na cenę), to są ficzery, których ta baza nie ma.

Widziałem też zarówno projekty dotnetowe z Oraclem jak i Javowe z MSSQL, więc ten podział nie jest prawdziwy.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
3

PostgreSQL ma sporo rozszerzeń - ale to jego plus (bo są opcjonalne - nie chcesz to nie dodajesz).
PostgreSQL most useful extensions

Poza tym chyba najlepiej na rynku udaje Oracla:

A z kompatybilnością ze standardami to się zgodzę, w tej bazie jest najmniej momentów "a-ha!".

S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
4

Na pewno nie Oracle.


J0
  • Rejestracja:prawie 3 lata
  • Ostatnio:około 2 lata
  • Postów:6
0

Dzień dobry

To ja podłączę się do tematu.

Jestem na początku drogi do zrobienia swojego pierwszego projektu. Nie chcę zdradzać szczegółów, ale plan jest prosty:

  • strona internetowa będąca jednocześnie wyszukiwarką pozwalającą na identyfikacji produktu przez wzgląd na jego cechy: wygląd, kształt kolor, długość, średnica
  • zakładam, że będzie ona zawierać początkowo około 5000 rekordów w tabeli, w której będzie nazwa produktu
  • nie chciałbym, żeby ktoś w łatwy sposób mógł skopiować dane z mojej bazy danych
  • zakładam, że ilość zapytań będzie mała, bo na forum branżowym takie pytania są raz na tydzień
  • konstrukcja ma być prosta więc raczej będę szedł dalej w swojej nauce do PHP tj. o ile to możliwe nie korzystać z JS, tylko taki prosty schemat no chyba, że JS będzie już koniecznym wymogiem wtedy będę zacznę się go uczyć
  • oczywiście open source, bo nie jestem korporacją tylko zwykłym śmiertelnikiem
  • zależy mi na wydajności i żeby sam DBMS nie był "obciążający" dla strony
  • ogólnie wszystko ma być proste i TOPORNE, szybkie i wydajne ;)
  • administrować i dodawać nowe rekordy będę... Ja, a znam tylko STANDARD SQL
  • za wzór raczej stawiałbym sobie: https://ekrs.ms.gov.pl/web/wyszukiwarka-krs/strona-glowna/index.html
  • -chodzi o to, żeby wyszukać coś z mniejszą dokładnością (kilka wyników wyszukiwania) i każdy dodatkowy parametr zmniejszał nam obszar wyszukiwania

I tu pojawia się kolejny problem. Chodzi o zdjęcia oraz pliki zawierające grafikę. Coś takiego chciałbym wprowadzić. Tutaj pytanie. Czy to już nie będzie raczej NoSQL?
No chyba, że zrobię kolumnę zawierającą odnośnik do zdjęcia, przy zidentyfikowanym przedmiocie. Będzie to mniej wygodne dla użytkownika, ale na chwilę obecną z kursów i książek nie wyczytałem, czy można umieścić obiekt w rekordzie, raczej kojarzy mi się to z NoSQL.

O ile projekt konceptualny mam, to chciałbym to raczej oprzeć o HTML/CSS, PHP i SQL (no chyba, że dałoby zamienić PHP na Python w jakiś sposób). Intuicyjnie pierwszy wybór padł na MySQL gdyż raczej nie będę potrzebował bajerów z Postgresa.

Wszystko robię "po godzinach" raczej w formie hobbystycznej oraz takiej pozytywistyczno-altruistycznej.

Pozdrawiam i jak zawsze z góry dziękuję za każde okruchy wiedzy oraz wskazówki.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)