Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
Tha mi ag innse dhut bho eòlas pearsanta dè a bha feumail càite agus cuin. Is e sealladh farsaing agus tràchdas a th’ ann, gus am bi e soilleir dè agus càite an urrainn dhut tuilleadh a chladhach - ach an seo tha eòlas pearsanta pearsanta agam a-mhàin, is dòcha gu bheil a h-uile dad gu tur eadar-dhealaichte dhut.

Carson a tha e cudromach fios a bhith agad agus a bhith comasach air cànanan ceiste a chleachdadh? Aig a chridhe, tha grunn ìrean obrach cudromach aig Saidheans Dàta, agus is e a’ chiad agus an rud as cudromaiche (às aonais, gu cinnteach cha obraich dad!) A bhith a’ faighinn no a’ toirt a-mach dàta. Mar as trice, tha an dàta na shuidhe an àiteigin ann an cruth air choreigin agus feumar “faighinn air ais” às an sin. 

Leigidh cànanan ceist leat an dearbh dàta seo a thoirt a-mach! Agus an-diugh innsidh mi dhut mu na cànanan ceiste sin a tha air a bhith feumail dhomh agus innsidh mi dhut agus seallaidh mi dhut càite agus ciamar - carson a tha feum air sgrùdadh.

Bidh trì prìomh bhlocaichean de sheòrsan ceiste dàta ann, air am bi sinn a’ beachdachadh san artaigil seo:

  • Is e cànanan ceiste “àbhaisteach” na thathas a’ tuigsinn gu cumanta nuair a bhios tu a’ bruidhinn air cànan ceiste, leithid ailseabra dàimheach no SQL.
  • Cànanan ceist sgrìobhaidh: mar eisimpleir, pandathan rudan Python, sgrìobhadh numpy no shligean.
  • Cànanan ceist airson grafaichean eòlas agus stòran-dàta graf.

Chan eil anns a h-uile dad a tha sgrìobhte an seo ach eòlas pearsanta, rud a bha feumail, le tuairisgeul air suidheachaidhean agus “carson a bha feum air” - faodaidh a h-uile duine feuchainn air mar as urrainn do shuidheachaidhean coltach ris a thighinn nad rathad agus feuchainn ri ullachadh air an son ro-làimh le bhith a’ tuigsinn nan cànanan sin. mus fheum thu tagradh a dhèanamh (gu h-èiginneach) air pròiseact no eadhon faighinn gu pròiseact far a bheil feum orra.

Cànanan ceiste “àbhaisteach”.

Tha cànanan ceist àbhaisteach dìreach anns an t-seadh a bhios sinn mar as trice a’ smaoineachadh mun deidhinn nuair a bhios sinn a’ bruidhinn air ceistean.

Ailseabra co-cheangailte

Carson a tha feum air ailseabra dàimheach an-diugh? Gus tuigse mhath a bhith agad air carson a tha cànanan ceiste air an structaradh ann an dòigh shònraichte agus gan cleachdadh gu mothachail, feumaidh tu am bun-stèidh a thuigsinn.

Dè a th’ ann an ailseabra dàimheil?

Tha am mìneachadh foirmeil mar a leanas: tha ailseabra dàimheach na shiostam obrachaidh dùinte air dàimhean ann am modail dàta dàimh. Gus a chuir beagan nas daonna, is e seo siostam obrachaidh air bùird gus am bi an toradh an-còmhnaidh na bhòrd.

Faic a h-uile gnìomh dàimh ann an seo artaigil bho Habr - an seo tha sinn a 'toirt cunntas air carson a dh'fheumas tu fios a bhith agad agus far a bheil e feumail.

Carson?

Bidh tòiseachadh a’ tuigsinn cò mu dheidhinn a tha cànanan ceiste agus dè na gnìomhan a tha air cùl abairtean ann an cànanan ceiste sònraichte gu tric a’ toirt tuigse nas doimhne air dè a tha ag obair ann an cànanan ceiste agus ciamar.

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
Air a thoirt bho seo artaigilean. Eisimpleir de ghnìomhachd: ceangal, a tha a 'ceangal bùird.

