Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm

Ib qho ntawm cov xwm txheej tshwm sim hauv txhua daim ntawv thov uas peb paub zoo yog tshawb nrhiav cov ntaub ntawv raws li qee yam qauv thiab nthuav tawm nws hauv daim ntawv yooj yim-rau-nyeem ntawv. Tej zaum kuj yuav muaj kev xaiv ntxiv rau kev txheeb xyuas, pab pawg, thiab nplooj ntawv. Txoj haujlwm yog, nyob rau hauv txoj kev xav, tsis tseem ceeb, tab sis thaum daws nws, ntau tus neeg tsim khoom ua ntau yam yuam kev, uas tom qab ntawd ua rau kev tsim khoom raug kev txom nyem. Cia peb sim xav txog ntau yam kev xaiv los daws qhov teeb meem no thiab tsim cov lus pom zoo rau kev xaiv qhov kev siv tau zoo tshaj plaws.

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm

Paging option #1

Qhov kev xaiv yooj yim tshaj plaws uas los rau hauv siab yog nplooj ntawv-los-nplooj zaub ntawm cov txiaj ntsig tshawb fawb hauv nws daim ntawv classic tshaj plaws.

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm
Cia peb hais tias koj daim ntawv thov siv cov ntaub ntawv sib raug zoo. Hauv qhov no, txhawm rau tso tawm cov ntaub ntawv hauv daim ntawv no, koj yuav tsum tau khiav ob SQL queries:

  • Tau kab rau nplooj ntawv tam sim no.
  • Xam tag nrho cov kab uas cuam tshuam rau cov txheej txheem tshawb nrhiav - qhov no yog qhov tsim nyog los tso saib nplooj ntawv.

Cia peb saib thawj cov lus nug uas siv qhov kev xeem MS SQL database ua piv txwv AdventureWorks rau 2016 server. Rau lub hom phiaj no peb yuav siv lub rooj Sales.SalesOrderHeader:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Cov lus nug saum toj no yuav xa rov qab thawj 50 qhov kev txiav txim los ntawm daim ntawv teev npe, txheeb los ntawm hnub poob ntawm qhov ntxiv, hauv lwm lo lus, 50 qhov kev txiav txim tsis ntev los no.

Nws khiav ceev ceev ntawm lub hauv paus xeem, tab sis cia saib ntawm txoj kev npaj ua tiav thiab I / O cov txheeb cais:

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Koj tuaj yeem tau txais I / O cov txheeb cais rau txhua cov lus nug los ntawm kev khiav SET STATISTICS IO ON hais kom ua hauv cov lus nug runtime.

Raws li koj tuaj yeem pom los ntawm txoj kev npaj ua tiav, qhov kev xaiv siv ntau tshaj plaws yog xaiv txhua kab ntawm cov lus los ntawm hnub ntxiv. Thiab qhov teeb meem yog tias ntau kab tshwm nyob rau hauv lub rooj, qhov "nyuaj" qhov kev xaiv yuav yog. Hauv kev xyaum, cov xwm txheej zoo li no yuav tsum raug zam, yog li cia peb ntxiv qhov ntsuas rau hnub ntxiv thiab saib seb cov peev txheej tau hloov pauv li cas:

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm

Table 'SalesOrderHeader'. Scan count 1, logical reads 165, physical reads 0, read-ahead reads 5, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Obviously nws tau zoo dua. Tab sis puas yog tag nrho cov teeb meem daws tau? Cia peb hloov cov lus nug mus nrhiav kev txiav txim qhov twg tag nrho cov nqi ntawm cov khoom tshaj $ 100:

SELECT * FROM Sales.SalesOrderHeader
WHERE SubTotal > 100
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm

Table 'SalesOrderHeader'. Scan count 1, logical reads 1081, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Peb muaj qhov teeb meem lom zem: cov lus nug cov phiaj xwm tsis yog qhov phem dua li yav dhau los, tab sis qhov tseeb ntawm cov ntawv nyeem yog yuav luag ob zaug loj li nrog lub rooj scan tag nrho. Muaj ib txoj hauv kev tawm - yog tias peb ua qhov sib xyaw ua ke los ntawm qhov ntsuas uas twb muaj lawm thiab ntxiv tag nrho cov nqi ntawm cov khoom raws li daim teb thib ob, peb yuav rov tau txais 165 cov lus piav qhia:

