(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Ruby on Rails hugbúnaðarþróun. Vísitölur v2 - The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2020-10-06
Hugbúnaðarþróun

Ruby on Rails hugbúnaðarþróun. Vísitölur v2

The Codest

Damian Watroba

Software Engineer

Þegar unnið er með Ruby on Rails-rammagrefið vinnum við venjulega með tengdar gagnagrunnar eins og MySQL eða PostgreSQL. Þegar við skilgreinum flutninga með Active Record Migrations rekumst við á svokallaða vísitölu, en byrjendur skilja oft ekki alveg hvað vísitölur eru og hvaða ávinning þær bjóða.

Hér er tómt.

Þegar unnið er með Rúbín á Relsar rammaskipulag, við vinnum venjulega með tengdar gagnagrunna eins og Mýskúel eða PostgreSQL. Þegar við skilgreinum flutninga með Active Record Migrations rekumst við á svokallaða vísitölu, en byrjendur skilja oft ekki alveg vísitölu og hvaða ávinning hún býr yfir.

Í þessari færslu vil ég útskýra hvað vísitölur eru, hvað þær eru notaðar til og kynna nokkrar góðar aðferðir við notkun þeirra.

Gagnagrunnur

Það eru margir gagnagrunnsvélar, og einn vinsælasti þeirra er áður nefndur MySQL, PostgreSQL, Oracle eða Microsoft SQL Server. Þeir eru allir tengdir gagnagrunnar, sem þýðir að allir hlutar gögn Þær tengjast hver annarri og eru geymdar í töflum. Hver röð í töflu kallast skrá og hver skrá hefur sinn einstaka auðkennisnúmer (id). Þú getur skoðað röðun vinsælustu gagnagrunnsvéla á https://db-engines.com/en/ranking. Þar finnur þú einnig nokkra óreiknfræðilega gagnagrunna, svo sem MongoDB.

Að búa til vísitölu

Töflurnar í gagnagrunnunum okkar geta haft frá aðeins fáeinum upp í nokkrar tugir – í öfgafellum allt að nokkrum hundruðum – dálka. Mundu að hver tafla getur haft ótakmarkaðan fjölda raða. Þetta magn stafar ekki beinlínis af uppbyggingu gagnagrunnsins og við ættum alltaf að gera ráð fyrir að fjöldi skrána muni aukast stöðugt og að gagnagrunnurinn okkar muni því stækka. Upphaflegar forsendur og fyrirspurnir sem skrifaðar voru í núverandi forritum geta verið frábærar fyrir lítinn eða meðalstóran fjölda skrána, en með tímanum, þegar fleiri gögn berast, hættir forritið að eiga skilvirka samskipti við gagnagrunninn.

Hlutverk forritarans er að skrifa fyrirspurnir til að sækja gögn úr töflu eða töflum, en hagkvæmasta leiðin til að vinna úr fyrirspurninni fer eftir gagnagrunnsvélinni. Mundu að gagnagrunnsvélar hlaða gögn af diski í vinnsluminni og skanna þau síðan. Þetta þýðir að ef margir notendur framkvæma flóknar aðgerðir samtímis, munu sumir þeirra þurfa að bíða eftir sinni töku vegna skorts á úrræðum til að framkvæma leitir sínar. Þess vegna eru viðeigandi vísitölur svo mikilvægar.

Wiki: Vísitala – gagnasafn sem eykur hraða leitaraðgerða í töflu.

Fyrir hvern vísitölu þurfum við að skilgreina lykla (fyrir eina eða fleiri dálka) sem verða notaðir til að leita að færslum í töflunni. Gögnin í vísitölunni verða raðað með lykli sem áður hefur verið skilgreindur, sem mun verulega flýta fyrir leit að gögnum í töflunni. Einfaldasta dæmið úr daglegu lífi er símaskrá þar sem fólk er raðað eftir fornafni og eftirnafni. Má segja að vísitalan okkar í þessu tilfelli verði fornafnið og eftirnafnið.

Hvernig velur þú besta vísitölulykilinn? Það er ekki erfitt – mundu bara nokkur reglur. Búðu til vísitölu byggða á dálkum sem:

– verður oft notað í okkar fyrirspurnum (HVAÐA),

– í sameiningu gefa þau einstaka gildi (þ.e. gildi sem gefur til kynna nákvæmlega eina röð),

– verður notað sem svokallaðar tengingarstoðir (JOIN),

– gefa mest sértæku lykla, þ.e. þá sem skila fæstar línur þegar fyrirspurn er skrifuð.

Ef við vitum nú þegar hvaða lyklar verða hagkvæmastir fyrir töfluna okkar, getum við líka spurt okkur hversu mörg vísitöl við þurfum. Í þessu tilfelli er best að vita fyrirfram, á hönnunarstiginu, hvaða fyrirspurnir munu vísa til töflunnar okkar.

Búum til vísitölur fyrir tilteknar fyrirspurnir sem munu birtast, en skrifum þær ekki fyrir hvern dálk. Vísitölur, eins og töflur, þurfa að vera geymdar einhvers staðar, svo þegar við bjóum til töflur með vísitölu fyrir hvern dálk verðum við að hafa í huga að rýmið sem þær taka getur aukist verulega.

Búa til einstakan vísitölu

Annað mál sem við þurfum að hugsa um er einstæðni. Það borgar sig að eyða aukalegum fimm mínútum í að hugsa um hvort vísitalinn okkar sé í raun einstæður. Á þennan hátt segjum við fyrirspurnarbestjóranum að hann þurfi ekki að búast við afritum í fyrirspurninni. Til dæmis netföng:

frozenstringliteral: true

class CreateUsers < ActiveRecord::Migration[6.0]
def change
createtable :users do |t|
t.string :email, null: false
end
addindex :users, :email, unique: true
end
end

Á dæmi um PostgreSQL-vélina mun ég sýna muninn á hraða fyrirspurna í tölvupóstsreit með einstaka vísitölu og án vísitölu.

1. Þú getur notað sýnishorn kóði Brot úr gagnagrunninum þínum til að geta prófað dæmið hér að neðan. Fyrst skulum við búa til tómt tafla með einum dálki:

Búa til töflu notendur (
   netfang varchar
 );Hljóðskrift

2. Búum til 10.000 færslur fyrir prófið:

DO $
   BEGIN FOR i IN 1..10000 LOOP
 INSERT INTO users values((select 'user' || i || '@example.com'));
   END LOOP; END;
 $;HljóðskriftHljóðskrift

Við munum nota EXPLAIN ANALYZE til að athuga hversu hratt fyrirspurnin okkar verður afgreidd þegar við viljum finna ákveðinn notanda í gagnagrunninum.

Skýring á SELECT-fyrirspurninni: Skoða og greina SELECT-fyrirspurnina.  SELECT email FROM users WHERE email = 'user890example.com';HljóðskriftHljóðskriftHljóðskrift

Fyrirspurn okkar neyddi til endurtekninga um alla töfluna í leit að þeim færslu sem vekur áhuga okkur.

Þessi aðferð kallast raðskönnun. Í þessu tilfelli er að lesa alla töfluna og sía út ákveðnar línur besta leiðin til að sinna verkinu.

PostgreSQL mun sía út óþarfa línur og einfaldlega skila þeim sem okkur skipta máli. Þetta er í raun besta lausnin í þessu tilfelli. Röðarskoðun er ekki alltaf slæm; það eru til tilfelli þar sem hún er kjörin.

4. Nú er kominn tími til að athuga fyrirspurnina sem þegar hefur verið gerð á töflunni sem inniheldur INDEX UNIQUE. Settu inn vísitöluna og keyrðu fyrirspurnina.

EATE UNIQUE INDEX index_email on users(email);
 EXPLAIN ANALYZE SELECT email FROM users WHERE email = 'user890example.com';HljóðskriftHljóðskriftHljóðskriftHljóðskrift

Að þessu sinni nýtti PostgreSQL sér skönnun vísitölunnar vegna þess að allir nauðsynlegir dálkar eru þegar í vísitölunni.

Að velja aðeins nokkrar línur verður mjög skilvirkt þegar vísitalan er notuð. Hins vegar, ef fleiri gögn eru valin, mun skönnun á vísitölunni og töflunni taka of langan tíma.

Yfirlit

Eins og sjá má er framkvæmdatími fyrir fyrirspurn á reit með vísitölu mun styttri (í dæminu sem sýnt er er hann 0,111 ms en 1,267 ms, eða um 91,241 TP76T!). Mest mikilvæga munurinn er hvernig PostgreSQL leitar að þeim skrá sem okkur langar að finna. Í fyrsta tilvikinu þurfti gagnagrunnsvélin að leita í allri töflunni að þeirri skrá sem við þurftum. Í öðru tilvikinu er vísitölusniðið hins vegar raðað og einstakt, svo vélin vissi hvar skráin var staðsett, sem flýtti verulega fyrir vinnslutíma fyrirspurnarinnar.

Í tilvikum stórra gagnagrunnanna og mjög flókinna fyrirspurna geta rétt stilltir vísitölur verulega hraðað vinnu forritsins þíns án þess að þurfa að auka hraða vélarinnar sem leitar í gagnagrunninum.

Það er gott að muna að það er ekki góð venja að búa til vísitölur á hverja dálk. Vísitölur sem hafa verið búnar til flýta fyrir vinnu fínstillisins við leit að gögnum sem vekja áhuga, en hægja á við innslátt nýrra gagna og uppfærslu þeirra sem fyrir eru.

Lesa meira:

– Þarf að nota algengar JavaScript-rammasetningar í Rails-forritinu þínu? Stimulus.js gæti verið valkostur.

– Tími er kominn fyrir nýja veruleika. Tímabil fjarvinnu hófst fyrir mánuði síðan.

– Vefforritþróun: Af hverju er Ruby on Rails tækni sem vert er að velja?

Tengdar greinar

Myndskreyting af heilbrigðisforriti fyrir snjallsíma með hjartatákni og hækkandi heilsufarsgrafík, merkt með The Codest-merkinu, sem táknar stafræna heilsu og HealthTech-lausnir.
Hugbúnaðarþróun

Heilbrigðis-hugbúnaður: gerðir og notkunartilvik

Tólin sem heilbrigðisstofnanir treysta á í dag líta ekkert út eins og pappírsskjöl frá fyrri áratugum. Heilbrigðisforrit styðja nú heilbrigðiskerfi, sjúklingameðferð og nútímalega heilbrigðisþjónustu á klínískum og...

THECODEST
Yfirlitsmynd sem sýnir hnignandi súlurit með uppstrekktri ör og gullmynt sem táknar kostnaðarhagkvæmni eða sparnað. The Codest-merkið birtist í efra vinstra horni með slagorðinu "In Code We Trust" á ljósgráum bakgrunni.
Hugbúnaðarþróun

Hvernig á að stækka þróunarteymið án þess að fórna gæðum vörunnar

Ertu að stækka þróunarteymið þitt? Lærðu hvernig á að vaxa án þess að fórna gæðum vörunnar. Þessi leiðarvísir fjallar um merki um að kominn sé tími til að stækka, uppbyggingu teymisins, ráðningar, forystu og verkfæri—og hvernig teymið getur...

THECODEST
Hugbúnaðarþróun

Búðu til vefumsóknir sem þola framtíðina: innsýn frá sérfræðiteymi The Codest

Uppgötvaðu hvernig The Codest skarar fram úr við að búa til stigstækar, gagnvirkar vefumsóknir með nýjustu tækni, sem bjóða upp á hnökralausa notendaupplifun á öllum kerfum. Lærðu hvernig sérfræðiþekking okkar knýr fram stafræna umbreytingu og viðskipti...

THECODEST
Hugbúnaðarþróun

Topp 10 hugbúnaðarþróunarfyrirtæki í Lettlandi

Kynntu þér fremstu hugbúnaðarþróunarfyrirtæki Lettlands og nýstárlegar lausnir þeirra í nýjustu grein okkar. Uppgötvaðu hvernig þessir tækniforingjar geta hjálpað til við að efla fyrirtækið þitt.

thecodest
Lausnir fyrir fyrirtæki og vaxtarfyrirtæki

Grunnatriði í Java hugbúnaðarþróun: Leiðarvísir að árangursríkri útvistun

Kannaðu þessa ómissandi leiðbeiningu um árangursríka outsourcing Java hugbúnaðarþróun til að auka skilvirkni, afla aðgangs að sérfræðiþekkingu og tryggja árangur verkefna með The Codest.

thecodest

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

    is_ISIcelandic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lvLatvian lt_LTLithuanian is_ISIcelandic