Stuthan airson sgrùdadh:

Cùrsa tòiseachaidh math bho Stanford. San fharsaingeachd, tha tòrr stuthan air ailseabra agus teòiridh dàimh - Coursera, Udacity. Tha cuideachd tòrr stuth air-loidhne, math nam measg cùrsaichean acadaimigeach. Mo chomhairle phearsanta: feumaidh tu ailseabra dàimheach a thuigsinn gu math - is e seo bunait nam bunaitean.

SQL

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
Air a thoirt bho seo artaigilean.

Tha SQL gu bunaiteach na bhuileachadh air ailseabra co-cheangailte - le uamhas cudromach, tha SQL dearbhach! Is e sin, nuair a bhios tu a’ sgrìobhadh ceist ann an cànan ailseabra dàimheach, bidh thu ag ràdh mar a nì thu àireamhachadh - ach le SQL, bidh thu a’ sònrachadh na tha thu airson a thoirt a-mach, agus an uairsin bidh an DBMS mu thràth a’ gineadh abairtean (èifeachdach) ann an cànan ailseabra dàimheach ( tha an co-ionannachd aca aithnichte dhuinn mar Teòirim Codd).

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
Air a thoirt bho seo artaigilean.

Carson?

DBMSs càirdeach: Tha Oracle, Postgres, SQL Server, msaa fhathast cha mhòr anns a h-uile àite agus tha teansa air leth àrd ann gum feum thu eadar-obrachadh leotha, a tha a’ ciallachadh gum feum thu an dàrna cuid SQL a leughadh (a tha glè choltach) no a sgrìobhadh ( chan eil e coltach idir).

Dè a leughadh agus a sgrùdadh

A rèir nan aon cheanglaichean gu h-àrd (mu dheidhinn ailseabra co-cheangailte), tha tòrr stuth iongantach ann, mar eisimpleir, seo.

Co-dhiù, dè a th’ ann an NoSQL?

“Is fhiach a bhith a’ daingneachadh a-rithist gu bheil tùs gu tur gun spionnadh aig an teirm “NoSQL” agus nach eil mìneachadh no ionad saidheansail air a chùlaibh san fharsaingeachd.” Co-fhreagairt artaigil air Habr.

Gu dearbh, thuig daoine nach eil feum air modal dàimh iomlan gus fuasgladh fhaighinn air mòran dhuilgheadasan, gu sònraichte dhaibhsan far a bheil, mar eisimpleir, coileanadh deatamach agus cuid de cheistean sìmplidh le cruinneachadh a’ faighinn làmh an uachdair - far a bheil e deatamach metrics obrachadh a-mach gu sgiobalta agus an sgrìobhadh chun an stòr-dàta, agus tha a’ mhòr-chuid de fheartan dàimheil air an tionndadh a-mach gu bhith chan ann a-mhàin neo-riatanach, ach cuideachd cronail - carson a nì thu gnàthachadh air rudeigin ma sgrios e an rud as cudromaiche dhuinn (airson gnìomh sònraichte) - cinneasachd?

Cuideachd, gu tric bidh feum air sgeamaichean sùbailte an àite sgeamaichean matamataigeach stèidhichte a’ mhodail dàimh chlasaigeach - agus tha seo gu h-iongantach a’ sìmpleachadh leasachadh tagraidh nuair a tha e deatamach an siostam a chleachdadh agus tòiseachadh ag obair gu sgiobalta, a’ giullachd nan toraidhean - no an sgeama agus an seòrsa dàta a tha air a stòradh. chan eil iad cho cudromach.

Mar eisimpleir, tha sinn a 'cruthachadh siostam eòlach agus tha sinn airson fiosrachadh a stòradh air raon sònraichte còmhla ri beagan fiosrachaidh meta - is dòcha nach eil sinn eòlach air na raointean gu lèir agus dìreach a' stòradh JSON airson gach clàr - tha seo a 'toirt dhuinn àrainneachd gu math sùbailte airson an dàta a leudachadh modail agus ag ath-aithris gu sgiobalta - mar sin anns a’ chùis seo, bidh NoSQL eadhon nas fheàrr agus nas leughaidh. Inntrigeadh eisimpleir (bho aon de na pròiseactan agam far an robh NoSQL ceart far an robh feum air).

