[python] par dotazu od zacatecnika v SQL

Petr Messner petr.messner na gmail.com
Pátek Prosinec 29 01:31:32 CET 2017


Ad MySQL vs PostgreSQL - záleží na use case. Pro 99 % programátorů možná
bude PostgreSQL lepší po všech stránkách, ale třeba v Seznam.cz nebo
Facebooku to mohou oprávněně vidět jinak.

https://eng.uber.com/mysql-migration/
https://ayende.com/blog/175137/re-why-uber-engineering-switched-from-postgres-to-mysql
https://code.facebook.com/posts/190251048047090/myrocks-a-space-and-write-optimized-mysql-database/

Můj osobní komentář:

- PostgreSQL staví na nějakých předpokladech, jak by to ideálně mělo
fungovat, např. že kešování nebo kompresi má řešit operační systém a ne
databáze. Bohužel zas tak růžové to ale v praxi není :)
- rozdílný přístup k replikaci
- MySQL je zdá se taková víc/snadněji "hackable" - opět něco, co 99 % lidí
nevyužije, ale někdo ano
- i ten hloupý MyISAM, kterému byste se měli vyhnout, pokud má MySQL
fungovat jako "databáze", je někdy super, pokud místo "databáze"
potřebujete spíš "storage"
- a i kdyby obě databáze měly všechny metriky stejné, tak zahodit roky
zkušeností s produkčním provozem jedné databáze a jen tak ze srandy
přehodit terabajty/petabajty dat do jiné databáze asi taky není úplně ono

Nicméně co z toho je relevantní pro začátečníka :)

Ještě pár poznámek k ostatním příspěvkům:

- jestli MySQL není dost ACID, tak asi máte špatně nastavený isolation
level - "serializable" není výchozím nastavením. Což ostatně platí i pro
PostgreSQL.
- někdo tu zmiňoval, že je sqlite díky možnosti běžet z RAM vhodná na
testy; no a je snad problém si pro testy spustit v ramdisku (tmpfs) i tu
PostgreSQL/MySQL? :)
- někoho, kdo nezná základy SQL (tak, že typické use cases není schopen
vyjádřit v SQL), bych asi ani nepovažoval za programátora, leda hodně hodně
juniorního (nebo nějakého "Django ninju"). I na těch horších školách se
aspoň nějaké SQL učí.
- na druhou stranu SQL není zas tak úplně triviální, když se to má člověk
naučit rozumně, tak na VŠ je to celý předmět minimálně na jeden semestr.
- kéž by všechny softwarové projekty byly alespoň tak dobře otestované jako
SQLite :) https://www.sqlite.org/testing.html

A pár poznámek mimo :) Aneb není vše jen o MySQL a PostgreSQL.

- třeba SQL databáze ani není potřeba :) Alternativ je spousta, od Redisu
přes MongoDB a ElasticSearch až po nějaké Cassandry a HBase, speciality
typu Druid.io a kdoví co ještě. Některé z nich je možné číst i přes SQL
dotazy. Dneska už i AWS S3 má pseudo-SQL rozhraní.
- pak jsou cloudové databáze (včetně "serverless"), některé z nich mohou
fungovat i jako drop-in náhrada PostgreSQL nebo MySQL.
- my třeba v práci používáme primárně MongoDB a SQL nám nějak nechybí :) Na
jednu stranu člověk musí trochu vědět, co dělá (částečné povědomí o
distribuovaných systémech dost pomůže), na druhou stranu právě všechny
tyhle blbosti typu MySQL vs. PostgreSQL a SQL vs. ORM nemusím řešit :) A k
tomu mám zadarmo mnohem lepší API a provozní i výkonostní charakteristiky.
A kdyby mi nějak extra scházelo SQL pro nějakou analytiku a reportování,
tak možnosti, jak to řešit, jsou. MongoDB je už třeba docela klasika v
node.js světě.

PM


Dne 28. prosince 2017 8:51 starenka . <starenka0 na gmail.com> napsal(a):

> >> Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
> stále překonává třeba ten Postres.
>
> Muzu se zeptat v cem?
> -----
> 'aknerats'[::-1]
>
> On Dec 28, 2017 00:22, "Daniel Milde" <daniel na milde.cz> wrote:
>
> Já bych ještě dodal, že ani Mysql/MariaDB/PerconaDB není žádná hračka :)
>
> Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
> stále překonává třeba ten Postres.
>
> Jinak k dotazu tazatele: z konektorů bych doporučil PyMysql a na
> samotnou tvorbu dotazů buď:
>
> 1) SQLAlchemy pokud budeš dělat v aplikaci i zápisy a většinu času budeš
> potřebovat data celých entit/modelů.
>
> nebo
>
> 2) SqlPuzzle pokud se budeš jen dotazovat a budeš potřebovat hodně
> specifické dotazy, které je vhodné psát v něčem víc blízkém SQL.
>
> Dan
>
>
> Dne 27.12.2017 v 13:50 Matěj Cepl napsal(a):
> > On 2017-12-27, 11:33 GMT, zu1234 wrote:
> >> Jsem stará konzerva a myslím si že začátečník by měl začínat jednoduše.
> >> Vyhnul bych se SQLAlchemy a ORM.
> >> Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.
> > Souhlas, pro začátečníky bych doporučil
> > https://docs.python.org/2.7/library/sqlite3.html a pak k tomu
> > nějaký opravdový kurs SQL (když dáte do svého oblíbeného
> > vyhledávače SQL vypadne jich několik). DBAPI popsaných zde pro
> > SQLite podporuje většina databázových konektorů pro Python a pro
> > začátek to stačí. Pak jak se bude učit hlouběji, bude potřebovat
> > nějakou opravdovou databázi (tj. ne hračky jako SQLite nebo
> > MySQL, já mám oblíbený PostgreSQL), ale to může pro úplný
> > začátek počkat.
> >
> > SQLAlchemy nebo nějaké ORM jsou dobré, ale bez znalosti SQL se
> > podle mého nikdo neobejde (uznávám, že v oblasti SQL jsem spíše
> > laik).
> >
> > Matěj
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20171229/e53eada5/attachment.html>


Další informace o konferenci Python