CREATE INDEX IX_SalesOrderHeader_OrderDate_SubTotal on Sales.SalesOrderHeader(OrderDate, SubTotal);

Cov qauv no tuaj yeem txuas ntxiv mus ntev, tab sis ob lub ntsiab lus uas kuv xav qhia ntawm no yog:

  • Ntxiv cov txheej txheem tshiab lossis kev txiav txim rau cov lus nug tshawb fawb tuaj yeem muaj kev cuam tshuam loj rau kev ceev ntawm cov lus nug tshawb fawb.
  • Tab sis yog tias peb yuav tsum rho tawm tsuas yog ib feem ntawm cov ntaub ntawv, thiab tsis yog tag nrho cov txiaj ntsig uas phim cov ntsiab lus tshawb fawb, muaj ntau txoj hauv kev los txhim kho cov lus nug zoo li no.

Tam sim no cia peb mus rau qhov lus nug thib ob uas tau hais thaum pib - ib qho uas suav cov ntaub ntawv uas txaus siab rau qhov kev tshawb nrhiav. Cia peb ua tib yam piv txwv - nrhiav kev txiav txim siab tshaj $ 100:

SELECT COUNT(1) FROM Sales.SalesOrderHeader
WHERE SubTotal > 100

Muab qhov kev sib xyaw ua ke tau qhia saum toj no, peb tau txais:

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Qhov tseeb tias cov lus nug mus dhau tag nrho qhov ntsuas tsis yog qhov xav tsis thoob, txij li SubTotal teb tsis nyob hauv thawj txoj haujlwm, yog li cov lus nug siv tsis tau. Qhov teeb meem yog daws los ntawm kev ntxiv lwm qhov Performance index ntawm SubTotal teb, thiab vim li ntawd nws tsuas yog muab 48 cov ntsiab lus nyeem.

Koj tuaj yeem muab ob peb yam piv txwv ntxiv ntawm kev thov rau suav ntau, tab sis cov ntsiab lus tseem zoo ib yam: tau txais ib daim ntawm cov ntaub ntawv thiab suav cov nyiaj tag nrho yog ob qhov kev thov sib txawv, thiab txhua tus yuav tsum muaj nws tus kheej ntsuas rau optimization. Feem ntau, koj yuav tsis tuaj yeem nrhiav kev sib xyaw ua ke ntawm qhov ntsuas uas ua haujlwm sib npaug zoo rau ob qho lus nug.

Raws li, ib qho ntawm cov kev xav tau tseem ceeb uas yuav tsum tau qhia meej thaum tsim cov kev tshawb fawb zoo li no yog seb nws puas tseem ceeb rau kev lag luam kom pom tag nrho cov khoom pom. Nws feem ntau tshwm sim tias tsis muaj. Thiab navigation los ntawm cov nplooj ntawv tshwj xeeb, hauv kuv lub tswv yim, yog ib qho kev daws teeb meem nrog qhov nqaim heev, vim feem ntau cov xwm txheej zoo li "mus rau nplooj ntawv tom ntej."

Paging option #2

Cia peb xav tias cov neeg siv tsis quav ntsej txog kev paub txog tag nrho cov khoom pom. Cia peb sim ua kom yooj yim rau nplooj ntawv tshawb nrhiav:

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm
Qhov tseeb, tib yam uas tau hloov pauv yog tsis muaj txoj hauv kev los mus rau cov nplooj ntawv tshwj xeeb, thiab tam sim no cov lus no tsis tas yuav paub tias muaj pes tsawg tus tuaj yeem ua kom pom nws. Tab sis cov lus nug tshwm sim - lub rooj paub li cas yog tias muaj cov ntaub ntawv rau nplooj ntawv tom ntej (kom pom tseeb qhov txuas "Tom ntej")?

Cov lus teb yog qhov yooj yim heev: koj tuaj yeem nyeem los ntawm cov ntaub ntawv ib qho ntaub ntawv ntau dua li qhov xav tau los tso saib, thiab qhov muaj cov ntaub ntawv "ntxiv" no yuav qhia seb puas muaj ib feem ntxiv. Txoj kev no, koj tsuas yog yuav tsum tau khiav ib qho kev thov kom tau txais ib nplooj ntawv ntawm cov ntaub ntawv, uas ua rau muaj txiaj ntsig zoo thiab ua rau nws yooj yim dua los txhawb cov haujlwm zoo li no. Hauv kuv qhov kev coj ua, muaj ib rooj plaub thaum tsis kam suav tag nrho cov ntaub ntawv ceev kom xa cov txiaj ntsig los ntawm 4-5 zaug.