{"en_wikipedia_url":"https://en.wikipedia.org/wiki/Johnny_Cash",
"ru_wikipedia_url":"https://ru.wikipedia.org/wiki/?curid=301643",
"ru_wiki_pagecount":149616,
"entity":[42775,"Джонни Кэш","ru"],
"en_wiki_pagecount":2338861}

Faodaidh tu barrachd a leughadh an seo mu dheidhinn NoSQL.

Dè a bhith ag ionnsachadh?

An seo, an àite sin, chan fheum thu ach mion-sgrùdadh mionaideach a dhèanamh air a’ ghnìomh agad, dè na feartan a th’ aige agus dè na siostaman NoSQL a tha rim faighinn a bhiodh iomchaidh don tuairisgeul seo - agus an uairsin tòisich a’ sgrùdadh an t-siostam seo.

Cànanan Ceist Sgriobtachaidh

An toiseach, tha e coltach, dè a tha aig Python ri dhèanamh leis san fharsaingeachd - is e cànan prògramadh a th’ ann, agus chan ann mu cheistean idir.

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta

  • Tha Pandas gu litireil na sgian aig Arm na h-Eilbheis de Saidheans Dàta; bidh tòrr cruth-atharrachadh dàta, cruinneachadh, msaa a’ tachairt ann.
  • Numpy - àireamhachadh vector, matrices agus ailseabra sreathach an sin.
  • Scipy - tha tòrr matamataig anns a 'phacaid seo, gu sònraichte stats.
  • Obair-lann Jupyter - tha tòrr mion-sgrùdadh dàta rannsachail a’ freagairt gu math ri coimpiutairean-uchd - feumail fios a bhith agad.
  • Iarrtasan - ag obair leis an lìonra.
  • Tha fèill mhòr air Pyspark am measg innleadairean dàta, is coltaiche gum feum thu eadar-obrachadh le seo no Spark, dìreach air sgàth cho mòr sa tha iad.
  • * Selenium - glè fheumail airson dàta a chruinneachadh bho làraich agus goireasan, uaireannan dìreach chan eil dòigh eile air an dàta fhaighinn.

Mo phrìomh chomhairle: ionnsaich Python!

Bidh pandathan

Gabhamaid an còd a leanas mar eisimpleir:

