Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SQL vs NoSQL różnice.
NickOver
post 2.02.2015, 20:24:34
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cześć smile.gif

Chciałbym się was zapytać o różnice między bazami SQL a noSQL. Trochę poczytałem i mam już wiedzę teoretyczną, jednak interesują mnie praktyczne informacje. Tz. różnice w szybkości czego nie należy robić na którejś z baz (i dlaczego).

Liczę na ciekawą dyskusje, dużo informacji i pozdrawiam smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 2.02.2015, 21:16:34
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Podziel się jakimiś ciekawymi materiałami o NSQL jak masz coś, chętnie człowiek poczyta coś do poduszki haha.gif
Go to the top of the page
+Quote Post
by_ikar
post 3.02.2015, 08:28:10
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Zależy w przypadku jakiej bazy jest porównanie. Przykładowo w mongo podoba mi się to, że mogę tworzyć pola (kolumny) które zawierają inny obiekt (json) lub zawierają tablice. Potem po takiej tablicy mogę wyszukiwać, mogę to agregować, grupować etc. Ale są i tego minusy, różnego rodzaju joiny to jest lekki problem w takim mongo, w porównaniu do mysqla. Odpowiednio zaprojektowana baza rozwiązuje taki problem, ale trzeba się przestawić. Ale np taki redis, który też jest swego rodzaju nosqlem, nie ma IMO sobie równych. Całkiem niedawno jeszcze dodali eventy, dzięki czemu możesz nasłuchiwać przykładowo na eventach które są wyzwalane kiedy rekord któremu ustawiłeś czas życia zostanie sflushowany i odpowiednio na to reagować.

Są zalety i są wady. Ostatnio dużo pracuje na mongo i podoba mi się ta nie płaska struktura.

Ten post edytował by_ikar 3.02.2015, 08:31:30
Go to the top of the page
+Quote Post
mmmmmmm
post 3.02.2015, 08:52:29
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


@by_ikar
Te typy to postgreSQL ma już chyba od dawna. JSON od wersji 9.2, czyli od wrzesnia 2012.
Go to the top of the page
+Quote Post
Crozin
post 3.02.2015, 08:55:02
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dosyć stary, ale wartościowy artykuł: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Go to the top of the page
+Quote Post
by_ikar
post 3.02.2015, 11:20:41
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat(mmmmmmm @ 3.02.2015, 08:52:29 ) *
@by_ikar
Te typy to postgreSQL ma już chyba od dawna. JSON od wersji 9.2, czyli od wrzesnia 2012.


A mogę po takim jsonie wyszukiwać ? Mogę go agregować, grupować itp ? Albo czy mogę założyć indeksy na jakieś pole w tym jsonie?
Go to the top of the page
+Quote Post
mmmmmmm
post 3.02.2015, 14:36:58
Post #7





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


@by_ikar:
  1. /* funkcje pomocnicze */
  2. CREATE FUNCTION json(text, text) RETURNS json AS
  3. $$
  4. SELECT ('{"' || $1 || '":"' || $2 ||'"}')::JSON
  5. $$
  6. LANGUAGE sql IMMUTABLE STRICT
  7. COST 1;
  8.  
  9. CREATE FUNCTION json_add(json, json) returns json AS
  10. $$
  11.  
  12. SELECT ('{' || string_agg(to_json("key") || ':' || "value", ',') || '}')::json
  13. FROM
  14. (
  15. SELECT KEY, value::TEXT FROM json_each($1)
  16. UNION
  17. SELECT KEY, value::TEXT FROM json_each($2)
  18. ORDER BY KEY
  19. )sub
  20. $$
  21. LANGUAGE sql IMMUTABLE STRICT
  22. COST 1;
  23.  
  24. /* tabela */
  25. CREATE TABLE test_87
  26. (
  27. id serial PRIMARY KEY,
  28. pole_json json
  29. )
  30. ;
  31.  
  32. /* index - w 1. zapytaniu z niego korzysta */
  33. CREATE INDEX idx_pole_json ON test_87 (cast(pole_json->'nazwisko' AS text));
  34.  
  35. /* wartosci */
  36. INSERT INTO test_87(pole_json) VALUES
  37. ('{"imie":"ala", "nazwisko":"nowak"}'::json),
  38. ('{"imie":"ela", "nazwisko":"kowalska"}'::json),
  39. ('{"imie":"tomek", "nazwisko":"wisniewski"}'::json),
  40. ('{"imie":"darek", "nazwisko":"grzelak"}'::json),
  41. ('{"imie":"marek", "nazwisko":"nowak"}'::json);
  42.  
  43. /* 1. wybranie po nazwisku */
  44. SELECT pole_json->'imie', pole_json->'nazwisko' FROM test_87 WHERE (pole_json->'nazwisko')::text='"nowak"';
  45.  
  46. /* 2. update - dodanie plci do JSONa*/
  47. UPDATE test_87 SET pole_json=json_add(pole_json, json('plec', case when (pole_json->'imie')::text LIKE '%a"' then 'k' else 'm' end))
  48.  
  49. /* 3. grupowanie */
  50. SELECT (pole_json->'plec')::text, count(*), string_agg((pole_json->'imie')::text, ',') FROM test_87 GROUP BY 1





Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 09:33