IDC: Globálnímu trhu storage se daří, v druhém čtvrtletí posílil bezmála o desetinu

13. 9. 2021
Doba čtení: 2 minuty

Sdílet

Autor: © ssidorov - Fotolia.com
Hodnota trhu meziročně vzrostla o 9,7 %, celková kapacita OEM úložišť pak vystřelila o více než čtvrtinu. Radost dělá region CEE, kde investice meziročně rostly dvouciferně.

Společnost IDC přináší povzbudivé zprávy ze světa úložišť – celosvětový trh ve druhém čtvrtletí 2021 vyrostl o 9,7 % na 6,9 miliardy dolarů. Celková kapacita prodaných OEM úložišť pak činila 22,1 exabajtu, což představuje meziroční zlepšení o 27,9 %.

V červených číslech nicméně zůstal segment „bezejmenných“ ODM výrobců dodávajících úložiště přímo velkým poskytovatelům. Jejich tržby ve sledovaném období klesly o 7,7 % na 6,4 miliardy dolarů; dodaná kapacita však vyrostla o 13,8 % na 88,7 exabajtu.

Analytická společnost doplňuje, že souhrnná kapacita samostatných OEM a ODM úložišť a integrovaných serverových úložišť prodaných v druhém čtvrtletí letošního roku stoupla o 25,2 % na 156,1 exabajtu.

Oživení trhu s externími úložnými systémy, jež jsme zaznamenali prvního čtvrtletí roku 2021, v tomto kvartálu ještě nabralo na intenzitě,“ popisuje Zsofia Madi-Szabová z IDC. Míru růstu poptávky podle ní ovlivnila rychlost zotavování jednotlivých regionů.

CEE táhne růst v regionu EMEA

V OEM segmentu vládne Dell, jenž si meziročně polepšil o 10,1 % na 1,8 miliardy dolarů. Následuje HPE/H3C s 14,7% růstem na 756 milionů, o třetí příčku se dělí NetApp, jenž vykázal růst o 11,8 % na 685 milionů, a Huawei, jež vyrostlo o 26,7 % na 619 milionů.

IDC dále uvádí, že celkové tržby segmentu celoflashových polí (AFA) ve sledovaném období meziročně stouply o 7,6 % na 2,7 miliardy dolarů. Segment hybridních polí (HFA) si pak meziročně polepšil o 13,3 % na 2,8 miliardy.

Z geografického hlediska si nejlépe vedla zmiňovaná Čína, která vykázala meziroční zlepšení o 33,3 %. Region EMEA ve druhém kvartálu vyrostl o 3,7 %, přičemž silný růst zaznamenala zejména oblast střední a východní Evropě – konkrétně o 26 %.

Investice do úložišť v USA ve sledovaném období meziročně vyrostly o 5,9 %, v Kanadě pak o 29,5 %. Poprvé od prvního čtvrtletí 2020 skončila v zelených číslech i Latinská Amerika, kde trhy vyrostly o 12,5 %.

Tabulka – Vývoj trhu v 2Q21 (miliony dolarů)

Výrobce

Prodej 2Q21

Podíl 2Q21

Prodej 2Q20

Podíl 2Q20

Meziroč. změna

1. Dell

1 860,1

26,8 %

1 689,7

26,7 %

10,1 %

2. HPE/H3C

756,7

10,9 %

659,7

10,4 %

14,7 %

3. NetApp*

685,0

9,9 %

612,6

9,7 %

11,8 %

3. Huawei*

619,5

8,9 %

489,0

7,7 %

26,7 %

5. Hitachi*

338,3

4,9 %

352,4

5,6 %

-4,0 %

5. IBM*

322,9

4,7 %

504,6

8,0 %

-36,0 %

5. Pure Storage*

287,4

4,1 %

256,5

4,1 %

12,0 %

ostatní

2 061,0

29,7 %

1 752,8

27,7 %

17,6 %

Celkem

6 930,8

100,0 %

6 317,2

100,0 %

9,7 %

* statistická remíza

Zdroj: IDC

Graf – Top 5 výrobců podle podílu na trhu

Graf – Top 5 výrobců podle podílu na trhu 2Q21

Zdroj: IDC

Čtěte dále

AMD kupuje Nod.ai, posílí možnosti open source softwaru pro umělou inteligenci
AMD kupuje Nod.ai, posílí možnosti open source softwaru pro umělou inteligenci
Firmy chtějí to nejlepší z obou světů: ukládat data lokálně, ale s globálním zabezpečením
Firmy chtějí to nejlepší z obou světů: ukládat data lokálně, ale s globálním zabezpečením
Čechům na dark web nejčastěji unikají hesla jako „123456“, „heslo“ nebo „tomasek“
Čechům na dark web nejčastěji unikají hesla jako „123456“, „heslo“ nebo „tomasek“
Tři hlavní důvody, proč malé a středně velké firmy potřebují ke správě sítí umělou inteligenci
Tři hlavní důvody, proč malé a středně velké firmy potřebují ke správě sítí umělou inteligenci
3D tisk – jaké jsou náklady na 3D tisk?
3D tisk – jaké jsou náklady na 3D tisk?
Tomáš Břečka je novým country managerem iStyle
Tomáš Břečka je novým country managerem iStyle
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
OSZAR »