Olu Vindaloo recepte - garšīga un pikanta recepte !! Goana recepte

Manā lietojumprogrammā (klasiskais asp yay!) Ir aptuveni 2,1 miljons attēlu @ 25GB, un tas atspoguļo tikai 90 dienu datus, un es gribētu iet vismaz 365.Man tie jākontrolē un es apsveru visas iespējas. Kādas ir jūsu domas par šādas prakses plusi un mīnusi:

  • SQL Server plusi: viegli dublēt mīnusus: veiktspēja?
  • Failu sistēmas plusi: ātruma mīnusi: atlaišana, dublēšana ir lēna (pašlaik tiek pētīti sintētiski pilni dublējumi, kas to varētu uzlabot)
  • S3 un tamlīdzīgi plusi: joslas platums tiek pārvietots no mana datu centra uz Amazon, praktiski neierobežota krātuve. Mīnusi: izmaksas, izmaksu analīze ir grūts (lēšot, ka 80% no manas joslas platuma ir attēli IA vajadzībām), ja tas ir nepieciešams, grūti / dārgi pakalpojumu sniedzējiem

Vai kāds cits nodarbojas ar daudzu miljonu tēla izaicinājumu un kā jūs to risinājāt?

  • 4 Vai ne, ne arī ne, ne glabāt attēlu datus (lāse) datu bāzē. Mēs pieļāvām šo kļūdu pirms daudziem gadiem un kopš tā laika maksājam par to. Datu bāze ir lieliski piemērota metadatiem.
  • Skatiet manu ierakstu par FILESTREAM datu tipu - tas var mainīt jūsu domas.

Mums nav miljonu attēlu, bet ir simtiem tūkstošu, un mēs izmantojam hibrīdo pieeju - mysql metadatiem, attēli, kas tiek glabāti vietējā diskā, lai dublētu, un tiek pārvietoti uz Amazon s3, kur tie tiek pasniegti lietotājiem. Mums nav bijis problēmu ar Amazon un pieejamību. Pārcelšanās uz mākoņu zonu ir mūsu plānos, tikai jāatrod laiks.

Šī diskusija var jums noderēt lēmuma pieņemšanā:
http://ask.metafilter.com/59635/Millions-of-images

