it-swarm-eu.dev

Potřebuje DBA vědět, jak kromě jazyka SQL programovat v systémovém jazyce?

Do jaké míry musí správce databází kromě „jen SQL“ znát programovací jazyky na úrovni systému nebo aplikace (například .NET nebo PHP)?

Pro účely této otázky není pro tuto odpověď uvažována žádná konkrétní verze standardu SQL (SQL ANSI 86, SQL ISO 87, SQL: 2008), protože otázka se týká jazyků stolních počítačů nebo serverů mimo oblast SQL.

20
p mac

Záleží.

Ve velkém obchodě možná ne proto, že máte k dispozici tisíce serverů a jsou k dispozici vaše nástroje. V malém obchodě budete pravděpodobně potřebovat více znalostí, protože máte širší působnost.

Skriptovací jazyky (například PowerShell, cmd.exe) jsou vždy užitečné pro monitorování, nasazení atd. Často jsem měl nějaké skripty Perlu, které jsem musel udržovat (jen asi). Pak existují různé balíčky ETL, o kterých byste měli očekávat.

Řekněme, že většina databází DBA (které znám) bude schopna psát základní věci CLR nebo dobře znát PL/SQL. Pro mě je dělicí čára známá o širších vzorcích nebo architektuře .net nebo Java. Nepotřebuji to jako vývojář DB nebo DBA. Stejným způsobem, že .net nebo PHP nebo Java Opice nerozumí designu databáze nebo architektuře nebo kódu, stejně jako já).

Osobně jsem se rozhodl přestat pronásledovat nejnovější nebo nejlepší klientský jazyk před lety a soustředit se na práci s databází. To z mě neznamená „neprogramátora“: Musel bych se to znovu naučit, kdybych musel.

25
gbn

Znal jsem DBA, aby se zbavili malých nebo žádných programovacích dovedností, ale každá DBA, kterou jsem kdy považoval za dobrý, měla alespoň rozumné programovací schopnosti. Jeden nebo dva, o kterých jsem přemýšlel, měli značné vývojové zázemí a byli docela dobrými vývojáři. Existuje spravedlivéčástka z open-sourcetooling napsané lidmi, kteří pracují jako DBA ve své denní práci a IIRC ten, kdo napsal TOAD, pracoval jako DBA.

V závislosti na roli můžete najít psaní nebo ladění dotazů, psaní skriptů pro automatizaci úkolů nebo konzultace ohledně návrhu aplikace. V některých případech je možné pouze zabalit spoustu serverů prostřednictvím OEM nebo jiného monitorovacího nástroje.

Moderní „podniková“ vývojová prostředí, jako je .Net nebo Java), jsou dostatečně komplexní, aby si vývojář mohl udělat kariéru, aniž by se na ně specializoval. Jako DBA, zejména ve vývojovém prostoru, má pracovní znalost C # nebo Java nemusí být na škodu, ale pravděpodobně nebudete trávit spoustu času ve skutečnosti kódováním v nich).

Pravděpodobně získáte více ujetých kilometrů z jakéhokoli skriptovacího nástroje používaného na vaší platformě, i když mnoho systémů vystavuje rozhraní API .NET, Java, COM nebo webové služby. Pokud potřebujete něco proti těmto rozhraním API kódovat, budete potřebovat alespoň základní pracovní znalosti něčeho, co dokáže dané API spotřebovat. Pokročilé dovednosti architektury aplikací však k tomu obvykle nejsou nutné.

Někteří vývojáři budou mít silné databázové dovednosti, ale iracionální strach z databází je ve vývojových kruzích docela běžný. Mnoho vývojářů také nikdy nedostane hlavu kolem paradigmatu „set operations“, který je základem SQL. Jako Dev DBA se můžete setkat s důsledky tohoto problému a možná budete muset zasahovat do kódu uložené procedury, abyste vyřešili problémy s výkonem.

ETL a nástroje obklopující databázi mohou také spadat do pravomoci DBA. Viděl jsem několik inzerovaných rolí DBA, které podle všeho zahrnují značné množství back-end vývojových prací. To bude nejčastější u menších společností. Jeden nedávný plakát chtěl integrovat vlastní metriky do Oracle Enterprise Manager, který má k tomu API rozhraní plugin. Je docela běžné vidět požadavky jako je tento, a v zásadě jediný způsob, jak toho dosáhnout, je napsat nějaký lepicí kód.

V I.T. pracuje spousta 'Tools Guys'. a i přes parochalismus mohou získat užitečnou práci. Když však nástroje vyčerpají Steam, často jediným způsobem, jak něco udělat, je vlastně napsat trochu kódu, který to provede. To je místo, kde programovací dovednosti oddělují muže od chlapců.