Muaj ntau ntau tus neeg siv interface xaiv rau txoj hauv kev no: "rov qab" thiab "rau pem hauv ntej" cov lus txib, xws li hauv qhov piv txwv saum toj no, "load ntxiv" khawm, uas yooj yim ntxiv ib feem tshiab rau cov txiaj ntsig pom, "infinite scroll", uas ua haujlwm. nyob rau hauv lub hauv paus ntsiab lus ntawm "load ntxiv" ", tab sis lub teeb liab kom tau txais qhov txuas ntxiv yog rau cov neeg siv kom scroll tag nrho cov kev tshwm sim tshwm sim mus rau qhov kawg. Txawm hais tias qhov pom kev daws teeb meem, lub hauv paus ntsiab lus ntawm cov ntaub ntawv sampling tseem zoo ib yam.

Nuances ntawm kev siv nplooj ntawv

Tag nrho cov lus nug piv txwv uas tau hais los saum toj no siv qhov "offset + suav" txoj hauv kev, thaum cov lus nug nws tus kheej qhia meej txog qhov kev txiav txim cov txiaj ntsig kab thiab pes tsawg kab yuav tsum tau xa rov qab. Ua ntej, cia saib yuav ua li cas zoo tshaj plaws los npaj parameter hla hauv qhov no. Hauv kev xyaum, kuv tau hla ntau txoj hauv kev:

  • Tus naj npawb ntawm nplooj ntawv thov (pageIndex), nplooj ntawv loj (pageSize).
  • Tus naj npawb ntawm thawj cov ntaub ntawv yuav tsum tau xa rov qab (startIndex), qhov siab tshaj plaws ntawm cov ntaub ntawv hauv qhov tshwm sim (suav).
  • Tus naj npawb ntawm thawj cov ntaub ntawv yuav tsum tau xa rov qab (startIndex), tus naj npawb ntawm cov ntaub ntawv kawg yuav raug xa rov qab (endIndex).

Thaum xub thawj siab ib muag nws yuav zoo li hais tias qhov no yog li elementary uas tsis muaj qhov sib txawv. Tab sis qhov no tsis yog li ntawd - qhov yooj yim tshaj plaws thiab kev xaiv thoob ntiaj teb yog qhov thib ob (startIndex, suav). Muaj ntau qhov laj thawj rau qhov no:

  • Rau qhov +1 nkag proofreading mus kom ze tau muab los saum toj no, thawj qhov kev xaiv nrog pageIndex thiab pageSize yog qhov tsis yooj yim heev. Piv txwv li, peb xav tso 50 cov lus hauv ib nplooj ntawv. Raws li cov algorithm saum toj no, koj yuav tsum tau nyeem ib phau ntawv ntau tshaj qhov tsim nyog. Yog tias qhov no "+1" tsis siv rau ntawm lub server, nws hloov tawm tias thawj nplooj ntawv peb yuav tsum thov cov ntaub ntawv los ntawm 1 txog 51, rau qhov thib ob - los ntawm 51 txog 101, thiab lwm yam. Yog tias koj teev ib nplooj ntawv loj ntawm 51 thiab nce pageIndex, ces nplooj ntawv thib ob yuav rov qab los ntawm 52 txog 102, thiab lwm yam. Raws li, hauv thawj qhov kev xaiv, tib txoj hauv kev los ua kom zoo siv lub pob kom mus rau nplooj ntawv tom ntej yog kom cov neeg rau zaub mov pov thawj cov kab "ntxiv", uas yuav yog qhov tsis txaus ntseeg heev.
  • Qhov kev xaiv thib peb tsis ua rau muaj kev nkag siab txhua, txij li los khiav cov lus nug hauv feem ntau cov ntaub ntawv koj tseem yuav tsum dhau qhov suav ntau dua li qhov ntsuas ntawm cov ntaub ntawv kawg. Kev rho tawm startIndex los ntawm endIndex tej zaum yuav yog ib qho yooj yim lej lej, tab sis nws yog superfluous ntawm no.

