Samskipti við gagnagrunna

Hægt er að eiga samskipti við gagnagrunnana með mismunandi tólum og tungumálum, allt frá skipanatólum, þróunarumhverfum eða önnur forritunarmál.

Í þessu námskeiði munum við styðjast við SQLite í skel til að búa til gagnagrunn og framkvæma SQL skipanir. Í hluta námskeiðsins sem snýr að PostgreSQL munum við fá gefinn aðgang að gagnagrunn sem hýstur er annars staðar. Þið munuð nota IDE til að tengjast þessum grunninum og framkvæma fyrirspurnir. Vinsamlegast athugið að þið hafið aðeins lesréttindi (e. read access) á PostgreSQL grunninum, en í SQLite eruð þið með staðbundinn gagnagrunnur þar sem þið getið skrifað og lesið að vild.

SQLite

SQLite er létt gagnagrunnskerfi sem hentar vel fyrir minni verkefni þar sem einfaldleiki og hraði eru mikilvægir þættir. SQLite er frjálst, auðvelt í uppsetningu og þarf ekki sérstaka gagnasafnsþjóna. Það er víða notað, meðal annars í vöfrum, símum og ýmsum forritum (sjá þekkt dæmi hér).

SQLite var búið til af Richard Hipp í kringum 2000 þegar hann vann hjá General Dynamics í samstarfi við Bandaríkjaher. Hönnunarmarkmið var að þróa kerfi sem getur verið notað án þess að þurfa gagnasafnskerfi (sjá hér).

Uppsetning

Windows

Til að setja upp SQLite á Windows:

  1. Farðu á www.sqlite.com.
  2. Sæktu og unzipaðu nýjustu útgáfu.
  3. Settu möppuna á rót disks (t.d. C:\SQLite).
  4. Bættu við slóðinni í Environment Variables undir system path (PATH breytan).

Linux og macOS

SQLite er oftast sjálfgefið uppsett á macOS og flestum Linux dreifingum, undir sqlite3.

Aðrar uppsetningaleiðir

  • DB-Browser: Ágætis tól til að halda utan um lítil venslagagnasöfn og byggir á SQLite: https://sqlitebrowser.org/
  • SQLiteOnline.com: Hægt að æfa sig online hér og m.a. loada .db skrám. En notið þetta einungis sem síðasta úrræði ef uppsetning gengur ekki: https://sqliteonline.com/
  • SQLite í R: Hægt að nota R til að halda utan um gagnagrunninn og framkvæma fyrirspurnir. Hér náið þið að slá tvær flugur í einu höggi með að gera skýrslugerð og gagnavinnslu í sama skjali.

Notkun á skipanaskel

SQLite er notað í gegnum skipanaskel sem gerir notendum kleift að framkvæma SQL fyrirspurnir beint á gagnagrunnum.

Sækið skránna surgeries.db og keyrið í skel (e. terminal) úr sömu möppu og skráin er. Notið cd (stendur fyrir change directory) til að breyta um möppu.

Keyrið skipunina sqlite3 í skelinni. Opnið gagnasafnið með skipuninni .open surgeries.db. Prófið nokkrar skipanir sem finnast með .help.

-- Open the database
.open surgeries.db

-- List all tables
.tables

-- Show the structure of a table
.schema table_name

-- Display results in column mode
.mode columns

-- Enable headers in results
.headers on

SQLite er hannað til að vera einfalt og hratt, sem gerir það að góðu vali fyrir notendur sem þurfa ekki flóknari eiginleika stærri gagnagrunnskerfa eins og PostgreSQL eða MySQL.

PostgreSQL

PostgreSQL er mjög öflugt og opið gagnagrunnskerfi sem hentar vel fyrir bæði smá og stór verkefni þar sem gagnasöfnun, samhliða vinnsla, og flókin fyrirspurnarefni eru mikilvæg. Það er byggt á SQL staðlinum og styður einnig fjölbreyttar útvíkkanir. PostgreSQL er þekkt fyrir sveigjanleika sinn, öryggi, og mikla virkni, sem gerir það að vinsælu vali í mörgum forritum og þjónustum.

Uppruni PostgreSQL má rekja til áranna 1986 á Berkeley háskólanum, og það hefur þróast í gegnum árin í samræmi við þarfir notenda, með áherslu á stuðning við flókin gögn og stærðfræðilega útreikninga.

