it-swarm-eu.dev

co programátoři databází dělají?

Pokaždé, když jsem četl o programátorech Oracle atd., Jsem zmatený. Nevím, co přesně dělají.

Z mého porozumění musí aplikační programátoři vyvinout základní funkčnost. Knihovny, které používají, mohou pomoci při vývoji grafického uživatelského rozhraní nebo připojení k databázi, ale funkčnost, díky které je třeba tuto aplikaci naprogramovat a každou aplikaci odlišit (některé mohou být vylepšené verze jiných).

Není v této souvislosti programování databáze v zásadě vytvářením tabulky a nejsou tyto tabulky zpracovávány v reakci na příkazy SQL, které jsou vydávány aplikací, která je obvykle frontend? Takže je tvorba tabulky tak velká?

16
Thomas

Chcete-li opravdu ocenit, jaké databázové programátory opravdu potřebujete, musíte jít sami - zkusím to vysvětlit jiným způsobem.

Pro špatně informované možná se zdá, jako by v ideálním světě aplikační programátoři tak moc nedělali - berou požadavky a procesy, jak jsou napsány obchodními analytiky, a převádějí je do kódu, který programátoři nabízení.

Každý, kdo má zkušenosti s programováním, samozřejmě pochopí, že to tak nefunguje - v tuto chvíli ignorujeme skutečnost, že požadavky nikdy neurčují chování aplikace až do nejjemnějších detailů, existuje celá řada komplikací

  • Programátoři se musí rozhodnout, jak má být aplikace strukturována.
  • Přenesení požadavků na něco, čemu počítač rozumí, často není zdaleka triviální.
  • Programátoři si musí být vědomi důsledků různých možných přístupů k výkonu.
  • Jak programátoři získají zkušenosti s používáním své platformy výběru, stávají se zdatnější a poskytují kvalitnější kód rychleji.

(Toto je samozřejmě nesmírně omezený seznam, jen se snažím zachytit body, které mají paralely ve vývoji databáze.)

Vývoj databáze je skoro stejný - pro špatně informované to vypadá docela jednoduše, ale jakmile se více zapojíte, uvědomíte si specifické komplikace vývoje databáze:

  • Rozhodují o tom, jak má být databáze strukturována.
  • Složitější dotazy se často nemusí zdát triviální, než aby se překládaly z požadavků.
  • Vývojáři databází se musí zabývat výkonem databáze.
  • Musí se také zabývat udržováním integrity a dostupnosti dat.
  • A stejně jako vývojáři i databázoví programátoři získávají více dovedností ve všem, co dělají, jak se stávají zkušenějšími.

Stejně jako je vývoj aplikací naplněn skrytými úskalími (problémy s navlékáním atd.), Tak je vývoj databáze a často jsou důsledky klesající chyby těchto problémů velmi závažné (např. Ztráta dat nebo potenciální prostoje u všech aplikací využívajících databázi) .

Myslím, že programátoři si myslí, že s tím nic není („To nemůže programátor udělat?“), Že mezi rolemi je hodně překrývání a vyžadují podobné sady dovedností. Nepochybuji o tom, že kdokoli, kdo má schopnost být dobrým vývojářem, má také schopnost být dobrým databázovým programátorem v daném čase a zkušenostech, ale nikdo by neměl podceňovat hodnotu zkušeného databázového experta.

22
Justin

Databázoví programátoři dělají mnoho věcí. Nejprve navrhnou strukturu databáze tak, aby fungovala správně s počtem očekávaných záznamů. Konstrukční struktury, které fungují v pořádku pro několik tisíc záznamů, mohou způsobit, že databáze bude nepoužitelná u několika milionů záznamů. Musí se také ujistit, že data si časem udrží svou integritu a že data jsou chráněna před neoprávněnými změnami nebo krádeží. Musí důkladně rozumět normalizaci a kdy denormalizovat a proč. Musí pochopit výkon a jak zajistit integritu dat. Musí rozumět bezpečnosti a jak zabránit tomu, aby byla data odcizena nebo úmyslně změněna.

Provedou vyladění dotazů. Změnil jsem dotazy, které mi zabírají minuty. Změnil jsem proces, který trval více než 24 hodin, než jsem běžel na méně než 30 minut. Navrhují a udržují indexovací struktury, které vyvažují rychlost vkládání s rychlostí výběru.

Píšou složité dotazy, zejména hlášení. Já osobně jsem psal dotazy, které jsou dlouhé přes 1000 řádků kvůli složitosti požadavku. Stále museli a běhali rychle.

Vytvářejí datové sklady a doprovodné procesy ETL, které je podporují. Často potřebují psát procesy, aby přinesli data z jiných zdrojů, a musí přijít na to, jak mapovat pole z některých klientských databází na jejich, a ty se nikdy těsně neshodují v typu dat, velikosti dat, povinných polích, hodnotách vyhledávání, atd.