Neřekl bych obvykle, ale nikdy to neuškodí. SQL Server je dostatečně velký, že si nemyslím, že jeden člověk zvládne celý produkt. Byl jsem DBA od SQL Server 4.2 a považuji se za odborníka ve většině oblastí, ale přiznávám, že bych nemohl psát MDX dotaz bez google na dosah ruky na každém kroku.

Snažím se říci, že nemůžete být odborníkem na všechno. Být opravdu dobrý DBA znamená, že byste měli být skvělí v T-SQL, ale pravděpodobně nejste velmi dobrí v .NET, nebo alespoň ne tak efektivní jako ostatní, kteří se mohou soustředit na .NET.

Powershell je dobré vědět, stejně jako in-a-out SSIS. Kromě toho nechte ostatní vývojové jazyky vývojářům.

6
datagod

Byla to moje zkušenost, že zatímco většina DBA má nějaké vývojové zázemí, není vůbec nutné psát kód. Opravdu dobré DBA, se kterými jsem pracoval, měly rozsáhlé znalosti různých témat, včetně skriptování Shell, operačních systémů a specializovaných aplikačních znalostí (např. PeopleSoft).

Měl jsem instruktora Administrace databází ve střední škole, který nám dal seznam otázek, na které by měl dobrý (Oracle) DBA být schopen odpovědět: (Budu jen posílat některé z vrcholů ze seznamu asi 40) )

  • Proč Oracle automaticky nevytváří indexy ve sloupcích cizího klíče?
  • Kdy byste při rušení omezení použili klauzuli KEEP INDEX?
  • Kdy byste použili IOT vs. běžný stůl?
  • Je vhodné umístit tabulky a indexy do samostatných tabulkových prostorů?
  • Jaký je rozdíl mezi datovými typy VARCHAR a VARCHAR2?
  • Je lepší prosadit obchodní pravidlo pomocí spouštěče nebo omezení?
  • Kdy byste chtěli použít automatické přidělení vs. pevná velikost segmentu?
  • Kdy byste použili externí tabulku versus tabulku haldy vs. tabulku B stromů?
  • Jak často byste měli čistit koš?
  • Jaké strategie byste doporučili pro zálohování tabulky s oddíly? Co takhle rozdělený index?

(Oracle) DBA musí vědět, že tyto věci jsou efektivní. Většina vývojářů, které znám (kteří kódují proti Oracle), by bylo těžké odpovědět na jednu nebo dvě z nich správně.

5
Aaron

Pokud jste DBA, pravděpodobně pracujete v oblasti výkonu a bezpečnosti (mimo jiné). To by mohlo zahrnovat profilování a pomoc s laděním klientských aplikací, na kterých vývojáři pracují. Určitě by tedy nebylo na škodu znát základy jazyků, které vývojáři používají, a jak propojit databázový server. Pro SQL Server je to pravděpodobně .NET. Pro MySQL pravděpodobně nějaká kombinace php nebo Java.

Pokud je například server tlačen na podprocesy klientů, pomůže vývojářům informovat, že by měli používat instance singleton pro své ObjectDataSources, aby mohli znovu použít jediné databázové připojení. A také se ujistěte, že správně používají parametrizované dotazy k omezení injekce SQL. Věci jako tyto.

Nebudete dělat žádné programování ve smyslu vývoje klientských aplikací, pokud jste přísně DBA, ale měli byste vědět, jak fungují (obecně řečeno).

5
db2

Podívejme se, Oracle používá PL/SQL, který je opravdu podobný Pascalu (jazyk, který se používal k výrobě kódu aplikace pro stolní počítače, ale který v posledních letech upadl a vývojáři se přesunuli do Delphi, z nichž někteří šli odtud do .NET) a Oracle nyní také podporuje některé aktivity Java=) pro některé činnosti. Protože Oracle DBA musí znát všechny aspekty systému, aby byl dobře oceněn, řekl bych, že znáte Pascala a Java by byl požadavek.

TSQL má schopnost psát spravovaný kód .NET (CLR) pro některé funkce na serveru Sql, a proto by o tom pravděpodobně potřebovala dobrá databáze DBA (ale není vždy možné ji použít) ve starších verzích, takže mnoho databází má tendenci se vyhýbat této sadě funkcí podle mých zkušeností).

Takže to jsou velké dva a ty, na které většina lidí odkazuje, když se ptají, když se ptáte. Neznám všechny ostatní motory, abych věděl, co dělají a nepodporují, ale vím, že mnoho dalších má kromě jazyka SQL také jazykovou integraci.

4
jcolebrand