import pandas as pd
df = pd.read_csv(“data/dataset.csv”)
# Calculate and rename aggregations
all_together = (df[df[‘trip_type’] == “return”]
    .groupby(['start_station_name','end_station_name'])
                  	    .agg({'trip_duration_seconds': [np.size, np.mean, np.min, np.max]})
                           .rename(columns={'size': 'num_trips', 
           'mean': 'avg_duration_seconds',    
           'amin': min_duration_seconds', 
           ‘amax': 'max_duration_seconds'}))

Gu bunaiteach, chì sinn gu bheil an còd a’ freagairt air pàtran clasaigeach SQL.

SELECT start_station_name, end_station_name, count(trip_duration_seconds) as size, …..
FROM dataset
WHERE trip_type = ‘return’
GROUPBY start_station_name, end_station_name

Ach is e am pàirt chudromach gu bheil an còd seo mar phàirt den sgriobt agus den loidhne-phìoban; gu dearbh, tha sinn a’ fighe cheistean a-steach do loidhne-phìoban Python. Anns an t-suidheachadh seo, tha cànan na ceiste a’ tighinn thugainn bho leabharlannan leithid Pandas no pySpark.

San fharsaingeachd, ann am pySpark chì sinn cruth-atharrachadh dàta den aon seòrsa tro chànan ceist ann an spiorad:

df.filter(df.trip_type = “return”)
  .groupby(“day”)
  .agg({duration: 'mean'})
  .sort()

Càite agus dè a leughadh

Air Python fhèin san fharsaingeachd gun duilgheadas lorg stuthan airson sgrùdadh. Tha àireamh mhòr de chlasaichean teagaisg air-loidhne pandathan, pySpark agus cùrsaichean air adhart Spark (agus cuideachd leis fhèin DS). Gu h-iomlan, tha an susbaint an seo sgoinneil airson googling, agus nam feumainn aon phasgan a thaghadh airson fòcas a chuir air, is e pandathan a bhiodh ann, gu dearbh. A thaobh measgachadh de stuthan DS + Python cuideachd tòrr de.

Shell mar chànan ceist

Is e grunn phròiseactan giollachd dàta agus mion-sgrùdadh leis an do dh’ obraich mi, gu dearbh, sgriobtaichean shligean a bhios a ’gairm còd ann am Python, Java, agus na h-òrdughan sligean fhèin. Mar sin, san fharsaingeachd, faodaidh tu beachdachadh air pìoban ann am bash / zsh / msaa mar sheòrsa de cheist àrd-ìre (faodaidh tu, gu dearbh, lùban stuth a chuir a-steach an sin, ach chan eil seo àbhaisteach airson còd DS ann an cànanan sligean), leig dhuinn a thoirt seachad eisimpleir shìmplidh - dh'fheumadh mi mapadh QID de wikidata a dhèanamh agus ceanglaichean slàn ris na wikis Ruiseanach is Beurla, airson seo sgrìobh mi iarrtas sìmplidh bho na h-òrdughan sa bash agus airson an toraidh sgrìobh mi sgriobt sìmplidh ann am Python, a rinn mi a chur ri chèile mar seo:

pv “data/latest-all.json.gz” | 
unpigz -c  | 
jq --stream $JQ_QUERY | 
python3 scripts/post_process.py "output.csv"

far a bheil

JQ_QUERY = 'select((.[0][1] == "sitelinks" and (.[0][2]=="enwiki" or .[0][2] =="ruwiki") and .[0][3] =="title") or .[0][1] == "id")' 

B’ e seo, gu dearbh, an loidhne-phìoban gu lèir a chruthaich am mapadh riatanach; mar a chì sinn, dh’ obraich a h-uile càil ann am modh srutha:

  • pv filepath - a’ toirt bàr adhartais stèidhichte air meud faidhle agus a’ dol seachad air na th’ ann air adhart
  • unpigz -c leugh pàirt den tasglann agus thug e dha jq
  • jq leis an iuchair - thug sruth a-mach an toradh sa bhad agus chuir e chun iar-phròiseasar e (coltach ris a’ chiad eisimpleir) ann am Python
  • air an taobh a-staigh, bha am postprocessor na inneal stàite sìmplidh a chruthaich an toradh 

Gu h-iomlan, loidhne-phìoban iom-fhillte ag obair ann am modh sruth air dàta mòr (0.5TB), gun stòrasan cudromach agus air a dhèanamh bho loidhne-phìoban sìmplidh agus inneal no dhà.

Tip cudromach eile: a bhith comasach air obrachadh gu math agus gu h-èifeachdach anns a’ chrìoch agus sgrìobhadh bash/zsh/etc.

Càite am bi e feumail? Tha, cha mhòr anns a h-uile àite - a-rithist, tha tòrr stuthan ann airson sgrùdadh air an eadar-lìn. Gu sònraichte, an seo seo an artaigil agam roimhe.

R sgriobt

A-rithist, faodaidh an leughadair èigheach - uill, is e cànan prògramadh slàn a tha seo! Agus gu dearbh, bidh e ceart. Ach, mar as trice thachair mi ri R ann an leithid de cho-theacsa a bha, gu dearbh, gu math coltach ri cànan ceist.

Tha R na àrainneachd coimpiutaireachd staitistigeil agus cànan airson coimpiutaireachd statach agus fradharc (a rèir gu seo).

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
air a thoirt bho seo. Co-dhiù, tha mi ga mholadh, stuth math.

Carson a tha feum aig neach-saidheans dàta air R? Co-dhiù, leis gu bheil sreath mhòr de dhaoine neo-IT a bhios a’ sgrùdadh dàta ann an R. Thàinig mi tarsainn air anns na h-àiteachan a leanas:

  • Roinn cungaidh-leigheis.
  • Bith-eòlaichean.
  • Roinn ionmhais.
  • Daoine le foghlam dìreach matamataigeach a bhios a’ dèiligeadh ri stats.
  • Modalan staitistigeil sònraichte agus modalan ionnsachaidh inneal (nach fhaighear gu tric ach ann an dreach an ùghdair mar phasgan R).

Carson a tha e dha-rìribh na chànan ceiste? Anns an fhoirm anns a bheil e gu tric air a lorg, is e iarrtas a th 'ann airson modail a chruthachadh, a' gabhail a-steach a bhith a 'leughadh dàta agus a' suidheachadh crìochan ceist (modail), a bharrachd air a bhith a 'sealltainn dàta ann am pasganan mar ggplot2 - tha seo cuideachd na dhòigh air ceistean a sgrìobhadh. .

Eisimpleirean de cheistean airson lèirsinn

ggplot(data = beav, 
       aes(x = id, y = temp, 
           group = activ, color = activ)) +
  geom_line() + 
  geom_point() +
  scale_color_manual(values = c("red", "blue"))

San fharsaingeachd, tha mòran bheachdan bho R air imrich a-steach do phasganan python leithid pandathan, numpy no scipy, leithid dataframes agus vectorization dàta - mar sin san fharsaingeachd bidh tòrr rudan ann an R a’ coimhead eòlach agus goireasach dhut.

Tha mòran stòran ann airson sgrùdadh, mar eisimpleir, seo.

Grafaigean eòlais

An seo tha eòlas beagan annasach agam, oir gu math tric feumaidh mi a bhith ag obair le grafaichean eòlas agus cànanan ceist airson grafaichean. Mar sin, leig dhuinn dìreach a dhol thairis air na bunaitean, oir tha am pàirt seo beagan nas annasaiche.

Ann an stòran-dàta clasaigeach clasaigeach tha sgeama stèidhichte againn, ach an seo tha an sgeama sùbailte, is e “colbh” a th’ anns gach ro-aithris agus eadhon barrachd.

Smaoinich gu robh thu a’ modaladh neach agus gu robh thu airson cunntas a thoirt air prìomh rudan, mar eisimpleir, gabhamaid neach sònraichte, Douglas Adams, agus cleachd an tuairisgeul seo mar bhunait.

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
www.wikidata.org/wiki/Q42

Nan cleachdadh sinn stòr-dàta dàimh, dh'fheumamaid clàr mòr no bùird a chruthachadh le àireamh mhòr de cholbhan, a' mhòr-chuid dhiubh NULL no air a lìonadh le luach ceàrr bunaiteach, mar eisimpleir, chan eil e coltach gu bheil mòran againn inntrigeadh ann an leabharlann nàiseanta Chòirneis - gu dearbh, b' urrainn dhuinn an cur ann an clàran fa leth, ach aig a 'cheann thall bhiodh seo na oidhirp air cearcall sùbailte loidsigeach a dhealbhadh le ro-aithrisean a' cleachdadh fear co-cheangailte stèidhichte.

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
Mar sin smaoinich gu bheil a h-uile dàta air a stòradh mar ghraf no mar abairtean dà-chànanach agus aonarach boolean.

Càite an coinnich thu eadhon ri seo? An toiseach, ag obair le wiki dàta, agus le stòran-dàta grafa no dàta ceangailte.

Is iad na leanas na prìomh chànanan ceiste a chleachd mi agus a dh’ obraich mi leotha.

SPARQL

Wiki:
SPARQL (acronaim ath-chuairteach от Eng. Pròtacal SPARQL agus Cànan Ceist RDF) - cànan ceist dàta, air a riochdachadh leis a 'mhodail MLS a 'ciallachadh, a bharrachd air protocol gus na h-iarrtasan sin a sgaoileadh agus freagairt a thoirt dhaibh. Tha SPARQL na mholadh Co-bhanntachd W3C agus aon de na teicneòlasan lìn semantach.

Ach ann an da-rìribh is e cànan ceisteach a th’ ann airson ro-innsean loidsigeach aonarach agus dà-chànanach. Tha thu dìreach a’ sònrachadh na tha stèidhichte ann an abairt Boolean agus dè nach eil (gu math sìmplidh).

Tha bunait RDF (Resource Description Framework) fhèin, far a bheil ceistean SPARQL air an cur an gnìomh, trì-fhillte object, predicate, subject - agus bidh a’ cheist a’ taghadh nan trì-fhilltean a tha a dhìth a rèir nan cuingeachaidhean ainmichte ann an spiorad: lorg X mar a tha p_55(X, q_33) fìor - far a bheil, gu dearbh, p_55 na sheòrsa de dhàimh le ID 55, agus tha q_33 nì le ID 33 (an seo agus an sgeulachd gu lèir, a-rithist a’ fàgail a h-uile seòrsa mion-fhiosrachaidh).

Eisimpleir de thaisbeanadh dàta:

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta
Dealbhan agus eisimpleir le dùthchannan an seo bho seo.

Eisimpleir ceist bhunasach

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta

Gu dearbh, tha sinn airson luach caochladair ?dùthcha a lorg mar sin airson an ro-aithris
ball_of, tha e fìor gur e ball_of(? dùthaich, q458) agus q458 ID an Aonaidh Eòrpaich.

Eisimpleir de fhìor cheist SPARQL taobh a-staigh an einnsean python:

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta

Mar as trice, b’ fheudar dhomh SPARQL a leughadh seach a sgrìobhadh – san t-suidheachadh sin, bhiodh e coltach gum biodh e na sgil fheumail an cànan a thuigsinn co-dhiù aig ìre bhunaiteach airson tuigsinn dìreach mar a thathar a’ faighinn dàta air ais. 

Tha tòrr stuth ri sgrùdadh air-loidhne: mar eisimpleir, an seo seo и seo. Mar as trice bidh mi a’ dèanamh google dealbhaidhean agus eisimpleirean sònraichte agus tha sin gu leòr airson a-nis.

Cànanan ceist loidsigeach

Faodaidh tu barrachd a leughadh air a’ chuspair san artaigil agam an seo. Agus an seo, cha dèan sinn ach sgrùdadh goirid air carson a tha cànanan loidsigeach gu math freagarrach airson ceistean a sgrìobhadh. Gu bunaiteach, chan eil ann an RDF ach seata de aithrisean loidsigeach den fhoirm p(X) agus h(X,Y), agus tha an fhoirm a leanas aig ceist loidsigeach:

output(X) :- country(X), member_of(X,“EU”).

An seo tha sinn a’ bruidhinn mu bhith a’ cruthachadh toradh ro-innse ùr / 1 (/1 a’ ciallachadh unary), fhad ‘s a tha e fìor airson X gur e dùthaich (X) - ie, is e dùthaich a th’ ann an X agus cuideachd ball_of (X, "EU").

Is e sin, anns a 'chùis seo, tha an dà chuid an dàta agus na riaghailtean air an taisbeanadh san aon dòigh, a tha ga dhèanamh comasach duilgheadasan a mhodail gu math furasta agus gu math.

Càite an do choinnich thu sa ghnìomhachas?: pròiseact mòr gu lèir le companaidh a bhios a’ sgrìobhadh cheistean ann an leithid de chànan, a bharrachd air a’ phròiseact a th’ ann an-dràsta ann an cridhe an t-siostaim - bhiodh e coltach gur e rud caran annasach a tha seo, ach uaireannan bidh e a’ tachairt.

Eisimpleir de chriomag còd ann an cànan loidsigeach a’ làimhseachadh wikidata:

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta

Stuthan: Bheir mi an seo ceangal no dhà don chànan prògramadh loidsigeach ùr-nodha Freagairt Prògramadh Set - tha mi a’ moladh a bhith ga sgrùdadh:

Notaichean Neach-saidheans Dàta: Lèirmheas Pearsanta air Cànanan Ceist Dàta

Source: www.habr.com

Cuir beachd ann