Musí se rozhodnout, jak refaktorovat, jak se mění databázové požadavky, aniž by došlo k poškození 100 000 000 záznamů, které již mají, a aniž by se zastavilo používání databáze. Velké databáze mohou zahrnovat tisíce tabulek a uložených proců a uživatelem definované funkce. Pochopení takové struktury vyžaduje čas a dovednosti a pochopení toho, co bude ovlivněno změnami a jak.

Navrhují způsoby, jak auditovat data z důvodů regulace a obnovy. Poté navrhnou způsoby, jak obnovit data z těchto auditních tabulek. Zkoumají problémy s daty, aby zjistili, zda byl problém způsoben chybou v procesu importu, chybným souborem poskytnutým jinými uživateli, chybným vložením/aktualizací z aplikace nebo neoprávněným přístupem. Najdou způsoby, jak opravit špatná data, když aplikační programátoři nechají hackerům zaútočit.

Často se podílejí na převodu dat z jednoho systému do nového systému. Někdy se jedná o přesun dat z jednoho produktu COTS na nový, který společnost právě zakoupila. Stejně jako dovozy popsané výše i zde se jedná o složité procesy, jejichž plánování a provedení může trvat měsíce a které vyžadují rozsáhlé testování. Na rozdíl od importu nemusí mít databázový programátor žádnou kontrolu nad různorodými datovými strukturami.

14
HLGEM

Koncem 90. let jsem internoval jako databázový programátor pro výrobní data 24hodinové oplatkové módy. Nevím, jak typické byly moje povinnosti, ale největší část pro mě byla, když byla nutná změna v kódování pole nebo schématu, musel jsem se ujistit, že změna byla bezproblémová ve výrobě. V podstatě to znamenalo, že bych jim řekl, aby upgradovali svou klientskou aplikaci, což by pro ně udělali v době, která jim bude vyhovovat, a očekávalo se, že se s novými změnami okamžitě vrátí.

To bylo mnohem více zapojeno, než jsem čekal. Převodní skripty a klientský software musely být důkladně otestovány. Dvě sémanticky identické, ale nekompatibilní sady dat musely být často synchronizovány, dokud nebyl přepnut každý. Někdy bylo nutné provést přepínač ve více pečlivě naplánovaných fázích, aby byl bezproblémový. Nebylo neobvyklé připravit se na týdny na přechod, který se stal v podstatě okamžitě.

Pokud databázový programátor dělá svou práci správně, pozorovatelům se bude zdát, že je jeho práce velmi snadná. Nejsem překvapen, že mnoho lidí opravdu neví, co dělají.

8
Karl Bielefeldt

To je docela jednoduché. Pokud jste slyšeli o vzoru MVC, měli byste znát rozdíl mezi ovladači a modely. Například pokud píšete ERP), pak si představte, že v ovladači řeknete modelu „retrieveCashFlow“ a váš model volá uložený program v databázi. Tento uložený program se stará o všechny připojte se, filtrujte, objednávejte atd. a získaná zpracovaná data získáte zpět. Ve vašem kontroléru musíte věci spojit.

Pokud máte pochybnosti o uložených procedurách, podívejte se na toto: proč používat uložené procedury?

Jednoduše řečeno: vývojáři databází zapisují uložené programy (procedury a funkce) pro vaši aplikaci, aby se postarali o M v MVC (nebo o obchodní logiku, pokud nepoužíváte mvc).

2
Adam Arold

Oracle není jen databáze, ale kompletní programovací prostředí, včetně návrhářů formulářů a sestav. Jako programátor Oracle naprogramujete kompletní uživatelské aplikace. Kódování databáze, na které odkazujete, by často prováděli specializovaní administrátoři databází (DBA).

Sybase Myslím, že je další s podobným programovacím prostředím.

Jiné databáze se mohou omezit na „pouze“ umožňující definování a provádění zpráv, zatímco jiné nemusí nabídnout žádnou formu nebo zařízení pro návrh/provádění zpráv vůbec.

2
Marjan Venema

Řekl bych, že vývojář databáze je zodpovědný za jednu nebo více z následujících

  • Design, to zahrnuje vytváření (nebo spíše definování vztahů) tabulek
  • Optimalizace, nastavení správných indexů, výběr klíčů, výběr správných datových typů
  • Funkce, psaní užitečných funkcí pro použití v dotazech
  • Procedury, psaní aplikační logiky, která je pevně spojena s databázovou vrstvou.
  • Vytváření spouštěcích funkcí reagujících na události
  • Produkční specifikace výše.

V závislosti na dotyčném RDBMS by to mohlo zahrnovat úkoly jako

  • Vytváření sestav a formulářů
  • Vytváření toků pro import/export dat

Podívejte se na tento seznam odpovědností

2
Peter Lindqvist