Es gribētu iet ar metadatiem SQL serverī un failiem failu sistēmā (vai s3 vai cloudfront). Bet labākā atbilde ir atkarīga no dažiem citiem lietošanas veidiem:

  • vai attēli bieži mainās
  • vai attēlus varat apkalpot tieši no failu sistēmas (tas ir, img src='...' vai arī jums ir nepieciešams, lai tie būtu piekļuves kontrolēti. Ja pēdējais, tad vislabākais ir datu bāzes risinājums
  • vai jūs lielāko daļu laika apkalpojat nelielu skaitu attēlu (pēdējie 10%), vai izplatīšana ir samērā izplatīta?

Miljoniem attēlu dublēšana būs sarežģīta neatkarīgi no tā, kā jūs tos kārtojat - tas ir tikai daudz datu. Es gribētu atrast labu gadījumu izpēti par blobu dublēšanu SQL serverī, pirms es apņēmos izmantot šo risinājumu. (Šis ir noderīgs raksts: http://www.databasejournal.com/features/mssql/article.php/3738276/Storing-Images-and-BLOB-files-in-SQL-Server-Part-4.htm )

  • Dublēšana būs sarežģīta, taču vismaz ar faila līmeņa dublējumiem jums (parasti) nav jāatjauno viss dublējums, lai tikai atjaunotu vienu ierakstu / attēlu. SJO, pēc noklusējuma failu sistēma, ja vien datu bāze nedod jums kaut ko tādu, ko nevarat darīt citādi. +1
  • Failu sistēmas ir paredzētas failu glabāšanai - jūs varat atrast failu sistēmas, kas paredzētas miljoniem failu efektīvai glabāšanai. Datu bāzes ir paredzētas tādām lietām kā jūsu metadati - vaicāšana un saistīšana. Ja vien jums nav ļoti maz attēlu, tas, iespējams, ir labākais veids (izņemot mākoņu risinājumus).

Ja jūs nolemjat tos glabāt failu sistēmā, iespējams, vēlēsities iepazīties ar šo ServerFault jautājumu dažiem darāmajiem un nē: miljona attēlu glabāšana failu sistēmā.

Neņemiet vērā cilvēkus, kuri saka:Neglabājiet attēlus / bināros datus datu bāzē"tā kā viņi pamato savas atbildes uz veco informāciju (pieņemot, ka datus glabāsit kolonnā VarBinary tips). Veiktspējas problēmas, izmantojot SQL Server attēlu glabāšanai, tagad var mazināt, izmantojot SQL Server 2008 datu tipu FILESTREAM. Būtībā FILESTREAM datu tips ļauj apvienot datu glabāšanas vienkāršību datu bāzē ar veiktspēju, ko iegūstat, apkalpojot failus no NTFS failu krātuves.

Citējot SQL Mag:

"SQL Server 2008 jaunais FILESTREAM atbalsts apvieno priekšrocības, kas saistītas ar piekļuvi LOB tieši no NTFS failu sistēmas, un atsauces integritāti un piekļuves vieglumu, ko piedāvā SQL Server relāciju datu bāzes dzinējs."

Lai iegūtu vairāk informācijas, izlasiet šo Ravi S. Maniam emuāru MSDN.

  • Vai FILESTREAM krātuve vispār maina dublēšanas / atjaunošanas stāstu? Tas ir mūsu lielākais pārtraukums šobrīd ... ja tie tiek glabāti VarBinary, tas būtu samērā tiešs stāsts.
  • Nē, ar FILESTREAM datiem rīkojas tāpat kā ar citiem, tāpēc tie tiek dublēti ar datu bāzi. Citējot MSDN: "Jūs varat izmantot visus dublēšanas un atkopšanas modeļus ar FILESTREAM datiem, un FILESTREAM dati tiek dublēti ar strukturētajiem datiem datu bāzē." - technet.microsoft.com/en-us/library/bb933993.aspx

Lai gan es nenodarbojos ar daudzu miljonu attēlu izaicinājumu, es izmantotu Amazon CloudFront. Visi faili tiek glabāti S3 spainī, bet tie ir serveri, izmantojot Amazon satura piegādes sistēmu. Es neizmantotu S3 atsevišķi.

Mana otrā izvēle būtu failu sistēma. Vienkārši un viegli, vienīgā problēma ir tā, ka visi šie faili nonāk vienā direktorijā, un viss viss cietīs.

SQL man nebūtu šādas sistēmas variants. Ne tikai par to, ka tiek iekasēta maksa par joslas platuma pārsūtīšanu, no jums tiks iekasēta maksa arī par vaicājuma apstrādi - tas ļoti atkarīgs no mitināšanas, bet es pieņemu, ka jūs izmantojat īpašu serveri vai vismaz vps, kurā no jums tiks iekasēta maksa cikliem. Tad tas palēninās visu jūsu vietni, ja tajā tiks izmantota tāda pati datu bāze kā attēlu serverī. Ja nē, tad jūs pievienojat visu šo sarežģītību, jo jums jāpārvalda divi datu bāzes savienojumi.

  • Manā scenārijā šobrīd viss ir domāts maniem pašiem piederošajiem serveriem. Tātad darījumu izmaksas pašas par sevi nav.

Datu bāzes ir paredzētas darījumu datiem / konsekvencei un drošībai.

Multivides faili (attēli, audio, video) parasti tiek veidoti un, iespējams, izdzēsti, bet ļoti reti tiek atjaunināti. Tāpēc parasti nav nepieciešams tos saglabāt darījumos atbilstoši citiem datiem, un datu bāze nedos jums tur reālu labumu. Teksta saturs varbūt ir cits jautājums.

Kamēr jums nav problēmu ar jēdzienu, ka kāds velk tieši jūsu failu, ja viņam ir faila URL, failu sistēma ir kārtībā. Ja jūs izmantojāt kaut ko līdzīgu fotoattēlu bibliotēkai, kur jūs plānojat iekasēt maksu pirms cilvēki lejupielādēs failu, tad tas, iespējams, ir cits jautājums. Tas ir, kad lietotājs ir samaksājis, viņš var iegūt šim lietotājam specifisku vai derīgu tikai īsu laiku URL, un lietojumprogramma apstrādā vairākus vai pagaidu URL, kas norāda uz to pašu attēlu. To joprojām varētu apstrādāt lietotne un failu sistēma, taču jūs galu galā apkalpojat multividi, izmantojot lietojumprogrammu, nevis kā vienkāršu failu lejupielādi (kas galvenokārt izslēgtu visas S3 priekšrocības), un starp DB un failu sistēmu ir mazāka atšķirība .

strādāja par jums: Charles Robertson | Vēlies ar mums sazināties?

noderīga informācija