psql er skipunartól fyrir PostgreSQL sem gerir notendum kleift að framkvæma SQL fyrirspurnir og stjórna gagnagrunnum í skel. Þetta tól býður upp á öfluga aðgerðir og skýrslur.

Þar sem PostgreSQL er hannað fyrir stærri verkefni og flóknari gagnasöfn, er það oftast notað í þróunarumhverfum (IDE) til að tengjast gagnagrunnum og framkvæma fyrirspurnir.

Uppsetning á PostgreSQL og á þróunarumhverfi (DataGrip, DBeaver eða VS Code) — ásamt því hvernig tengjast á gagnagrunni — er í Tæknimál → Gagnagrunnstól.

Gagnagrunnar með R

Gagnagrunnar og SQL í RStudio - R-bloggers útskýrir hvernig hægt er að vinna með gagnagrunna og SQL beint í RStudio. Hún fer yfir helstu tól og aðferðir til að tengjast gagnagrunnum eins og SQLite og PostgreSQL með R.

SQLite með R

RSQLite pakki

Kostir:

  • RSQLite gerir R notendum kleift að vinna með SQLite gagnagrunna beint innan R umhverfisins.
  • Auðvelt í notkun fyrir smærri gagnasöfn eða sýnidæmi þar sem ekki er þörf á stórum gagnagrunnskerfum.
  • Skjölun fyrir RSQLite útskýrir uppsetningu og notkun.

Dæmi um notkun:

## Hlaða inn pakkanum
library(RSQLite)

## Tengja við SQLite gagnagrunn
con <- dbConnect(RSQLite::SQLite(), "nafn_grunns.db")

## Keyra SQL fyrirspurn
res <- dbSendQuery(con, "SELECT * FROM tafla")
data <- fetch(res, n = -1)

## Loka tengingu
dbDisconnect(con)

PostgreSQL með R

RPostgreSQL pakki

Kostir:

  • RPostgreSQL pakkinn leyfir R notendum að tengjast PostgreSQL gagnagrunnum beint og vinna með gögn í R.
  • Gagnlegt fyrir þá sem vinna með stór gagnasöfn í PostgreSQL og þurfa að framkvæma tölfræðigreiningu í R.
  • Skjölun fyrir RPostgreSQL veitir ítarlegar upplýsingar um uppsetningu og notkun.

Dæmi um notkun:

## Hlaða inn pakkanum
library(RPostgreSQL)

## Tengja við PostgreSQL gagnagrunn
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "nafn_grunns", host = "localhost",
                 port = 5432, user = "notandi", password = "lykilorð")

## Keyra SQL fyrirspurn
res <- dbSendQuery(con, "SELECT * FROM tafla")
data <- fetch(res, n = -1)

## Loka tengingu
dbDisconnect(con)

Gagnagrunnar í Python

SQLite með Python

sqlite3 pakki

Kostir:

  • sqlite3 er innbyggður gagnagrunnspakki í Python sem gerir auðvelt að vinna með SQLite gagnagrunna án þess að setja upp auka hugbúnað.
  • Hentar fyrir smærri verkefni eða þegar einföld gagnavinnsla er nauðsynleg.
  • Skjölun fyrir sqlite3 útskýrir hvernig á að nota þennan pakka með einföldum dæmum.

Dæmi um notkun:

import sqlite3

## Tengja við SQLite gagnagrunn
conn = sqlite3.connect('nafn_grunns.db')

## Búa til cursor og keyra SQL fyrirspurn
cur = conn.cursor()
cur.execute("SELECT * FROM tafla;")
results = cur.fetchall()

## Loka tengingu
cur.close()
conn.close()

PostgreSQL með Python

psycopg2 pakki

Kostir:

  • psycopg2 er vinsælasti pakkinn fyrir tengingar við PostgreSQL gagnagrunna í Python.
  • Styður flóknar SQL fyrirspurnir, tengingar við stór gagnasöfn, og gerir auðvelt að sækja og vinna með gögn.
  • Skjölun fyrir psycopg2 veitir nákvæmar leiðbeiningar um uppsetningu og notkun.

Dæmi um notkun:

import psycopg2

## Tengja við PostgreSQL gagnagrunn
conn = psycopg2.connect(
    host="localhost",
    database="nafn_grunns",
    user="notandi",
    password="lykilorð"
)

## Búa til cursor og keyra SQL fyrirspurn
cur = conn.cursor()
cur.execute("SELECT * FROM tafla;")
results = cur.fetchall()

## Loka tengingu
cur.close()
conn.close()