Tam sim no peb yuav tsum piav qhia txog qhov tsis zoo ntawm kev siv nplooj ntawv los ntawm "offset + kom muaj nuj nqis":

  • Retrieving txhua nplooj ntawv tom ntej yuav kim dua thiab qeeb dua li yav dhau los, vim tias cov ntaub ntawv tseem yuav tau mus los ntawm tag nrho cov ntaub ntawv "los ntawm qhov pib" raws li kev tshawb fawb thiab kev txheeb xyuas, thiab tom qab ntawd nres ntawm qhov xav tau tawg.
  • Tsis yog txhua tus DBMS tuaj yeem txhawb txoj hauv kev no.

Muaj lwm txoj hauv kev, tab sis lawv kuj tsis zoo tag nrho. Thawj qhov ntawm cov txheej txheem no yog hu ua "keyset paging" lossis "nrhiav txoj hauv kev" thiab yog raws li hauv qab no: tom qab tau txais ib feem, koj tuaj yeem nco ntsoov cov nqi teb hauv cov ntaub ntawv kawg ntawm nplooj ntawv, thiab tom qab ntawd siv lawv kom tau txais ntu tom ntej. Piv txwv li, peb tau khiav cov lus nug hauv qab no:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Thiab nyob rau hauv cov ntaub ntawv kawg peb tau txais tus nqi ntawm qhov kev txiav txim hnub '2014-06-29'. Tom qab ntawd kom tau txais nplooj ntawv tom ntej koj tuaj yeem sim ua qhov no:

SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate < '2014-06-29'
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Qhov teeb meem yog tias OrderDate yog qhov chaw tsis sib xws thiab cov xwm txheej tau teev tseg saum toj no yuav tsis nco ntau cov kab uas xav tau. Txhawm rau ntxiv qhov tsis meej pem rau cov lus nug no, koj yuav tsum tau ntxiv ib qho tshwj xeeb rau qhov xwm txheej (xav tias 75074 yog tus nqi kawg ntawm qhov tseem ceeb ntawm thawj feem):

SELECT * FROM Sales.SalesOrderHeader
WHERE (OrderDate = '2014-06-29' AND SalesOrderID < 75074)
   OR (OrderDate < '2014-06-29')
ORDER BY OrderDate DESC, SalesOrderID DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Qhov kev xaiv no yuav ua haujlwm kom raug, tab sis feem ntau nws yuav nyuaj rau kev ua kom zoo dua vim tias qhov xwm txheej muaj OR tus neeg teb xov tooj. Yog tias tus nqi ntawm tus yuam sij tseem ceeb nce ntxiv raws li OrderDate nce, ces qhov xwm txheej tuaj yeem yooj yim los ntawm kev tawm tsuas yog lim los ntawm SalesOrderID. Tab sis yog tias tsis muaj kev sib raug zoo ntawm qhov tseem ceeb ntawm lub hauv paus tseem ceeb thiab qhov chaw uas cov txiaj ntsig tau txheeb xyuas, qhov no LOSSIS tsis tuaj yeem zam hauv feem ntau DBMSs. Ib qho kev zam uas kuv paub txog yog PostgreSQL, uas txhawb nqa kev sib piv tuple, thiab cov xwm txheej saum toj no tuaj yeem sau ua "WHERE (OrderDate, SalesOrderID) < ('2014-06-29', 75074)". Muab tus yuam sij sib xyaw nrog ob daim teb no, cov lus nug zoo li no yuav tsum yooj yim heev.

