Več

Ustvarite več novih oblik datotek z uporabo informacij v tabeli


Upam, da bom ustvaril skript, ki bo ustvaril novo obliko datoteke za vsak zapis v tabeli. Moja izkušnja s pythonom je omejena in že nekaj časa nisem uporabljala, zato težko začnem. Moja tabela vsebuje polja za ID, zemljepisno dolžino, širino, razdaljo in smer.

Za vsak zapis moram:

  • ustvari novo obliko datoteke z imenom datoteke, ki se ujema s poljem ID
  • ustvarite vrsto točk v novo ustvarjeni datoteki oblike v korakih po 1 meter vzdolž črte, ki je določena z zemljepisno dolžino / širino (to je začetna točka), razdaljo in nosilnimi polji.

Tu je moja začetna koda:

import arcpy table = "C: /folder/project.gdb/transect_table" polja = ["TRANSECT_ID", "LATITUDE", "LONGITUDE", "Heading", "Distance"] shp_path = "C: / folder / output_shapefiles" z arcpy.da.SearchCursor (tabela, polja) kot kazalec: za vrstico v kazalcu: arcpy.CreateFeatureclass_management (shp_path, kurzor [0])

Ta bit kode ustvarja zbirko praznih datotek oblik z imeni datotek, ki se potegnejo iz polja ID tabele.

Ali lahko kdo predlaga pristop k zapolnjevanju datotek oblik s točkami?

Na podlagi prispevkov radouxjuja sem kodo posodobil na naslednje (upoštevajte, da v gdb ustvarjam razrede funkcij v nasprotju z shapefile; moji shapefiles so se zaklepali pri ustvarjanju točk, vendar se zdi, da se razredi funkcij izogibajo tej težavi ):

import arcpy import math path = "C: /folder/Output_FeatureClass.gdb" table = "C: /folder/Transects.gdb/table" fields = ["TRANSECT_ID", "LITITUDE", "LONGITUDE", "Heading", " Razdalja "] z arcpy.da.SearchCursor (tabela, polja) kot kazalec: za vrstico v kazalcu: arcpy.CreateFeatureclass_management (pot, kazalec [0]," Točka "," "," "," "," C: / mapa / WGS1984.prj ") z arcpy.da.InsertCursor (pot +" / "+ kurzor [0], [" OBLIKA @ XY "]) kot vložni kazalec: za i v obsegu (vrstica [4]): xy = [ (vrstica [2] * i * math.sin (vrstica [3]), vrstica [1] * i * math.cos (vrstica [3])),] insertcursor.insertRow (xy)

To deluje precej dobro, saj se vsi moji razredi funkcij ustvarjajo in so zapolnjeni z ustreznim številom točk. Vendar razdalja med točkama ni želeni 1 meter (bližje je 15.000 km!). Sumim, da bi lahko imel težave z mešalnimi enotami, saj so vhodni položaji v stopinjah, odmik med točkami pa v metrih, vendar nisem povsem prepričan.

Kakšen predlog?


Nisem testiral, vendar bi moralo biti nekaj takega kot spodaj. Predvidevam, da je vaš naslov 0 proti severu in v radianih ter da ste v predvidenem koordinatnem sistemu z enotami v metrih (idealno Mercator).