Ib txoj hauv kev thib ob tuaj yeem pom, piv txwv li, hauv ElasticSearch scroll API los yog Cosmos IB - thaum qhov kev thov, ntxiv rau cov ntaub ntawv, rov qab tus cim tshwj xeeb uas koj tuaj yeem tau txais cov ntaub ntawv txuas ntxiv. Yog tias tus cim no muaj lub neej tsis muaj kev txwv (raws li hauv Comsos DB), ces qhov no yog ib txoj hauv kev zoo rau kev siv paging nrog kev hloov pauv ntawm nplooj ntawv (kev xaiv # 2 tau hais los saum no). Nws qhov ua tau tsis zoo: nws tsis txaus siab hauv txhua DBMSs; Qhov tshwm sim tom ntej-chunk identifier tuaj yeem muaj lub neej ntev, uas feem ntau tsis haum rau kev siv cov neeg siv kev sib cuam tshuam (xws li ElasticSearch scroll API).

Complex filtering

Cia peb ua haujlwm nyuaj ntxiv. Piv txwv tias muaj qhov yuav tsum tau ua raws li qhov hu ua faceted search, uas yog paub zoo rau txhua tus neeg los ntawm cov khw hauv online. Cov piv txwv saum toj no raws li cov lus txiav txim tsis tau piav qhia hauv qhov no, yog li cia peb hloov mus rau Cov Khoom Muag los ntawm AdventureWorks database:

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm
Dab tsi yog lub tswv yim tom qab faceted search? Qhov tseeb yog tias rau txhua qhov lim cov ntaub ntawv uas ua tau raws li qhov ntsuas no tau qhia noj mus rau hauv tus account cov ntxaij lim dej xaiv nyob rau hauv tag nrho lwm yam pawg.

Piv txwv li, yog tias peb xaiv Bikes qeb thiab xim Dub hauv qhov piv txwv no, lub rooj yuav tsuas pom cov tsheb kauj vab dub xwb, tab sis:

  • Rau txhua qhov kev ntsuas hauv Pawg Pawg, tus naj npawb ntawm cov khoom lag luam los ntawm qeb ntawd yuav raug pom hauv cov xim dub.
  • Rau txhua qhov kev ntsuas ntawm pawg "Colors", tus naj npawb ntawm cov tsheb kauj vab ntawm cov xim no yuav qhia.

Ntawm no yog ib qho piv txwv ntawm cov txiaj ntsig tau tshwm sim rau cov xwm txheej zoo li no:

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm
Yog tias koj tseem txheeb xyuas "Clothing" qeb, lub rooj tseem yuav qhia cov khaub ncaws dub uas muaj nyob hauv Tshuag. Tus naj npawb ntawm cov khoom dub nyob rau hauv seem "Xim" kuj yuav raug xam raws li cov xwm txheej tshiab, tsuas yog nyob rau hauv "Categories" seem tsis muaj dab tsi yuav hloov...

Tam sim no cia peb xav txog yuav ua li cas qhov no tuaj yeem siv los ntawm kev sib raug zoo. Txhua pawg ntawm cov txheej txheem, xws li Qeb thiab Xim, yuav xav tau cov lus nug sib txawv:

SELECT pc.ProductCategoryID, pc.Name, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
  INNER JOIN Production.ProductCategory pc ON ps.ProductCategoryID = pc.ProductCategoryID
WHERE p.Color = 'Black'
GROUP BY pc.ProductCategoryID, pc.Name
ORDER BY COUNT(1) DESC

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm

SELECT Color, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
WHERE ps.ProductCategoryID = 1 --Bikes
GROUP BY Color
ORDER BY COUNT(1) DESC

Tshawb nrhiav cov txiaj ntsig tso tawm thiab teeb meem kev ua haujlwm
Dab tsi yog qhov kev daws teeb meem no? Nws yooj yim heev - nws tsis ntsuas qhov zoo. Txhua ntu lim yuav tsum muaj cov lus nug sib txawv los xam cov khoom, thiab cov lus nug no tsis yog qhov yooj yim tshaj plaws. Hauv cov khw muag khoom online, qee pawg yuav muaj ob peb lub kaum lim lim, uas tuaj yeem yog qhov teeb meem loj.

Feem ntau tom qab cov nqe lus no kuv tau muab qee qhov kev daws teeb meem, uas yog:

  • Muab tag nrho cov khoom suav rau hauv ib qho lus nug. Technically qhov no muaj peev xwm siv UNION lo lus tseem ceeb, tab sis nws yuav tsis pab ua haujlwm ntau - cov ntaub ntawv tseem yuav tau ua txhua yam ntawm cov seem ntawm kos.
  • Cache ntau. Qhov no tau qhia rau kuv yuav luag txhua zaus kuv piav qhia txog qhov teeb meem. Lub caveat yog qhov no feem ntau tsis yooj yim sua. Cia peb hais tias peb muaj 10 "facets", txhua tus muaj 5 qhov tseem ceeb. Qhov no yog qhov xwm txheej "tseem ceeb" piv rau qhov uas tuaj yeem pom hauv tib lub khw hauv online. Kev xaiv ntawm ib lub ntsiab lus cuam tshuam rau qhov ntau ntawm 9 lwm tus, hauv lwm lo lus, rau txhua qhov kev sib xyaw ua ke ntawm cov khoom muaj peev xwm sib txawv. Hauv peb qhov piv txwv, muaj tag nrho ntawm 50 cov qauv uas tus neeg siv tuaj yeem xaiv tau; yog li ntawd, yuav muaj 250 qhov sib xyaw ua ke. Tsis muaj lub cim xeeb txaus lossis sijhawm los sau cov ntaub ntawv zoo li no. Ntawm no koj tuaj yeem tawm tsam thiab hais tias tsis yog txhua qhov sib xyaw ua ke tiag tiag thiab tus neeg siv tsis tshua xaiv ntau dua 5-10 cov qauv. Yog lawm, nws muaj peev xwm ua tub nkeeg thauj khoom thiab cache kom muaj nuj nqis ntawm tsuas yog dab tsi tau xaiv, tab sis ntau qhov kev xaiv muaj, qhov tsis tshua muaj txiaj ntsig xws li cache yuav ua tau thiab qhov pom ntau dua qhov teeb meem lub sij hawm teb yuav yog (tshwj xeeb yog tias lub cov ntaub ntawv teev hloov tsis tu ncua).

Hmoov zoo, qhov teeb meem no tau ntev tau muaj cov kev daws teeb meem zoo heev uas ua haujlwm tau zoo ntawm cov ntaub ntawv loj. Rau ib qho ntawm cov kev xaiv no, nws ua rau kev txiav txim siab los faib cov kev suav rov qab ntawm facets thiab tau txais cov nplooj ntawv tshwm sim rau hauv ob qho tib si hu rau tus neeg rau zaub mov thiab teeb tsa tus neeg siv interface hauv txoj hauv kev uas thauj cov ntaub ntawv los ntawm facets "tsis cuam tshuam" nrog cov zaub ntawm nrhiav tau.

  • Hu rau kev suav rov ua tiav ntawm "facets" tsawg li sai tau. Piv txwv li, tsis txhob rov xam txhua yam txhua zaus cov kev tshawb fawb hloov pauv, tab sis hloov mus nrhiav tag nrho cov txiaj ntsig uas haum rau cov xwm txheej tam sim no thiab hais kom tus neeg siv qhia lawv - "1425 cov ntaub ntawv pom, qhia?" Tus neeg siv tuaj yeem hloov pauv cov lus tshawb fawb txuas ntxiv lossis nyem lub pob "show". Tsuas yog nyob rau hauv rooj plaub thib ob yuav tag nrho cov kev thov kom tau txais cov txiaj ntsig thiab rov suav cov khoom ntawm txhua qhov "facets" raug tua. Hauv qhov no, raws li koj tuaj yeem pom tau yooj yim, koj yuav tsum tau nrog kev thov kom tau txais tag nrho cov txiaj ntsig thiab nws qhov kev ua kom zoo. Txoj kev no tuaj yeem pom hauv ntau lub khw muag khoom me me. Obviously, qhov no tsis yog panacea rau qhov teeb meem no, tab sis nyob rau hauv cov ntaub ntawv yooj yim nws tuaj yeem ua rau muaj kev cuam tshuam zoo.
  • Siv cov tshuab tshawb nrhiav kom pom cov txiaj ntsig thiab suav cov ntsej muag, xws li Solr, ElasticSearch, Sphinx thiab lwm yam. Tag nrho cov ntawm lawv yog tsim los tsim "facets" thiab ua qhov no zoo heev vim lub inverted index. Kev tshawb fawb xyaw ua haujlwm li cas, vim li cas hauv cov xwm txheej zoo li no lawv muaj txiaj ntsig zoo dua li cov ntaub ntawv siv dav dav, cov kev coj ua thiab qhov tsis zoo muaj dab tsi - qhov no yog lub ntsiab lus rau ib tsab xov xwm cais. Ntawm no kuv xav kos koj cov xim rau qhov tseeb tias lub tshuab tshawb nrhiav tsis tuaj yeem hloov pauv rau cov ntaub ntawv tseem ceeb; nws yog siv los ua ib qho ntxiv: txhua qhov kev hloov pauv hauv cov ntaub ntawv tseem ceeb uas cuam tshuam rau kev tshawb nrhiav yog synchronized rau hauv kev tshawb nrhiav; Lub tshuab tshawb nrhiav feem ntau cuam tshuam nrog lub tshuab tshawb nrhiav thiab tsis nkag mus rau lub ntsiab database. Ib qho ntawm cov ntsiab lus tseem ceeb tshaj plaws ntawm no yog yuav ua li cas txhawm rau txhim kho qhov synchronization ntseeg tau. Nws tag nrho yog nyob ntawm "sijhawm tshuaj tiv thaiv" cov cai. Yog tias lub sijhawm ntawm kev hloov pauv hauv cov ntaub ntawv tseem ceeb thiab nws "kev tshwm sim" hauv kev tshawb nrhiav tsis yog qhov tseem ceeb, koj tuaj yeem tsim cov kev pabcuam uas tshawb nrhiav cov ntaub ntawv hloov tshiab txhua ob peb feeb thiab ntsuas lawv. Yog tias koj xav tau lub sijhawm teb luv tshaj plaws, koj tuaj yeem siv qee yam xws li kev lag luam outbox xa cov kev hloov tshiab rau kev tshawb nrhiav.

tshawb pom

  1. Kev siv lub server-sab nplooj ntawv yog qhov teeb meem tseem ceeb thiab tsuas yog ua rau kev nkag siab rau kev loj hlob sai lossis tsuas yog cov ntaub ntawv loj. Tsis muaj daim ntawv qhia meej meej rau kev ntsuas "loj" lossis "loj hlob sai", tab sis kuv yuav ua raws li txoj hauv kev no:
    • Yog tias tau txais kev sau ua tiav ntawm cov ntaub ntawv, suav nrog lub sijhawm server thiab kev sib kis hauv lub network, haum rau cov kev xav tau ua haujlwm ib txwm, tsis muaj qhov taw qhia hauv kev siv paging ntawm server sab.
    • Tej zaum yuav muaj ib qho xwm txheej uas tsis muaj teeb meem kev ua tau zoo nyob rau yav tom ntej, vim tias muaj cov ntaub ntawv me me, tab sis cov ntaub ntawv khaws cia tau loj hlob tas li. Yog tias qee cov ntaub ntawv yav tom ntej yuav tsis txaus siab rau cov ntsiab lus dhau los, nws yog qhov zoo dua los pib paging tam sim ntawd.
  2. Yog tias tsis muaj qhov yuav tsum tau nruj me ntsis ntawm ib feem ntawm kev lag luam los tso saib tag nrho cov txiaj ntsig lossis tso saib nplooj ntawv tus lej, thiab koj lub cev tsis muaj lub tshuab tshawb nrhiav, nws yog qhov zoo dua tsis txhob siv cov ntsiab lus no thiab xav txog kev xaiv # 2.
  3. Yog tias muaj qhov yuav tsum tau ua kom pom tseeb rau kev tshawb nrhiav faceted, koj muaj ob txoj kev xaiv yam tsis muaj kev cuam tshuam kev ua haujlwm:
    • Tsis txhob suav rov qab txhua qhov ntau txhua zaus cov kev tshawb fawb hloov pauv.
    • Siv cov tshuab tshawb fawb xws li Solr, ElasticSearch, Sphinx thiab lwm yam. Tab sis nws yuav tsum to taub tias nws tsis tuaj yeem hloov pauv rau cov ntaub ntawv tseem ceeb, thiab yuav tsum tau siv los ua ib qho ntxiv rau lub ntsiab cia rau kev daws teeb meem kev tshawb nrhiav.
  4. Tsis tas li ntawd, nyob rau hauv cov ntaub ntawv ntawm kev nrhiav faceted, nws ua rau kev txiav txim siab faib cov retrieval ntawm nplooj ntawv tshawb fawb thiab suav rau hauv ob qho tib si thov. Kev suav ntau yuav siv sij hawm ntev tshaj qhov tau txais txiaj ntsig, thaum cov txiaj ntsig tseem ceeb dua rau tus neeg siv.
  5. Yog tias koj siv SQL database rau kev tshawb nrhiav, ib qho kev hloov pauv uas cuam tshuam nrog rau qhov no yuav tsum tau sim ua kom zoo rau kev ua tau zoo ntawm cov ntaub ntawv tsim nyog (ntau tshaj qhov ntim hauv cov ntaub ntawv nyob). Nws kuj tseem pom zoo kom siv saib xyuas cov lus nug ua tiav lub sijhawm ntawm txhua qhov xwm txheej ntawm cov ntaub ntawv, thiab tshwj xeeb tshaj yog nyob rau "nyob" ib qho. Txawm hais tias txhua yam ua tau zoo nrog cov lus nug cov phiaj xwm ntawm theem kev txhim kho, raws li qhov ntim ntawm cov ntaub ntawv loj tuaj, qhov xwm txheej yuav hloov pauv sai.

Tau qhov twg los: www.hab.com

Ntxiv ib saib