import arcpy import math table = "C: /folder/project.gdb/transect_table" fields = ["TRANSECT_ID", "LATITUDE", "LONGITUDE", "Heading", "Distance"] shp_path = "C: / folder / output_shapefiles "z arcpy.da.SearchCursor (tabela, polja) kot kazalec: za vrstico v kazalcu: arcpy.CreateFeatureclass_management (shp_path, kurzor [0]," POINT ") z arcpy.da.InsertCursor (shp_path +" / "+ kurzor [ 0], ["SHAPE @ XY"]) kot vstavite kazalec: za i v obsegu (vrstica [4]): insertcursor.insertRow ((vrstica [2] + i * math.sin (vrstica [3]), vrstica [1 ] + i * math.cos (vrstica [3],))

če je vaš naslov v stopinjah, boste potrebovali pretvorbo iz stopinje v radian (math.radians (vrstica [3])


Z R tabelo manipuliraj z atributom shapefile

To vprašanje sem objavil na borzi skladov GIS, vendar ne vidim veliko prometa.

Sem uporabnik GIS-a, ki že nekaj let uporabljam R za statistiko in navdušen sem, ko vidim veliko novih zmogljivosti GIS-a (raster, shapefiles, rgdal itd.).

Veliko sem manipuliral z bazami podatkov in tabelami v R, zato je dodajanje in odstranjevanje atributov iz shapefiles močan potencial.

Upam, da pogrešam le tisto, kar je zunaj, vendar se mi zdi, da ne najdem dobre metode za dodajanje ali odstranjevanje atributov iz tabele atributov shapefile.

Ali lahko kdo iz Overflowa odgovori na mojo objavo v GIS? Ali mi lahko svetujejo, kako spraviti tabelo atributov seznama v podatkovni okvir in nazaj, da zamenjam trenutno tabelo atributov?


Razlika med posamezno tabelo z ravnimi datotekami in sorodno tabelo z več datotekami

Začnimo s temeljnim konceptom vrtilne tabele. Iz ene preglednice je ustvarjena ena tabela »flat-file«. Povezane tabele z več datotekami se ustvarijo iz dveh ali več preglednic, ki so med seboj povezane z edinstvenim ključnim poljem.

V naši vzorčni preglednici vam orodja vrtilne tabele omogočajo, da iz ene tabele (Master1) izvlečete številke licenc in imena gonilnikov, preostale podatke pa iz druge tabele (kršitve). V tem primeru je edinstveno ključno polje številka licence, ki mora obstajati v vseh tabelah, s katerimi delate za ta poročila.

Zaradi tega vrtilne tabele omogočajo manjše preglednice (torej manj polj) in odpravljajo odvečne podatke. Poročila so učinkovitejša in enostavnejša za zbiranje. V starejših različicah ste na primer morali vnesti ime stranke, naslov, mesto, državo, poštno številko in telefonsko številko v odjemalsko preglednico, preglednico izdelkov, preglednico prodaje, preglednico zalog in še več, glede na to, koliko podatkov morali ste izslediti, kar je bilo povezano s temi podatki. Z orodji vrtilne tabele enkrat vnesete podatke, nato pa tabele povežete skozi skupno, edinstveno polje. Vse naredi Excel.

Nadaljnje usposabljanje za Excel

Če želite poglobiti obvladovanje Excela, obstajajo številni spletni tečaji za razširitev vašega znanja. Tukaj so naši najboljši izbori za začetek:


Vstavljanje vrtilne tabele

Na listu z informacijami o plačilu se prepričajte, da je kazalec nekje v tabeli. Pojdi nazaj na Vstavi na zavihku traku in kliknite Vrteča miza (to je prva ikona).

S kazalko znotraj ene od tabel izberite Vstavi & gt vrtilno tabelo

Pogovorno okno, ki se prikaže, mora pravilno prepoznati tabelo in izbrati, da bo vrtilna tabela na novem delovnem listu. Na dnu kliknite potrditveno polje za Te podatke dodajte v podatkovni model. Nato kliknite v redu.

Dodajanje podatkov v podatkovni model je tisto, kar omogoča povezave, da delujejo

Zdaj boste na novem delovnem listu imeli vrtilno tabelo, na desni strani zaslona bo podokno z nalogami, trak pa bo prikazal zavihek Analiziraj.

V podoknu opravil so prikazane tabela in polja samo aktivnega lista, zato kliknite VSE da si ogledate vse tabele, ki ste jih ustvarili. Toda preden jih lahko uporabimo, jih moramo povezati med seboj, kar pomeni ustvarjanje odnosov. Kliknite Odnosi na traku.

Vzpostavitev razmerij tabel

S klikom na ta gumb se prikaže pogovorno okno Upravljanje odnosov. Kliknite Novo in prikaže pogovorno okno Ustvari razmerje. Ustvarili bomo dve relaciji z uporabo polja Order # kot povezovalca.

Na spustnih seznamih izberite Informacije o plačilu za mizo in ob njej izberite Naročilo št. s spustnega menija Stolpec. V drugi vrstici izberite Customer_Info s spustnega seznama Sorodna tabela in zraven njega izberite Naročilo št. s spustnega seznama Povezani stolpec.

Obstajajo tri tabele, zato ustvarite dva razmerja

To pomeni, da sta tabeli Payment_Info in Customer_Info povezani, kadar imata ujemajoči se številki naročil.

Kliknite v redu, in to razmerje vidimo v polju Upravljanje odnosov.

Ponovite ta postopek, da ustvarite razmerje, ki združi Payment_Info z Order_Info, tudi s pomočjo polja # Order. Polje Upravljanje odnosov bi moralo biti zdaj videti tako:

V pogovornem oknu Upravljanje odnosov bodo prikazani odnosi, ki jih ustvarite

Upoštevajte, da med tabelama Order_Info in Customer_Info ni treba ustvariti razmerja, saj se jim samodejno pridruži tabela Payment_Info.

Kliknite Zapri na dnu polja. Zdaj lahko polja končno povlečemo v vrtilno tabelo.


Nastavitev imenskih prostorov DFS za razvrščanje več datotečnih sistemov

Imenske prostore DFS lahko uporabite za združevanje več datotečnih sistemov v en imenski prostor. V primeru, ki sledi, se domenski imenski prostor (example.com corp) ustvari na dveh strežnikih imenskega prostora, pri čemer se konsolidirajo delnice datotek, shranjene v več datotečnih sistemih Amazon FSx (finance, trženje, prodaja, domači_direktoriji). To vašim uporabnikom omogoča dostop do skupnih datotek s skupnim imenskim prostorom. Glede na to jim ni treba navesti imen DNS datotečnega sistema za vsak datotečni sistem, ki gosti datoteke.

Ti koraki vas vodijo skozi ustvarjanje enega imenskega prostora (example.com corp) na dveh strežnikih imenskega prostora. V imenskem prostoru nastavite tudi štiri skupne rabe datotek, pri čemer vsak pregledno preusmerja uporabnike v skupne rabe, ki gostujejo v ločenih datotečnih sistemih Amazon FSx.

Združevanje več datotečnih sistemov v skupni imenski prostor DFS

Če še nimate zagnanih strežnikov imenskega prostora DFS, lahko z uporabo predloge AWS CloudFormation AWS zaženete par visoko razpoložljivih imenskih strežnikov DFS. Za več informacij o ustvarjanju sklada AWS CloudFormation glejte Ustvarjanje sklada na konzoli AWS CloudFormation v Uporabniški priročnik za AWS CloudFormation.

Povežite se z enim od strežnikov imenskega prostora DFS, zagnanim v prejšnjem koraku, kot uporabnik v Pooblaščeni skrbniki AWS skupino. Za več informacij glejte Povezava z vašim primerkom sistema Windows v Navodila za uporabo Amazon EC2 za primerke sistema Windows.

Odprite konzolo za upravljanje DFS. Odprite Začni meni in zaženi dfsmgmt.msc. S tem se odpre orodje GUI za upravljanje DFS.

Izberite Akcija potem Nov imenski prostor, vnesite ime računalnika prvega strežnika imenskega prostora DFS, za katerega ste zagnali Strežnik in izberite Naslednji.

Za Ime, vnesite v imenski prostor, ki ga ustvarjate (na primer corp).

Izberite Uredi nastavitve in nastavite ustrezna dovoljenja glede na vaše zahteve. Izberite Naslednji.

Pustite privzeto Imenski prostor, ki temelji na domeni izbrano možnost, pustite Omogočite način Windows Server 2008 možnost in izberite Naslednji.

Način Windows Server 2008 je najnovejša razpoložljiva možnost za Imena prostorov.

Preglejte nastavitve imenskega prostora in izberite Ustvari.

Z novo ustvarjenim imenskim prostorom, izbranim pod Imenski prostori v navigacijski vrstici izberite Akcija potem Dodajte strežnik imenskega prostora.

Vnesite ime računalnika drugega strežnika imenskega prostora DFS, za katerega ste zagnali Strežnik imenskega prostora.

Izberite Uredi nastavitve, nastavite ustrezna dovoljenja glede na vaše zahteve in izberite v redu.

Odprite kontekstni meni (z desno miškino tipko) za imenski prostor, ki ste ga pravkar ustvarili, izberite Nova mapa, vnesite ime mape (na primer finance za Imein izberite v redu.

Vnesite ime DNS v datotečni skupni rabi, na katero želite, da mapa DFS Namespace kaže nanjo v obliki UNC (na primer fs-0123456789abcdef0.example.com finance) za Pot do cilja mape in izberite v redu.

Če delež ne obstaja:

Izberite Da da ga ustvariš.

Iz Ustvari skupno rabo pogovorno okno, izberite Brskaj.

Izberite obstoječo mapo ali ustvarite novo mapo pod D $in izberite v redu.

Nastavite ustrezna dovoljenja za skupno rabo in izberite v redu.

Iz Nova mapa pogovorno okno, izberite v redu. Nova mapa bo ustvarjena pod imenskim prostorom.

Ponovite zadnje štiri korake za druge mape, ki jih želite dati v skupno rabo v istem imenskem prostoru.


Brskaj po podatkih

Ta nabor podatkov je bil nazadnje posodobljen na LINZ Data Service 26. junija 2021.

Ta nabor podatkov vsebuje informacije o naslovu (razen lastništva), kadar obstaja povezava z enim ali več primarnimi paketi.

Evidenca lastništva je evidenca lastnikov nepremičnin, pravnega opisa ter pravic in odgovornosti, ki so vpisane v naslovu.

Ta nabor podatkov ne vsebuje nobenih podatkov o lastništvu, tako da jih je mogoče prosto distribuirati. Če so potrebne informacije o lastništvu, se morate najprej strinjati z licenco LINZ za osebne podatke, da boste lahko dostopali do nabora podatkov NZ Property, vključno z lastniki in lastniki naslovov NZ.

Z naslovom je lahko povezanih več paketov, naslov pa ima lahko le delni delež v paketu. To pomeni, da bo oblika, ki predstavlja naslov, združevanje vseh paketov, s katerimi je naslov povezan. Atribut 'prostorske ekstenzije v skupni rabi', ko je enak 'false', bo pokazal, da ima naslov izključni interes nad vso obliko (to velja za veliko večino).

Podatki o poreklu za združitve paketov / naslovov vključujejo nekatere neuradne vire, pri katerih uradni podatki ne podpirajo povezave. Za več informacij obiščite spletno stran LINZ

API-ji in spletne storitve
Ta nabor podatkov je na voljo prek storitev ArcGIS Online in ArcGIS REST ter naših standardnih API-jev.
API-ji LDS in spletne storitve OGC
ArcGIS Spletne storitve zemljevidov
API ArcGIS REST

Primarni paketi NZ

To delo lahko uporabite v komercialne namene.

Ustvarjalca morate pripisati svojim delom.

Ta nabor podatkov je bil nazadnje posodobljen na LINZ Data Service 26. junija 2021.

Ta plast zagotavlja trenutno primarni parcelni poligoni in nekateri z njimi povezani opisni podatki, ki podrobno opisujejo oznako (pravni opis), namen, velikost in seznam naslovov, ki zanimajo paket.

Primarna parcela je del zemljišča, ki naj bi bil:
• v lasti Crown, razen premičnih obrobnih trakov
• V plačilu preprosto ((pretežno v zasebni lasti)
• Maorsko zemljišče ali maorsko običajno zemljišče
• Javno priobalno in morsko dno
• Struga jezera ali reke
• Cesta ali železnica
• Pridobljeno v lokalni oblasti

API-ji in spletne storitve
Ta nabor podatkov je na voljo prek storitev ArcGIS Online in ArcGIS REST ter naših standardnih API-jev.
API-ji LDS in spletne storitve OGC
ArcGIS Spletne storitve zemljevidov
API ArcGIS REST

Primarne parcele si lahko predstavljamo kot „osnovno raven“ „sestavljanke“ vseh zemljišč, ki tvorijo Novo Zelandijo. Drugi „nivoji“ so NZ neprimarni paketi, ki v bistvu omejujejo polne pravice, ki bi bile običajno povezane s primarnim paketom, na primer služnosti, zaveze, zakupi in premični obrobni pasovi itd.

Če potrebujete odobrene ali zgodovinske pakete, glejte Sloj vseh paketov

Ta plast ima nominalno natančnost 0,1-1 m na mestnih območjih in 1-100 m na podeželju. Za podrobnejše informacije o natančnosti paketov si oglejte plast Survey Boundary Marks, ki vsebuje natančnosti za vsako vozlišče paketov.

Kombinacija tega sloja s slojem neprimernih paketov zagotavlja vse trenutne pakete za Novo Zelandijo (tj. Izključuje zgodovinske in čakajoče pakete)

Podatki o poreklu za združitve paketov / naslovov vključujejo nekatere neuradne vire, pri katerih uradni podatki ne podpirajo povezave. Za več informacij obiščite spletno stran LINZ


Metode

Geografski informacijski sistem

Ključna komponenta je bil Geografski informacijski sistem. Tloris onesnaženega objekta v Hamiltonu je bil na voljo samo kot nepopolna in slaba kakovost fotokopije velikosti 8 1/2 × 11 palcev originalne risbe AutoCAD v velikosti E. Optično prebrana je bila kot slika TIFF, uvožena v programsko opremo ArcView GIS 3.2 in uporabljena kot ozadje za ustvarjanje datotek oblike struktur, sten, operativnih površin in postavitev opreme ter mest vzorčenja NIOSH in FBI. Tabele atributov so bile ustvarjene tudi za vsako od tem GIS. Datoteke v obliki so bile razvite s pomočjo optično prebrane kopije tlorisa vsakega objekta in digitalizirane z uporabo ArcView ®. Elementi informacij, ki jih je bilo treba prikazati, so bili razdeljeni na več plasti, ki so prikazovale vzorce različnih agencij in njihovo lokacijo.

Po zaključku so datoteke oblik povezali s podatki s pomočjo Epi Map 2000, sestavnega dela Epi Info, ki je združljiv z ArcView ®. Elementi informacij, shranjeni v zbirkah podatkov, ustvarjenih v Epi Info 2000, so bili poslani neposredno na Epi Map za prikaz (slika 1). Postopek je bil avtomatiziran s pomočjo skriptov ali programov.

Zbiranje in vnos podatkov

Za pridobitev podatkov o morebitnih izpostavljenih osebah je bila imenovana zveza med poštno službo ZDA in epidemiološko skupino. Za vsak objekt v preiskavi je lahko dobil datoteke MS-Excel © ali računalniške izpise s seznamom osebja. Seznami so bili prvotno ustvarjeni za plačilne liste ali registracijo vozil. Na te sezname so bili dodani dodatni podatki za evidentiranje prisotnosti v objektu med obdobjem izpostavljenosti, spolom zaposlenega in profilakso po izpostavljenosti (PEP). Večino kliničnih nadaljnjih storitev, vključno s PEP, je zagotavljala lokalna bolnišnica. Oddelek za informatiko bolnišnice je iz sistema baz podatkov izvlekel ustrezne klinične podatke in jih v nekaterih dneh dal na razpolago preiskovalni skupini kot Excelove tabele, druge dni pa z besedami, ločenimi z vejico.

Primarni podatki, ki so jih zbrali uradniki EIS in drugo osebje, so bili vneseni v Epi Info 2000 ali v Excel in nato uvoženi v format Epi Info 2000 (Microsoft Access 97). Potencialno izpostavljene populacije, kot so redni obiskovalci in sorodniki poštnih delavcev, so bile med nadaljevanjem preiskave identificirane in ročno vnesene v glavno zbirko podatkov.

Demografske značilnosti potencialno izpostavljenih oseb so bile sestavljene iz različnih virov, vključno z lokalno bolnišnico, v kateri so upravljali PEP. Ko so PEP ponudili večji skupini ljudi, je bilo treba slediti različnim protokolom zdravljenja in njihovim rezultatom. Papirni obrazci so bili zasnovani tako, da ne zastarajo, če se med nadaljnjim spreminjanjem protokolov spremenijo, in pričakovane so bile podobne revizije v zbirki podatkov.

Upravljanje zbirke podatkov

Upravljanje zbirke podatkov je bilo izvedeno v Epi Info 2000, Windows različici Epi Info [3]. Epi Info 2000 je bil razvit v CDC iz programske opreme komercialnih komponent in Visual Basic in ponuja združljivost z datotekami Microsoft Access in 20 drugimi standardnimi formati baz podatkov. Vključuje program za preslikavo, ki uporablja ArcView združljiv format datoteke z obrazci in omogoča prikaz podatkov iz Accessovih tabel na shapefiles. Večina osnovnih statističnih podatkov, potrebnih za poročanje in analizo, je vgrajenih tako, da nam ni bilo treba porabiti časa za kodiranje ali odpravljanje napak algoritmov. Orodja za zbiranje in upravljanje podatkov v Epi Info ne zahtevajo strokovnih upravljavcev baz podatkov.

Sistem baz podatkov je sestavljala centralna baza podatkov, ki je bila zasnovana in vzdrževana v Epi Info 2000. Sistem je bil sestavljen iz 14 tabel, povezanih z edinstvenim ključem. Edinstveni ključ je sprva vseboval informacije (bil je "inteligenten"), vendar smo zasnovali mehanizem za zamenjavo inteligentnih ključev z neinteligentnimi ključi. Inteligentni ključ je vseboval kodo objekta, unikatni identifikator izpostavljenega kraja (NJ) in vpleteni poštni objekt. Mesto uvajanja smo vključili v ključ ob predpostavki, da bodo informacije pozneje povezane z drugimi spletnimi mesti.

Varnost

Od začetka operacije je bila skrb za varnost.Zaradi zapletenosti preiskave smo se odločili, da bodo vse občutljive informacije - opredeljene kot informacije, ki omogočajo identifikacijo določenih posameznikov - obravnavane ločeno od ostale baze podatkov. Ustvarili smo eno ravno tablico z vsemi identifikatorji in tabelo povezali s preostalim sistemom zbirke podatkov. S to strukturo smo lahko kot enoto obdelovali občutljive podatke. Identifikatorji na primer niso bili poslani na sedež CDC v Atlanti, občutljivi podatki pa so bili zaščiteni z varnostnimi značilnostmi računalniškega okolja NJDHSS.

Upravljanje dokumentov

Za vzdrževanje spletne strani repozitorija dokumentov je bil uporabljen komercialni urejevalnik HTML (Microsoft Front Page 2000 ®). Spletne strani, vključene v sistem, niso vsebovale posebnih skriptov, ki bi zahtevali napredne tehnike spletnega programiranja. Raven kodiranja HTML je bila osnovna in jo je Front Page večinoma samodejno vstavil.

Skladišče dokumentov je med potekom preiskave omogočalo kodiranje in shranjevanje različic dokumentov. Dokumenti so bili organizirani v mape in jim je bila dodeljena kodna številka.

Članom ekipe je bilo naročeno, naj redno preverjajo dokumente. Postopek prijave dokumenta je vseboval preprost računalniški obrazec z imenom dokumenta, avtorjem in časovnim žigom. Prva dva elementa sta bila uporabljena za izdelavo kataloga, časovni žig pa za nadzor različic.


Pogoji

Zahteve

Za ta dokument ni posebnih zahtev.

Uporabljene komponente

Ta dokument ni omejen na posebne različice programske in strojne opreme. Prikazani izhodi ukazov so iz usmerjevalnikov serije Cisco 2500, v katerih je nameščena programska oprema Cisco IOS & reg, izdaja 12.2 (24a).

Informacije, predstavljene v tem dokumentu, so bile ustvarjene iz naprav v določenem laboratorijskem okolju. Vse naprave, uporabljene v tem dokumentu, so se začele s počiščeno (privzeto) konfiguracijo. Če delate v omrežju v živo, se prepričajte, da razumete morebiten vpliv katerega koli ukaza, preden ga uporabite.

Konvencije

Za več informacij o konvencijah dokumentov glejte Ciscove konvencije o tehničnih nasvetih.


Ustvarite več novih oblik datotek z uporabo informacij v tabeli - Geografski informacijski sistemi

Datotečni sistem, ki je priložen računalniku, je zelo primitivna vrsta sistema za upravljanje baz podatkov. Ne glede na to, ali je računalnik dobil datotečni sistem Unix, NTFS ali datotečni sistem Macintosh, je osnovna ideja enaka. Podatki se hranijo v velikih nestrukturiranih imenovanih gručah datotek. Odlična stvar datotečnega sistema je njegova nevidnost. Verjetno ga niste kupili ločeno, morda se ne zavedate njegovega obstoja, za časopis vam ne bo treba objaviti oglasa v časopisu skrbnik datotečnega sistema s 5+ leti izkušenj in bo v veliki meri delovalo, kot je oglaševano. Vse, kar morate storiti z datotečnim sistemom, je, da ga vsak dan ali dva varnostno kopirate na trak.

Kljub svoji nevsiljivosti lahko datotečni sistem v računalnikih Macintosh, Unix ali Windows shrani vse podatke, ki so lahko predstavljeni v digitalni obliki. Denimo, da shranjujete poštni seznam v datotečni datotečni sistem. Če sprejmete omejitev, da noben e-poštni naslov ali ime osebe ne sme vsebovati znaka nove vrstice, lahko shranite en vnos v vrstico. Nato se lahko odločite, da noben e-poštni naslov ali ime ne sme vsebovati navpične vrstice. Tako lahko e-poštni naslov in imena ločite z znakom navpične vrstice.

Zaenkrat je vse super. Dokler pazite, da nikoli ne poskušate shraniti nove vrstice ali navpične vrstice, lahko podatke shranite v to datoteko & quotflat. & Quot; Iskanje je lahko počasno in drago. Kaj, če želite preveriti, ali je [email protected]" na poštnem seznamu? Če želite preveriti, morate računalnik prebrati celotno datoteko.

  1. Oba vložka uspeta.
  2. Eden od vložkov je izgubljen.
  3. Informacije iz obeh vložkov se pomešajo, tako da sta obe poškodovani.

Vsa stanja na tekočem računu so shranjena v eni datoteki, verify.text, vsa stanja na prihrankih pa v drugi datoteki, saving.text.

Nekaj ​​dni kasneje se zgodi nesrečna kombinacija dogodkov. Joe User s svojih prihrankov na svoj tekoči račun nakaže 10.000 USD. Judy User hkrati na svoj varčevalni račun položi 5 USD. Eden od vaših Perlovih skriptov uspešno zapiše ravno datoteko tekočega računa z Joejevim novim, 10.000 USD višjim stanjem. Datoteko varčevalnega računa zapiše tudi z Joejevim novim, za 10.000 USD nižjim varčevalnim stanjem. Vendar se je skript, ki obdeluje Judyin depozit, začel približno istočasno in se začel z različico hranilnice, ki je imela Joejevo prvotno stanje. Sčasoma dokonča in napiše Judyino višje stanje za 5 dolarjev, hkrati pa prepiše Joejevo novo spodnje stanje s starim visokim stanjem. Kje te to pusti? 10.000 dolarjev revnejši in bi si želeli, da bi imeli nadzor hkratnosti.

Po nekaj mesecih programiranja in branja teorijskih knjig operacijskih sistemov iz šestdesetih let, ki se ukvarjajo z medsebojno izključenostjo, ste rešili težave s sočasnostjo. Vse čestitke. Predpostavimo pa, da gre za internetno podjetje okoli leta 2003 in ga zato s mamino hišo odvajate s strežnikom pod kavčem v dnevni sobi. Zaspani ste, tako da v mikrovalovni pečici segrejete kavo in hkrati opečete vrečko v opekaču. Odklopnik se sproži. Slišite trden zvok diskov, ki se vrtijo navzdol. Skušate se vrniti v strežnik in, ko pogledate dnevnike, opazite, da je Joe User nazaj 25.000 USD prenašal iz prihrankov na preverjanje. Kaj se je zgodilo z Joejevo transakcijo?

Dobra novica za Joeja je, da je vaš Perlov skript pravkar končal z dobropisom njegovega tekočega računa s 25.000 USD. Slaba novica za vas je, da se pri bremenitvi njegovega varčevalnega računa še ni začelo. Mogoče je čas, da pogledamo, kaj so strokovnjaki za obdelavo transakcij pripravili v zadnjih 50 letih.

Kaj potrebujete za obdelavo transakcij?

Ljudje, ki obdelujejo podatke, radi govorijo o & quotACID testu & quot; ko se odločajo, ali je sistem za upravljanje z bazami podatkov primeren za obdelavo transakcij ali ne. Ustrezen sistem ima naslednje lastnosti: Atomskost Rezultati izvedbe transakcije so bodisi vsi prevzeti bodisi vsi znižani. Vse spremembe začnejo veljati ali pa nobena ne. To pomeni, da se za denarna nakazila Joeja Userja prihranki in tekoče stanje prilagodijo ali pa tudi ne. Doslednost Baza podatkov se iz enega veljavnega stanja spremeni v drugo veljavno stanje. To transakcijo opredeli kot zakonito le, če spoštuje uporabniško določene omejitve integritete. Nezakonite transakcije niso dovoljene in če omejitve integritete ni mogoče izpolniti, se transakcija premakne nazaj. Denimo, da določite pravilo, da se po prenosu več kot 10.000 ameriških dolarjev iz države v revizijsko tabelo doda vrstica, da lahko pripravite zakonsko zahtevano poročilo za IRS. Morda je zaradi preglednosti preglednica preglednice shranjena na ločenem disku od ostale baze podatkov. Če je disk revizijske tabele brez povezave in ga ni mogoče zapisati, je transakcija prekinjena. Izolacija Rezultati transakcije so za druge transakcije nevidni, dokler transakcija ni končana. Na primer, če hkrati vodite računovodsko poročilo, ko Joe nakazuje denar, bo program računovodskega poročila videl stanja, preden je Joe nakazal denar ali pozneje, vendar nikoli vmesno stanje, v katerem je bilo knjiženo preverjanje, prihranki pa ne še bremenjeno. Trajnost Ko so zavezani (dokončani), so rezultati transakcije trajni in preživijo prihodnje napake sistema in medijev. Če vam računalnik letalskega rezervacijskega sistema priskrbi sedež 22A in kasneje zruši milisekundo, ne bo pozabil, da sedite v 22A, in ga dal nekomu drugemu. Poleg tega, če programer polije kavo v diskovni pogon, bo mogoče namestiti nov disk in obnoviti transakcije do razlitja kave, kar dokazuje, da ste imeli sedež 22A.

To se ne sliši preveč težko za izvedbo, kajne? "Zgolj vprašanje programiranja", kot rad reče naš prijatelj Jin. No, še vedno potrebujete indeksiranje.

Iskanje vaših podatkov (in hitro)

Eden od vidikov sistema za upravljanje baz podatkov je obdelava vstavkov, posodobitev in brisanja. Vse to je povezano z vnosom podatkov v bazo podatkov. Včasih pa je tudi lepo, če lahko podatke dobimo ven. In pri spletnih mestih s srednjo priljubljenostjo, ki prejmejo 20 zahtev na sekundo, se splača biti pozoren na hitrost.

Ravne datoteke delujejo v redu, če so zelo majhne. Skript Perl lahko v delih sekunde prebere celotno datoteko v pomnilnik in jo nato poišče, da izvleče zahtevane informacije. A predpostavimo, da vaša spletna banka raste na 250.000 računov. Uporabnik vpiše svojo številko računa na spletno stran in zahteva svoje najnovejše pologe. Imate kronološko datoteko s finančnimi transakcijami s 25 milijoni vnosov. Crunch, crunch, crunch. Vaš strežnik se trudi skozi vseh 25 milijonov, da najde tiste s številko računa, ki ustreza uporabniški. Medtem ko se drobi, 25 drugih uporabnikov pride na spletno mesto in prosi za enake podatke o svojih računih.

Na voljo imate dve možnosti: kupite 1000-procesorski superračunalnik ali zgradite indeksno datoteko. Če zgradite indeksno datoteko, ki preslika številke računov v zaporedne številke transakcij, vam strežniku ne bo treba več iskati vseh 25 milijonov zapisov. Vendar morate spremeniti vse programe, ki vstavljajo, posodabljajo ali brišejo iz baze podatkov, tako da tudi indeks ostanejo posodobljeni.

To deluje odlično do dveh let kasneje, ko s Harvarda prispe popolnoma nov MBA. Prosi za poročilo & kvota vseh strank, ki imajo na čeku več kot 5000 dolarjev ali živijo v Oklahomi in so v zadnjih 17 dneh od prihrankov dvignile več kot 100 dolarjev. & Quot; Izkazalo se je, da te poizvedbe niste predvideli, zato vaša shema indeksiranja ne Ne pospeši stvari. Vaš strežnik mora znova in znova prebrskati vse podatke.

Vnesite relacijsko bazo podatkov

& quotBodnje uporabnike velikih podatkovnih bank je treba zaščititi pred tem, da bi morali vedeti, kako so podatki organizirani v napravi (notranja predstavitev). . Dejavnosti uporabnikov na terminalih in večini aplikacijskih programov ne bi smele vplivati, če se spremeni notranja predstavitev podatkov in tudi kadar se spremenijo nekateri vidiki zunanje predstavitve. Spremembe v predstavitvi podatkov bodo pogosto potrebne zaradi sprememb poizvedb, posodobitev in poročanja o prometu in naravni rasti vrst shranjenih informacij.

& quotObstoječi neinferenčni, formatirani podatkovni sistemi uporabnikom zagotavljajo drevesno strukturirane datoteke ali nekoliko bolj splošne mrežne modele podatkov. V 1. poglavju so obravnavane pomanjkljivosti teh modelov. Predstavljen je model, ki temelji na n -arnih relacijah, običajni obliki relacij baz podatkov in konceptu univerzalnega podjezika podatkov. V 2. oddelku so obravnavane nekatere operacije odnosov (razen logičnega sklepanja), ki se uporabljajo za probleme redundance in doslednosti v uporabnikovem modelu. & Quot

Sliši se precej pikantno, kajne? Tako kot tisto, kar potrebujete. To je povzetek "Relacijskega modela podatkov za velike skupne podatkovne banke", je zapisal Codd med delom v IBM-ovem raziskovalnem laboratoriju v San Joseju. Objavljen je bil v Sporočilu ACM junija 1970 in je dostopen na http://www.acm.org/classics/nov95/toc.html (ACM trdi, da predstavlja najboljše prakse, ki jih lahko poslovna oseba pričakuje od računalniške strokovnjake, je bila njihova spletna različica Codd-ovega dela polovično dokončana leta 1995, za ostale pa vsebuje opombo "kmalu". Ali je čudno, da ameriške korporacije selijo IT-delovna mesta v Indijo in na Kitajsko? Če bo računalniški strokovnjak to storil na pol ocenjenem delovnem mestu ni smiselno, da mu plačate več kot 10 USD / uro.).

Da, tako je, 1970. Kar morate storiti, je premakniti svoje spletno mesto v sedemdeseta leta z enim od teh modernih sistemov za upravljanje relacijskih baz podatkov (RDBMS). Pravzaprav je, kot ugotavlja Codd v svojem prispevku, večino problemov, s katerimi smo se doslej srečevali v tem poglavju, v šestdesetih letih prejšnjega stoletja rešila programska oprema za velike računalnike, ki so jo prodali IBM in & quotseven dwarfi & quot (kot so bili znani IBM-ovi konkurenti). V zgodnjih šestdesetih letih so se podjetja naveličala izgubljati pomembne transakcije in ročno izkrivljati zbirke podatkov. Začeli so razmišljati, da njihovi programerji aplikacij ne bi smeli izvajati transakcij in indeksiranja za vsak ad hoc projekt. Podjetja so začela kupovati programsko opremo za upravljanje baz podatkov pri prodajalcih računalnikov, kot je IBM. Ti izdelki so delovali dokaj dobro, vendar so povzročili krhke podatkovne modele. Če ste prvič pravilno prikazali podatke in se vaše poslovne potrebe niso nikoli spremenile, je bila hierarhična baza podatkov iz leta 1967 odlična. Na žalost, če ste postavili sistem na mesto in pozneje potrebovali nove indekse ali novo obliko zapisa podatkov, boste morda morali prepisati vse svoje aplikacijske programe.

Z vidika aplikacijskega programerja je največja novost v relacijski bazi podatkov ta, da se uporablja deklarativni jezik poizvedb, SQL (kratica za jezik strukturiranih poizvedb in izgovarja & quotess-cue-el & quot ali & quotsequel & quot). Večina računalniških jezikov je postopkovnih. Programer računalniku pove, kaj naj stori, korak za korakom in določi postopek. V SQL programer reče & quot? Želim podatke, ki ustrezajo naslednjim merilom & quot; načrtovalec poizvedb RDBMS pa ugotovi, kako do njih. Uporaba izjavnega jezika ima dve prednosti. Prvi je, da poizvedbe niso več odvisne od predstavitve podatkov. RDBMS lahko shranjuje podatke, kot želi. Drugi je večja zanesljivost programske opreme. Veliko težje je & quta little bug & quot v poizvedbi SQL kot v postopkovnem programu. Na splošno bodisi opisuje podatke, ki jih želite in ki ves čas delujejo, bodisi popolnoma očitno ne uspejo.

Druga prednost deklarativnih jezikov je, da lahko manj napredni uporabniki pišejo uporabne programe. Na primer, številne računalniške naloge, ki so v šestdesetih letih zahtevale profesionalne programerje, lahko opravijo netehnični ljudje s preglednicami. V preglednici računalniku ne poveste, kako naj izračuna številke ali v kakšnem zaporedju. Samo izjaviš & quot; Ta celica bo 1,5-krat večja od vrednosti tiste druge celice tam. & Quot

RDBMS lahko delujejo zelo počasi. Glede na to, ali prodajate ali kupujete računalnike, vas to lahko vznemirja ali razveseli. Recimo, da sistem potrebuje 30 sekund, da vrne podatke, ki ste jih zahtevali v poizvedbi. Ali to pomeni, da imate veliko podatkov? Da morate dodati nekaj indeksov? Ali je načrtovalec poizvedb RDBMS naredil nekaj slabih odločitev in potrebuje nekaj namigov? Kdo ve? RDBMS je izjemno zapleten program, ki ga niste napisali in za katerega nimate izvorne kode. Vsak prodajalec ima orodja za sledenje in odpravljanje napak, ki naj bi vam pomagala, vendar postopek ni preprost. Vso srečo pri iskanju drugačnega zagona SQL, ki bo vrnil isti nabor podatkov v krajšem času. Če ne morete, pokličite svojega dobavitelja strojne opreme in ga prosite, naj vam pošlje še 16 procesorjev z največ RAM-a. Lahko pa še naprej uporabljate nerelacijsko programsko opremo, ki ste jo uporabljali v šestdesetih letih, kar letalske družbe počnejo za svoje sisteme rezervacij.

Kako deluje ta RDBMS?

Raziskovalci zbirk podatkov radi govorijo o relacijski algebri, n-torkih, normalni obliki in naravni sestavi, medtem ko se metajo okoli matematičnih simbolov. Ta patina matematične nejasnosti ponavadi odvrača vašo pozornost od njihovih slabih oblek in dolgočasnih osebnosti, vendar nima nobene vrednosti, če želite le uporabiti sistem za upravljanje relacijske baze podatkov.

Pravzaprav je to vse, kar morate vedeti, da bi bili programer baze podatkov Caveman: Relacijska baza podatkov je velika preglednica, ki jo lahko hkrati posodobi več ljudi.

Kako lahko več ljudi uporablja preglednico, kot je Microsoft Excel ob istem času? Bi se izmenjevali pri tipkovnici in miški? Boj nad tipkovnico in miško? Stisnite si glave pred zaslonom?

Znebiti se moramo ideje o interakciji z miško / tipkovnico / oknom. Ko je veliko hkratnih uporabnikov, ni smiselno. Namesto tega si predstavljajte, da sistem za upravljanje baz podatkov sedi sam v temni omari. Uporabniki svoje zahteve zapišejo na papirje in jih potisnejo pod vrata. Zahteva je lahko "ustvari tabelo", "vstavi vrstico v tabelo", "posodobi obstoječo vrstico v tabeli", "daj mi poročilo o informacijah v vseh vrsticah v tabeli, ki izpolnjujejo naslednja merila . ". Če zahteva zahteva odgovor, baza podatkov nekaj časa prežveči vprašanje, nato pa potisne poročilo v papirju nazaj pod vrata.

Podrobneje preučimo, kako to deluje.

Vsaka tabela v bazi podatkov je ena preglednica. RDBMS povejte, koliko stolpcev ima posamezna vrstica. Tabela ima na primer v naši zbirki podatkov poštnih seznamov dva stolpca: ime in e-pošto. Vsak vnos v zbirko podatkov je sestavljen iz ene vrstice v tej tabeli. RDBMS je bolj omejujoč kot preglednica, saj morajo biti vsi podatki v enem stolpcu iste vrste, npr. Celo število, decimalno mesto, niz znakov ali datum. Druga razlika med preglednico in RDBMS je, da vrstice v RDBMS niso razvrščene. Lahko imate stolpec z imenom številka_vrst in zaprosite RDBMS, da vrne vrstice, razvrščene glede na podatke v tem stolpcu, vendar oštevilčenje vrstic ni implicitno, kot bi bilo s programom za preglednice. Če v vrstici v tabeli definirate stolpec_številka vrstice ali kakšen drug enoličen identifikator, se vrstica v drugi tabeli lahko sklicuje na to vrstico z vključitvijo vrednosti enoličnega ID-ja.

Tukaj je videti nekaj SQL za aplikacijo za poštni seznam:

To je veselje in agonija SQL. Če vstavite dve neškodljivi besedi, vas lahko stane faktor 1000 pri uspešnosti. Potem vas lahko vstavitev stavka (za ustvarjanje indeksa) pripelje nazaj, tako da je le faktor dva ali tri. (Upoštevajte, da številne izvedbe RDBMS, vključno z Oracle, samodejno definirajo indeks v stolpcu, ki je omejen na enoličen.)

Kakorkoli, zdaj, ko smo izvedli jezik za definicijo podatkov & quotcreate tabelo & quot, lahko preidemo na jezik za upravljanje podatkov: INSERT.

Ko smo ustvarili tabelo in vstavili nekaj podatkov, smo končno pripravljeni izkusiti izjemno moč SQL SELECT. Želite svoje podatke vrniti?

  1. A boste dobili na tečaju RDBMS na povprečni državni univerzi.
  2. Pobrali boste bralce Psychology Today, ki mislijo, da ste občutljivi in ​​skrbni, ker vedno govorite o odnosih. [glejte "Uporaba interneta za pobiranje beb in / ali komadov" na naslovu http://philip.greenspun.com/wtr/getting-dates, preden sledite avtorjevim nasvetom za zmenke]

Kakorkoli, dovolj nerdizma v zbirki podatkov. Zapolnimo tabelo phone_numbers:

Prvi trije VSTAVKI delujejo v redu, kaj pa zadnji, kjer je gospod O'Grady napačno črkoval & quotbeeper & quot?

Recimo, da želimo vse naše podatke.E-pošta, polno ime, telefonske številke. Najbolj očitna poizvedba za poskus je pridružitev.

Tako kot pri DELETE tudi pri poizvedbah UPDATE se ni dobro poigrati, razen če imate na koncu klavzulo WHERE.

SQL težka pot

Težave v nujnih računalniških jezikih so lahko zelo preproste v deklarativnem jeziku, kot je SQL in obratno. Oglejmo si primer priprave poročila o tem, koliko uporabnikov dnevno obišče spletno mesto. Leta 1995 smo zgradili spletno mesto, ki bo vsakemu novemu uporabniku izročilo edinstven ključ seje. Ker so bili ključi naraščajoče zaporedje celih števil, smo ugotovili, da lahko spremljamo, koliko uporabnikov je prišlo na spletno mesto, tako da vsak dan preprosto vstavimo revizijsko vrstico, ki prikazuje vrednost generatorja ključa seje. Tu je tabela zgodovine:

Opomba: podatkovni tip Oracle DATE lahko predstavlja čas do sekundne natančnosti, nekako tako kot ANSI TIMESTAMP (0) v Oracle 9i in novejši, ki bi verjetno uporabili vrsto časovnega žiga.

Zdaj, ko zbiramo podatke, bi bilo enostavno napisati stran s poročilom, kajne? Izkazalo se je, da je vrstice tabele zelo enostavno izvleči po vrstnem redu, kot v zadnjem SELECT zgoraj. Vendar je nemogoče, da bi se vrstica sklicevala na & quot; zadnjo vrstico v tem SELECT & quot. Lahko bi napisali postopek C #, Java, PL / SQL ali VB, da bi se po vrsticah sprehajali po vrstnem redu, samo nastavite stvari ob prvem prehodu skozi zanko in nato naredite ustrezno odštevanje za naslednje vrstice. Vendar pa v svetu SQL šteti za neokusno, če bi trčili v objem nujnega računalniškega jezika.

V SQL začnete razmišljati o tem, kaj želite, in delati nazaj. Če ima tabela zgodovine N vrstic, želimo intervalno tabelo z N-1 vrsticami. Vsaka vrstica mora imeti začetni čas, končni čas, časovni interval in interval piškotkov. Kadar koli potrebujete informacije iz dveh različnih vrstic v zbirki podatkov, je način, da jih dobite z JOIN. Ker obstaja le ena osnovna tabela, bo to moralo biti samozdružitev:

Opomba o skladnji je tukaj urejena. Na seznamu SQL FROM lahko tabeli dodelite korelacijsko ime. V tem primeru sta h1 in h2 dodeljena dvema kopijama zgodovine, med katerimi izbiramo. Potem se lahko sklicujemo na h1.sample_time in dobimo & quot stolpec sample_time iz prve kopije tabele zgodovine. & Quot

Glavna težava te poizvedbe pa nima nobene zveze s sintakso. Dejstvo je, da imamo 13 vrstic preveč. Namesto vrstic N-1 smo določili kartezični izdelek in dobili vrstice NxN. Uspešno smo izvedli samostojno združevanje in dobili vse sezname, ki jih potrebujemo, pa tudi vse druge možne seznanitve. Zdaj je čas, da v našem končnem poročilu določimo, katere od teh združitev želimo:

Glede na pravilno seznanjanje vrstic je na seznam SELECT enostavno dodati sintakso, da odštejemo čas in vrednosti piškotkov.

Oblikovanje poizvedb SQL je lahko umetnost in večina programerjev potrebuje čas in izkušnje, da lahko deklarativno dobro razmišlja.

Pogumen nov svet

Izobraževanje afriške sive papige za delo upravitelja informacijskih sistemov je lahko zelo koristno. Ključni stavek je & quot; Proaktivno izkoriščamo našo objektno usmerjeno bazo podatkov odjemalca / strežnika, da bi med prenovo načrtovali storitve za stranke. & Quot; V svetu osemdesetih let prejšnjega stoletja je bil ustrezen del tega stavka & quotclient / server & quot (glej naslednje poglavje). V pogumnem novem svetu sistemov za upravljanje baz podatkov je ključna fraza & quotobject-oriented. & Quot

Predmetni sistemi prispevajo k zanesljivosti in kompaktnosti programske opreme, saj programerjem omogočajo, da svojo kodo razdelijo na koščke, ki se uporabljajo čim bolj široko. Denimo, da izdelujete spletno mesto kataloga za prodajo revij, videoposnetkov, knjig in CD-jev. Morda bi bilo vredno razmisliti o podatkih in funkcijah, ki so skupni vsem tem, in jih vključiti v razred izdelkov. Na ravni izdelka bi določili značilnosti, kot so product_id, short_name in opis. Nato bi definirali podrazred revije, ki je podedoval vse vedenja izdelka, in dodal stvari, kot je issues_per_year.

Programerji, ki uporabljajo sodobne računalniške jezike, kot sta Smalltalk in Lisp, to počnejo že od sredine sedemdesetih let, vendar se je ideja v svetu RDBMS ujela šele pred kratkim. Tu je nekaj definicij tabel za sistem Illustra, izpeljanko iz Združenega kraljestva. Raziskovalni projekt Berkeley Postgres:

Ta pogumni novi svet se sliši odlično v brošurah ponudnikov DBMS, vendar dejanska izkušnja ni vedno čudovita. Leta 1995 smo uporabljali Illustro in si zgradili čudovito hierarhijo tabel, bolj ali manj, kot je opisano zgoraj. Šest mesecev pozneje smo morali dodati tabelo v tabelo izdelkov. E. F. Codd je že leta 1970 razumel, da morajo podatkovni modeli naraščati, ko se spreminjajo poslovne potrebe. Toda ljudje Illustra so bili nad njihovimi razširitvami predmetov tako navdušeni, da so pozabili. Sistem ni mogel dodati stolpca v tabelo z odvisnimi podrazredi. Kaj naj storimo, smo vprašali ljudi za podporo? & quotPodatke izbrišite iz vseh tabel, jih spustite, znova jih dodajte z dodanim stolpcem in nato naložite vse podatke nazaj v tabele. & quot

Pogumnejši novi svet

Če res želite biti na prvem mestu, lahko uporabite verodostojno bazo podatkov o predmetih, kot je ObjectStore (http://www.objectstore.net). Ti sistemi vztrajno shranjujejo vrste struktur predmetov in kazalcev, ki jih ustvarite v programu Smalltalk, Common Lisp, C ++ ali Java. Preganjanje kazalcev in določenih vrst transakcij je lahko 10 do 100-krat hitrejše kot v relacijski bazi podatkov. Če bi verjeli vsemu v literaturo prodajalcev baz podatkov predmetov, bi bili presenečeni, da ima Larry Ellison še 100 računov za položitev kmetov, ko buči nad glavo v svojem curku Gulftream. Sistem upravljanja relacijskih baz podatkov bi že zdavnaj moral biti zdrobljen pod težo te vrhunske tehnologije, uvedene z izjemno hrupnostjo v zgodnjih osemdesetih letih.

Po 20 letih je trg sistemov za upravljanje z bazami podatkov približno 100 milijonov dolarjev na leto, kar je manj kot 1 odstotek velikosti trga relacijskih baz podatkov. Zakaj fizzle? Predmetne zbirke podatkov prinašajo nekatere slabe lastnosti predrelacijskih sistemov za upravljanje baz podatkov iz šestdesetih let. Programer mora vedeti veliko o podrobnostih shranjevanja podatkov. Če poznate identitete predmetov, ki vas zanimajo, je poizvedba hitra in preprosta. Izkazalo pa se je, da večino uporabnikov baz podatkov ne skrbi za identitete predmetov, temveč za atribute objektov. Relacijske baze podatkov so ponavadi hitrejše in boljše pri ustvarjanju agregatov na podlagi atributov.

Upoštevajte, da če objektne zbirke podatkov kdaj naredil postala priljubljena, bi bila uporaba Java ali C # kot skriptnega jezika strani veliko bolj privlačna. Trenutno modni sistemi naprednih računalniških jezikov niso zelo uporabni za razvoj internetnih aplikacij. Edine stvari, ki jih je mogoče stalno shranjevati, to je od nalaganja strani do nalaganja strani, v RDBMS so številke, datumi in nizi. V teoriji je mogoče napisati zapleten program Java, ki opravi poizvedbo SQL, ustvari ogromno zbirko medsebojno povezanih predmetov, uporabniku postreže stran in nato izstopi. Zakaj pa bi? Zbirko medsebojno povezanih predmetov je treba vrniti ven takoj, ko je stran vročena, nato pa jo znova zgraditi naslednjič, ko uporabnik zahteva stran, kar lahko traja 1 sekundo pozneje ali dva dni kasneje. Če bi bili po drugi strani predmeti, ustvarjeni s programom C # ali Java, učinkovito vztrajni, bi bila uporaba teh velikih kladiv pri spletnem skriptiranju veliko manj smešna.

Izbira prodajalca RDBMS

Mislili bi, da ne bi bilo pomembno, kateri sistem RDBMS uporabljate za spletnim mestom, ker ima vsak RDBMS standarden vmesnik SQL. Dejansko so okusi ponudnikov SQL dovolj različni, da je prenos z enega RDBMS na drugega navadno nočna mora. Načrtujte, da boste po svoji izbiri živeli 5 ali 10 let.
  1. stroški / zapletenost upravljanja
  2. sistem za zaklepanje
  3. možnost indeksiranja celotnega besedila
  4. največja dolžina podatkovnega tipa VARCHAR
  5. podporo

Stroški / zapletenost upravljanja

V slabih starih časih bi lahko Oracle namestili na računalnik s 500.000 USD in sprejeli vse privzete vrednosti, nato pa ugotovili, da je bil segment vračila približno 15 MB. To pomeni, da v računalniku z 200 GB prostega prostora na disku niste mogli transakcije posodobiti več kot 15 MB podatkov hkrati. Oracle privzeto ne bi zajemal le nekaj več prostora na disku.

Sloppy upravljanje RDBMS je eden najpogostejših vzrokov zastojev na prefinjenih mestih. Če niste prepričani, da boste imeli na svojem spletnem mestu izkušeno osebje skrbnikov baz podatkov, boste morda želeli razmisliti, ali je "Enterprise RDBMS" resnično za vas. Veliki trije RDBMS so IBM-ovi DB2, Microsoft SQL Server in Oracle. Vsi ponujajo izjemno prilagodljivost v konfiguraciji, s poudarkom na izgradnji 64-CPU sistemov, ki obdelujejo absurdno število sočasnih transakcij. Vsi trdijo, da je z njihovimi najnovejšimi in najboljšimi orodji za upravljanje namestitev in upravljanje sistema tako enostavno, da bi to lahko storil 10-letnik. Če bi bile te trditve resnične, bi bil lokalni Starbucks zamašen z brezposelnimi skrbniki baz podatkov. Konkurenca pritlikavcev ponuja odprtokodni PostgreSQL, ki ga ni mogoče prilagoditi velikim velikostim in zmogljivosti komercialnih RDBMS-jev, vendar je sam po sebi dokaj enostaven za namestitev in vzdrževanje (in je brezplačen!). MySQL je priljubljen med uporabniki Linuxa in ker ima vmesnik SQL, ga pogosto zamenjujejo z RDBMS. Dejansko ne zagotavlja garancij za transakcije ACID in bi bil zato bolj pravilno povezan z Microsoftom Dostop in podobna namizna orodja.

Sistem za zaklepanje

Obstajajo sistemi za upravljanje relacijske baze podatkov, ki podpirajo sočasne uporabnike. Če nimate ljudi, ki hkrati posodabljajo informacije, vam je verjetno bolje, če imate preprost skript Perl, Microsoft Dostopali MySQL in ne komercialni RDBMS (tj. 100 MB kode nekoga drugega C).

Vsi sistemi za upravljanje baz podatkov rešujejo težave s sočasnostjo s ključavnicami. Preden lahko izvrševalni stavek spremeni nekatere podatke, mora zajeti ključavnico. Medtem ko je ta ključavnica zadržana, noben drug sočasno izvajani stavek SQL ne more posodobiti istih podatkov. Če želite preprečiti, da bi drug uporabnik bral napol posodobljene podatke, medtem ko je ta ključavnica zadržana, noben hkrati izveden stavek SQL ne more niti preberite podatki.

Bralci morajo počakati, da pisci končajo pisanje. Pisatelji morajo počakati, da bralci dokončajo branje.

Tovrsten sistem, imenovan pesimistično zaklepanje, je enostaven za izvedbo, odlično deluje v raziskovalnem laboratoriju in se lahko matematično dokaže kot pravilen. Edina težava tega pristopa je, da v resničnem svetu naglih razvijalcev in več hkratnih uporabnikov pogosto ne deluje. Lahko se zgodi, da skrbniška stran na spletnem mestu e-trgovine na primer vsebuje poizvedbo za poročanje, ki traja eno uro in se dotakne vseh vrstic v tabelah uporabnikov in naročil. Medtem ko se ta poizvedba izvaja, se noben uporabnik javnih strani ne more registrirati ali oddajati naročil.

Z Oracle RDBMS, bralci nikoli ne čakajo na pisatelje in pisatelji nikoli ne čakajo na bralce. Če SELECT začne brati ob 9:01 in naleti na vrstico, ki je bila posodobljena (z drugo sejo) ob 9:02, Oracle poseže v segment povratka in izkoplje vrednost pred posodobitvijo za SELECT (to ohrani Izolacija preskus ACID). Transakciji ni treba zajemati ključavnic, razen če spreminja tabelo in tudi takrat zaklepa samo določene vrstice, ki jih je treba spremeniti.

To je vrsta zaklepanja RDBMS, ki jo želite za spletno mesto, od leta 2003 pa jo zagotavljata le Oracle in Postgres.

Možnost indeksiranja celotnega besedila

To zahteva, da RDBMS bere vsako vrstico v tabeli, kar je počasno. Prav tako to ne bo prikazalo revij, katerih opis vključuje besedo & quotdog & quot.

Indeksator polnega besedila na disku gradi podatkovno strukturo (indeks), tako da RDBMS ni več treba skenirati celotne tabele, da bi našel vrstice, ki vsebujejo določeno besedo ali kombinacijo besed. Programska oprema je dovolj pametna, da lahko razmišljamo bolj z besedami kot z besedami. Torej se lahko med poizvedbami zamenjata "tek" in "tek" ali "pes" in "psi". Indeksatorji polnega besedila lahko na splošno tudi primerjajo uporabniško vneseno besedno zvezo v tabelo dokumentov zbirke podatkov glede ustreznosti, tako da lahko poiščete najpomembnejša ujemanja.

Končno, sodobni besedilni iskalniki so zelo pametni glede tega, kako se besede nanašajo. Tako bi lahko dostavili dokument, ki ni vseboval besede & quotdog & quot, vendar je vseboval & quotGolden Retriever & quot. Zaradi tega so storitve, kot so mali oglasi, forumi za razprave itd., Uporabnikom veliko bolj koristne.

Ponudniki sistemov za upravljanje relacijskih baz podatkov v svoje izdelke postopoma vključujejo indeksiranje celotnega besedila. Na žalost ni standarda za poizvedovanje s tem indeksom. Če torej ugotovite, kako poizvedovati po besedilu Oracle Text za "vrstice, ki se nanašajo na" zagon "ali njegove sopomenke", sintaksa SQL ne bo koristna za postavitev istega vprašanja Microsoft SQL Server z možnostjo indeksiranja celotnega besedila.

Največja dolžina podatkovnega tipa VARCHAR

Lahko bi naivno pričakovali, da bo sistem za upravljanje relacijske baze podatkov zagotovil abstrakcijo za shranjevanje podatkov. Po določitvi stolpca, ki bo vseboval niz znakov, pričakujete, da boste lahko DBMS dali deset-znakovni niz ali milijon-znakovni niz in da bo vsak shranjen čim bolj učinkovito.

V praksi trenutni komercialni sistemi zelo slabo shranjujejo nepričakovano dolge podatke, na primer Oracle vam omogoča, da imate v VARCHARJU samo 4000 znakov. To je v redu, če gradite korporativni računovodski sistem, vendar slabo za javno spletno mesto. Ne morete biti prepričani, kako dolgo bo trajalo objavo uporabnikovega oglasnega oglasa ali oglasne deske. Standard SQL predvideva LONG podatkovni tip za obvladovanje tovrstnih situacij, sodobni ponudniki baz podatkov pa pogosto ponujajo velike predmete znakov (CLOB). Te vrste teoretično omogočajo shranjevanje poljubno velikih podatkov. Vendar je v praksi za te stolpce toliko omejitev, da niso preveč koristne. Ne morete jih na primer uporabiti v stavku SQL WHERE, zato bi bil zgornji "LIKE '% dogs%'" nezakonit. Standardnega indeksa ne morete zgraditi na LONG stolpcu. Morda boste tudi težko vnesli nize v LONG stolpce ali iz njih. Razčlenjevalnik Oracle SQL sprejema samo nizovne dobesedne znake do 4.000 znakov. Po tem morate uporabiti posebne klice C API.

Trenutno se zdi, da je PostgreSQL vodilni na tem področju. Stolpec lahko razglasite za spreminjanje znakov ali besedilo in shranite niz do približno 1 GB.

Plačilo prodajalca RDBMS

To je del, ki boli. Osnovna cenovna strategija prodajalcev sistemov za upravljanje baz podatkov je, da uporabnika obesimo za pete, vidimo, koliko denarja pade, vzamemo vse in nato zahtevamo še dodatnih 50.000 USD za & quotsupport & quot. V idealnem primeru bi želeli vedeti, koliko so vredni vaši podatki in koliko dobička pričakujete od njihovega dostopa, nato pa ves ta dobiček izvlecite iz vas. V zvezi s tem se obnašajo kot klasični monopol mikroekonomije 101, ki maksimizira dobiček.

Licenca RDBMS je bila običajno uporabljena na uporabnika. Velike zavarovalnice s 1000 obdelovalci škod bi plačale več kot majhne družbe s 5. Splet je zmedel prodajalce RDBMS. Po eni strani je bil strežnik dostopen vsem, kjer koli na svetu. Tako bi bila poštena ureditev 64.000 USD na neomejeno uporabniško licenco za CPU. Po drugi strani pa je premalo spletnih založnikov dejansko imelo 64.000 ameriških dolarjev na CPU na svojih računih. Tako bi se prodajalci RDBMS strinjali s prodajo 5-uporabniške ali 8-uporabniške licence.

Če ne morete znižati cen komercialnih sistemov, si oglejte PostgreSQL. Razvijanje verodostojne grožnje za uporabo PostgreSQL lahko pri prodajalcih RDBMS povzroči določeno prožnost pri določanju cen.

Izvedba

Vsak prodajalec RDBMS trdi, da ima najhitrejši sistem na svetu. Ne glede na to, kaj ste prebrali v brošurah, bodite prepričani, da bo kateri koli sistem RDBMS precej počasen. Že v devetdesetih letih smo imeli v Oracle8 vstaviti 70.000 vrstic podatkov. Vsaka vrstica je vsebovala šest številk. Izkazalo se je, da podatki niso v najprimernejši obliki za uvoz, zato smo napisali enovrstični skript Perl, da bi jih preoblikovali. Manj kot sekunda je trajalo, da smo prebrali vseh 70.000 vrstic, jih preoblikovali in zapisali nazaj na disk v eno datoteko. Nato smo jih začeli vstavljati v tabelo Oracle 8, po en vstavek SQL. Trajalo je približno 20 minut (60 vrstic na sekundo). To kljub dejstvu, da tabela ni bila indeksirana in zato Oracle ni moral posodobiti več lokacij na disku.

Obstaja več načinov, kako doseči visoko zmogljivost. Eno je kupiti ogromen večprocesorski računalnik z dovolj RAM-a, da lahko naenkrat shrani celoten podatkovni model. Na žalost bo vaš prodajalec RDBMS, če ne uporabljate PostgreSQL, verjetno dal vašemu bančnemu računu zvišanje, ki ga ne bo kmalu pozabil. Licennina bo štirikrat višja za stroj s štirimi CPU kot za stroj z enim CPU. Zato bi bilo najbolje, da poskusite dobiti čim hitrejši računalnik z enim procesorjem.

Če obdelujete veliko transakcij, vam vsi tisti CPU, napolnjeni z RAM-om, ne bodo pomagali. Vaše ozko grlo bo spor o vretenu diska. Rešitev za to je skandiranje & quotOh, kakšnega prijatelja imam v Seagateu. & Quot; Diski so počasni. Zelo počasno. Dobesedno skoraj milijonkrat počasneje kot računalnik. Zato računalnik preživi veliko časa v čakanju na disk (-e). Izbire SQL lahko pospešite tako, da kupite toliko RAM-a, da je celotna baza podatkov v pomnilniku. Vendar zahteva trajnosti v testu ACID za transakcije pomeni, da bo treba nekaj zapisov o transakciji zapisati na medij, ki se v primeru izpada električne energije ne bo izbrisal. Če lahko disk stori samo 100 iskanj v sekundi in imate samo en disk, bo vaš RDBMS težko pritiskal, da bo izvedel več kot približno 100 posodobitev na sekundo.

Prva stvar, ki jo morate storiti, je, da zrcalite vse svoje diske. Če v RAM-u nimate celotne zbirke podatkov, to pospeši SELECT, ker krmilnik diska lahko bere s katerega koli diska, ki je bližje želeni skladbi. Nasproten učinek je mogoče doseči, če uporabite & quotRAID nivo 5 & quot; kjer so podatki na več diskih črtasti. Nato mora RDBMS počakati, da poišče pet diskov, preden lahko izkašlja nekaj vrstic. Ravno zrcaljenje ali & quotRAID level 1 & quot, je tisto, kar želite.

Naslednja odločitev, ki jo morate sprejeti, je & quot; Koliko diskov? & Quot; Priročnik za Oracle9i DBA (Loney 2001 Oracle Press) priporoča konfiguracijo diska 7x2 kot minimalni kompromis za stroj, ki ne opravlja nič drugega kot storitev zbirke podatkov. Njihove rešitve se začnejo na diskih 9x2 in segajo do 22x2. Ideja je ohraniti datoteke, ki bi bile lahko napisane vzporedno na ločenih diskih, tako da lahko namesto 100 naredimo 2200 iskanj na sekundo.

Tu je rešitev Kevina Loneyja s 17 diski (zrcalno X2) za preprečevanje prepiranja vretena:

DiskVsebina
1 Programska oprema Oracle
2 Prostor tabel SYSTEM
3 Prostor tabel RBS (povratni segment v primeru, da gre transakcija slabo)
4 Prostor tabel DATA
5 INDEXES prostor tabel (spreminjanje podatkov zahteva spreminjanje indeksov, kar omogoča, da te spremembe potekajo vzporedno)
6 Tabela prostora TEMP
7 Tabela Orodja
8 Spletni dnevnik ponavljanja 1, nadzorna datoteka 1 (ti bi bili ločeni na 22-diskovnem računalniku)
9 Spletni dnevnik ponavljanja 2, nadzorna datoteka 2
10 Spletni dnevnik ponovitve 3, nadzorna datoteka 3
11 Programska oprema
12 RBS_2
13 DATA_2 (tabele, ki jih običajno vzamemo vzporedno s tistimi v DATA)
14 KAZALA_2
15 TEMP_USER
16 Arhiviran ciljni disk dnevnika ponovitve
17 Izvozite ciljni disk izpisa datoteke

[Drugo področje, na katerem so lahko komercialne baze podatkov veliko hitrejše od PostgreSQL, je obravnava 50 sočasnih transakcij 50 različnih uporabnikov. V naivni izvedbi RDBMS bi bili ti poravnani po vrsti, na transakcijo bi se zapisal dnevnik transakcije 1, nato bi bil uporabnik baze podatkov, ki je to zahteval, obveščen o uspehu, nato bi bila obdelana transakcija 2 in po drugem zapisu na disk, razglasiti za uspeh. Oracle pa je dovolj pameten, da lahko reče, da je "približno 50 transakcij prišlo v skoraj istem trenutku, zato bom na disk zapisal en velik ogromen blok informacij, nato pa se vrnil k vsem 50 uporabnikom in jih obvestil o uspehu njihove transakcije. " Tako bi lahko bila teoretično zmogljivost 50-krat boljša z Oracle (1 zapis na disk) kot s PostgreSQL (50 zapisov na disk).]

Ne pozabite narediti varnostne kopije

Bojte se. Zelo se bojite. Standardne varnostne kopije datotečnega sistema Unix ali Windows vam ne bodo imele dosledne in zato obnovljive baze podatkov na traku. Recimo, da vaš RDBMS shranjuje vašo bazo podatkov v dveh ločenih datotekah datotečnega sistema, foo.db in bar.db. Vsaka od teh datotek je velika 200 MB. Program za varnostno kopiranje zaženete in zažene datoteko foo.db na trak. Ko varnostno kopiranje nadaljuje, pride transakcija, ki zahteva spremembe foo.db in bar.db. RDBMS naredi te spremembe, spremembe v foo.db pa se pojavijo v delu datoteke, ki je že bila zapisana na trak. Sčasoma se program za varnostno kopiranje napiše na trak bar.db in s spremembo napiše novo različico. Vaš sistemski skrbnik prispe ob 9:00 zjutraj in trakove po kurirju pošlje v skladišče zunaj lokacije.

Opoldne se grda množica uporabnikov zbere pred vašo pisarno, jezna zaradi vašega dodajanja strani s Flash animacijo. Pošljete enega od svojih grafičnih oblikovalcev, da razloži podpredsedniku, kako & quotcool & quot; Mafija ga kamnira do smrti, nato pa vašo strežniško farmo požge do tal. Uspe vam izstopiti iz ruševin z eno od tistih neuničljivih tipkovnic HP Unix box. Uspeli ste pridobiti HP-jevo podporo ljudem, da vam nekaj časa omogočajo uporabo njihovih strojev in samozavestno nalagajo varnostni trak. Na vašo grozo RDBMS po obnovi zaduši kri. Izkazalo se je, da obstajajo povezane podatkovne strukture v foo.db in bar.db. Polovica podatkovnih struktur (tiste iz foo.db) je & quotold različica pred transakcijo & quot, polovica pa & quotne različica po transakciji & quot (tiste iz bar.db). Ena transakcija, ki se je zgodila med varnostnim kopiranjem, je povzročila popolno izgubo razpoložljivosti vseh vaših podatkov. Mogoče mislite, da to ni najbolj zanesljiva zasnova RDBMS na svetu, vendar v standardu SQL ali dokumentaciji proizvajalca ni ničesar, kar bi nakazovalo, da Oracle ali Microsoft SQL Server ne moreta delovati na ta način.

Popolno zrcaljenje preprečuje, da bi prekinil povezavo zaradi okvare medijev. A vseeno potrebujete posnetke svoje baze podatkov, če se nekdo nekoliko navduši z izjavo DELETE FROM ali v zgoraj opisani situaciji.

Varnostno kopijo relacijske baze podatkov lahko ustvarite na dva načina: brez povezave in on-line. Za varnostno kopijo izklopite zbirke podatkov in tako preprečite, da bi prišlo do transakcij. Večina prodajalcev bi raje uporabila njihov pripomoček za izdelavo datoteke izpisa vaše zunanje baze podatkov, vendar bo v praksi zadostovalo le varnostno kopiranje datotek datotečnega sistema Unix ali Windows. Varnostno kopiranje običajno uporabljajo zavarovalnice in drugi veliki uporabniki baz podatkov, ki morajo opraviti transakcije le osem ur na dan.

Vsak prodajalec RDBMS ima oglaševan način spletnega varnostnega kopiranja. Lahko je preprosto kot & quotcall to funkcijo in nekaj ur bomo zmeljevali in vam izdelali datoteko izpisa, ki vsebuje skladno bazo podatkov, vendar minus vse transakcije, ki so se zgodile po klicu funkcije. Tu je primer Oracle:

  • Razbij ogledalo.
  • Varnostno kopirajte z diskov, ki niso povezani z bazo podatkov.
  • Ponovno vzpostavi ogledalo.

Lekcije tukaj je več. Najprej, ne glede na postopek varnostnega kopiranja, ga preizkusite z občasnimi obnovitvami. Drugič, ne pozabite, da varnostno kopiranje in vzdrževanje RDBMS v večini podjetij opravlja redno zaposleni, imenovan & quotthe dba & quot, okrajšava za & quotdatabase administrator & quot. Če bi programska oprema delovala tako, kot je oglaševana, lahko med namestitvijo pričakujete nekaj dni bolečine, nato pa redno ponavljajočo se bolečino, ki bo posodobljena z izboljšanimi funkcijami. Vendar pa dba zaslužijo svoje zmerno razkošne plače. Noben marketinški hype ne zadostuje, da program C deluje tako, kot je oglaševan. To velja za RDBMS enako kot za urejevalnik besedil. Če se sprijaznite z napakami, je pri veliki namestitvi lahko redno delo. Najpogosteje to pomeni iskanje rešitev, saj so prodajalci počutijo počasi s popravki. Druga zaposlitev za polni delovni čas je lov na uporabnike, ki opravljajo poizvedbe, ki trajajo 1000-krat dlje, kot je potrebno, ker so pozabili zgraditi indekse ali SQL ne poznajo dobro. Otroška bolnišnica ima tri dba za polni delovni čas in trdo delajo.

Zaključimo z navedbo Perrina Harkinsa. Udeleženec diskusijskega foruma je vprašal, ali bi predpomnjenje db poizvedb v datotekah Unix pospešilo njegov spletni strežnik. Tu je Perrinov odgovor:

Povzetek

  • Vi in vaši programerji boste naredili napake pri izvajanju sistemov za obdelavo transakcij. Bolje je, če svojo energijo usmerite v aplikacijo, indeksiranje, transakcije in sočasnost pa prepustite sistemu za upravljanje baz podatkov.
  • Najbolj praktična programska oprema za upravljanje baz podatkov za spletna mesta je sistem relacijskega upravljanja baz podatkov s indeksirnikom celotnega besedila.
  • Če lahko programirate preglednico, lahko RDBMS programirate v SQL.
  • RDBMS so počasni. Pripravite se na nakup velikega stroja z veliko diski.
  • Sistemi RDBMS, čeprav veliko bolj zanesljivi kot večina kod, ki jih je napisala uporabniška transakcija, niso niti približno tako zanesljivi kot osnovni spletni strežnik, ki vleče statične datoteke iz datotečnega sistema. Pripravite se, da najamete polčasnega ali polno zaposlenega skrbnika baze podatkov, če se bo vaša baza povečala do pomembne velikosti.
    je avtorjeva kratka, sladka, brezplačna in spletna vadnica SQL
  • Praktični priročnik za SQL (Bowman, Emerson, Darnovsky 1996 Addison-Wesley) je moja najljubša uvodna vadnica SQL. Če želite videti, kako se jezik uporablja v resničnih namestitvah, dobite SQL za Smarties: Napredno programiranje SQL (Joe Celko 1999 Morgan Kaufmann).
  • Za nekaj zanimive zgodovine o prvi implementaciji relacijske baze podatkov obiščite http://www.mcjones.org/System_R/
  • Če si želite ogledati pokrov različnih sistemov za upravljanje z bazami podatkov, si oglejte Readings in Database Systems (Stonebraker in Hellerstein 1998 Morgan Kaufmann)
  • Z gradnjo objektno usmerjenega sistema podatkovnih baz boste lažje slekli zaslon RDBMS, kot opisuje O2 sistem.

Bralčevi komentarji

Žal ta stran pomaga ohranjati mite in napačne informacije o zbirkah podatkov.

Na primer:

Piše, da so danes na trgu RDBMS. Obstaja samo ena, Alphora Dataphor. Vsi ostali so DBMS-ji SQL in SQL krši preveč osnov relacijskega modela, da bi ga lahko imenovali relacijski jezik. Zato DBMS-ji SQL niso RDBMS-ji.

Posledica tega je, da so RDBMS počasni. DBMS-ji SQL so počasni, vendar RDBMS-i ne bi smeli biti, saj relacijski model določa, da se lahko fizični model precej razlikuje od logičnega modela baze podatkov. Tako lahko ohranimo čist logični model, vendar na fizični ravni izvajamo vse vrste optimizacij. To skušajo narediti optimizatorji SQL, vendar zaradi zapletenosti SQL in zmede logičnega in fizičnega modela ne uspejo.

Strinjam se z zgornjim plakatom, ker avtor zmede DBMS SQL ali relacijsko bazo podatkov. Vendar lahko avtorju to odpustim, ker je to tako pogosto v industriji (tudi če je iz MIT-a).

Počasnost večine baz podatkov med vstavljanjem je zato, ker večina sistemov baz podatkov prisili podatke na disk po vsakem vstavljanju. To je varnostna značilnost & # 39, ne zmogljivost & # 39bug & # 39 in nima nič skupnega z uspešnostjo. Preprosto zavijanje celotnega postopka nalaganja v vlečenje bi moralo odpraviti težavo.

Avtorjevi komentarji o tem, da PostgreSQL ni razširljiv, ker so komercialni sistemi napačni. PostgreSQL je leta 2002 uvedel zapisovanje zapisov vnaprej (o čemer govori) z različico 7.2. Poleg tega ima PostgreSQL MVCC, zaradi česar je zelo, zelo skabalen. nekatere komercialne izvedbe tega sploh nimajo, na primer strežnik MS SQL.

Merlin

Phil je nekoliko napačen glede prodajalcev, ki podpirajo podporo za zaklepanje na ravni vrstice. MS podpira zaklepanje na ravni vrstic že od SQL Server 7.0. V praksi se njegov upravitelj transakcij odloči, kako natančna bo ključavnica glede na parametre poizvedbe. Če bo v transakciji zaklenjenih preveč posameznih vrstic (v skladu z nekaterimi izračunanimi & # 34pragom stopnjevanja & # 34), bo zaklenjena celotna tabela.


TRI podatki in orodja

Program za sprostitev toksičnih snovi (TRI) spremlja industrijsko ravnanje s strupenimi kemikalijami, ki lahko škodujejo zdravju ljudi in okolju.

Podatke TRI poročajo nekateri industrijski in zvezni objekti. EPA te podatke daje na voljo prek več spletnih orodij, od katerih številna dodajajo kontekst, da bodo poročani podatki bolj razumljivi.

Na tej strani:

TRI podatki, kot jih sporočajo objekti

Envirofacts Obrazec R Iskanje

Opis:Pridobite seznam vseh obrazcev za poročanje TRI, ki jih je objekt poslal v svoji zgodovini TRI, in si oglejte obrazce za katero koli prijavljeno kemikalijo.

Vsebina:Podatki, o katerih poroča objekt

Izhod:Faksimil TRI obrazca za poročanje

Envirofacts Obrazec R & amp Obrazec A Prenos

Opis:Izberite in si oglejte določene podatkovne elemente na obrazcu za poročanje TRI R in obrazcu A.

Vsebina:Podatki, o katerih poroča objekt

Izhod:datoteke .csv ali tabele .html

Nacionalna poročila / informativni listi

Informativni listi TRI

Opis:Pregled podatkov TRI za lokacijo, industrijski sektor ali kemikalije. Idealno za začetnike TRI uporabnikov. Na voljo tudi v španščini.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod: Informativni listi za tiskanje

TRI nacionalna analiza

Opis:Letna analiza podatkov TRI v pripovedni in grafični obliki. Interaktivni zemljevidi, grafikoni in tabele poudarjajo podatke na nacionalni ravni, informativni listi pa podrobno določajo posamezna geografska območja.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod:Interaktivno spletno poročilo s tiskovnimi listi

Orodja TRI za večino uporabnikov

TRI iskanje

Opis:Poiščite objekte TRI v bližini naslova ali lokacije ali po imenu objekta in za vsakega si oglejte podatke TRI na povzetku. Rezultati vključujejo informacije o izpustih v okolje, značilnostih prebivalstva, preprečevanju onesnaževanja ter skladnosti in izvrševanju. Idealno za začetnike TRI uporabnikov in za uporabo v mobilnih napravah.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod: Rezultati iskanja, organizirani v tematske razdelke, prilagodljivi zemljevidi, tabele in grafi prenašajo podatke, ki ustrezajo tiskalnikom, povzetke

TRI Explorer

Opis:Iščite po kemikalijah, lokacijah, industrijskih panogah ali plemenskih deželah. Osredotočite se na izpuste kemikalij, prenose odpadkov ali količine odpadkov.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod: Poročila, sestavljena iz podatkovnih tabel, ki jih je mogoče razvrstiti (večina vključuje zmožnost razčlenjevanja na posamezne obrazce za poročanje v objektu), v obliki preglednic združljive datoteke .csv / .txt ali rezultati v različicah PDF / Word

Envirofacts TRI Search

Opis:Raziščite osnovne informacije na ravni objekta za vse objekte, ki so poročali o podatkih TRI od leta 1987. Iščite po imenu objekta, kemikaliji, lokaciji, industrijskem sektorju ali plemenski zemlji.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod: Seznam objektov s povezavami za ogled podrobnega poročila o objektu, poročila o preprečevanju onesnaževanja ali poročila o presejanju tveganj za vsakega posebej.

TRI podatki in orodja za napredno / prilagojeno analizo

Osnovne podatkovne datoteke

Opis:Podatki za poročevalno leto, ki jih vsebuje ena podatkovna datoteka za posamezno državo ali celotno ZDA. Vsaka datoteka vsebuje najpogosteje uporabljene podatke iz obrazca za poročanje TRI. To je preprostejši nabor podatkov v primerjavi z datotekami Basic Plus. Priporočljivo za uporabnike, ki poznajo podatke TRI.

Vsebina:Podatki, o katerih poroča objekt

Izhod: datoteke .csv

Osnovne podatkovne datoteke Plus

Opis:Podatki za poročevalno leto za celotne ZDA Vsaka datoteka .zip je sestavljena iz 10 datotek .txt, ki skupaj vsebujejo vse podatkovne elemente iz obrazca za poročanje TRI (razen obrazca R, seznam 1, ki je na voljo ločeno). Priporočljivo za uporabnike, ki poznajo podatke TRI.

Vsebina:Podatki, o katerih poroča objekt

Izhod:Datoteke .txt, ločene z zavihki, stisnjene v datoteke .zip.

Envirofacts prilagojeno iskanje

Opis:Ustvarite poročila o več področjih fokusa z uporabo obsežnega nabora podatkovnih elementov TRI. Od vseh spletnih orodij TRI to zagotavlja največ prilagodljivosti pri iskanju in izbiri načina organiziranja rezultatov. Priporočljivo za uporabnike, ki poznajo poizvedbe v zbirki podatkov.

Vsebina:Podatki, o katerih poroča objekt

Izhod: tabela .html ali datoteka .csv

Envirofacts EZ Search

Opis:Ustvarite poročila o več področjih fokusa. Ponuja enak obsežen nabor možnosti za organiziranje rezultatov kot Prilagojeno iskanje, vendar s preprostejšim načinom izbire področij ostrenja. Na voljo so skupine podatkov in statistične funkcije. Priporočljivo za uporabnike, ki poznajo poizvedbe v zbirki podatkov.

Vsebina:Podatki, o katerih poroča objekt

Izhod: datoteke .csv ali html tabele

Podatki in orodja, osredotočena na temo

TRI Plemensko iskanje (podatki za objekte na plemenskih deželah ali v njihovi bližini)

Opis:Zbirni podatki o izpustih in drugih dejavnostih ravnanja s kemičnimi odpadki, o katerih poroča TRI, v objektih na plemenskih deželah ali manj kot 10 milj.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod:Razvrščljive tabele prilagodljivi grafikoni in grafi

Orodje za iskanje TRI P2 (preprečevanje onesnaževanja)

Opis:Poiščite in primerjajte informacije o tem, kako naprave TRI in njihova matična podjetja ravnajo s kemičnimi odpadki in si prizadevajo za zmanjšanje izpustov kemikalij v okolje. To orodje ponuja celovit pregled podatkov o zmanjšanju virov in ravnanju z odpadki (tj. Izpusti, recikliranje, predelava in obdelava energije), o katerih poročajo objekti TRI.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod:Razvrščljive tabele prilagodljivi grafikoni in grafi

Nadzorna plošča industrijskega sektorja TRI P2 (preprečevanje onesnaževanja)

Opis:Na podlagi podatkov, o katerih poroča TRI, filtrirajte podatke o preprečevanju onesnaževanja in ravnanju z odpadki za določene industrijske sektorje.

Vsebina: Podatki, ki jih poroča objekt, in dodatne kontekstualne informacije

Izhod: Grafikoni in grafi, pripravljeni na predstavitev

Zgodovina izvrševanja in skladnosti (ECHO) (skladnost objekta)

Opis:Informacije o uveljavljanju in skladnosti za TRI in druge objekte, ki jih ureja EPA. Ne upravlja program TRI.

Vsebina:Podatki iz več programov EPA in nekaterih baz podatkov, ki niso EPA

Izhod:Podrobna poročila o objektih prenašajo podatke

Primerjalna plošča DMR / TRI (izpusti površinske vode)

Opis:Ugotovite, katera onesnaževala se odvajajo v vodne poti in katera podjetja. Ne upravlja program TRI.

Vsebina:Podatki nacionalnega sistema za odvajanje onesnaževal (NPDES) in TRI

Izhod:Interaktivne karte in grafi .csv datoteke

Okoljski kazalniki za pregled tveganj (RSEI) (primerjava relativnega tveganja)

Opis:Raziščite morebitne vplive izpustov kemikalij, o katerih poroča TRI, na relativno tveganje in jih primerjajte za različne kemikalije, lokacije, objekte in leta poročanja. (Opomba: spodnji gumb »GO« vodi do EasyRSEI. Za več informacij in druge izdelke RSEI obiščite glavno spletno mesto RSEI.)

Vsebina: Podatki, o katerih poroča objekt, in dodatne kontekstualne informacije in viri podatkov

Izhod:Numerični rezultati prenosa grafičnih podatkov, pripravljenih za predstavitev

TRI-CHIP (strupenost kemikalij TRI)

Opis:Dostopajte in analizirajte informacije o toksičnosti kemikalij, zajetih s TRI, s pomočjo te prenosljive zbirke podatkov Microsoft Access.

Vsebina: Informacije o toksičnosti iz več virov

Izhod:Poročila o profilu kemijske toksičnosti za tiskanje

Datoteke s podatki o dioksinu / TEQ (podatki o dioksinu in vrednosti enakovrednosti toksičnosti)

Opis:Podatki o masni količini dioksina iz obrazca R za poročanje TRI, seznam 1, skupaj z vrednostmi toksične enakovrednosti, izračunanimi z EPA. Te datoteke dopolnjujejo datoteke Basic in Basic Plus Data. Upoštevajte, da so podatki o dioksinu že vključeni v večino drugih orodij TRI. Priporočljivo za uporabnike, ki poznajo podatke TRI.

Vsebina:Podatki, o katerih poroča objekt

Izhod:datoteke .csv

EnviroMapper (preslikava različnih okoljskih podatkov)

Opis:Preslikajte okoljske podatke in dodajte zanimive točke za ogled podatkov v kontekstu. Ne upravlja program TRI.

Vsebina: Podatki iz več programov EPA in GIS podatki


Poglej si posnetek: урок 36 второго уровня Переезд (September 2021).