MarkLogic 6 is een Enterprise NoSQL ("Not Only SQL")-database die de flexibiliteit en schaalbaarheid heeft om de huidige gegevensuitdagingen aan te kunnen waarvoor op SQL gebaseerde databases niet zijn ontworpen. Het heeft ook mogelijkheden op ondernemingsniveau, zoals zoeken, ACID-transacties, failover, replicatie en beveiliging om bedrijfskritische applicaties uit te voeren. MarkLogic combineert databasefunctionaliteit, zoek- en applicatieservices in één systeem. Het biedt de functionaliteit die ondernemingen nodig hebben om waarde te leveren. MarkLogic maakt gebruik van bestaande tools, kennis en ervaring en biedt tegelijkertijd een betrouwbaar, schaalbaar en veilig platform voor bedrijfskritische gegevens.
Bedrijven en organisaties in verschillende sectoren, waaronder de publieke sector, de media en de financiële dienstverlening, hebben geprofiteerd van de unieke architectuur van MarkLogic. Elke omgeving die wordt geconfronteerd met een combinatie van datavolume, snelheid, variëteit en complexiteit - een data-uitdaging die bekend staat als Big Data - kan worden verbeterd met MarkLogic. Voorbeelden van oplossingen die op MarkLogic zijn gebouwd, zijn onder meer intelligentieanalyse, real-time beslissingsondersteuning, risicobeheer, beheer van digitale activa, digitale toeleveringsketen en levering van inhoud.
MarkLogic-benchmark
De benchmark die we gebruiken, is intern ontwikkeld door MarkLogic en wordt gebruikt om zowel hardwareconfiguraties als aankomende MarkLogic-softwarereleases te evalueren. De werklast is verdeeld in twee afzonderlijke delen:
- Opnamefase waarin een grote dataset met indexen wordt ingevoegd in de MarkLogic-database.
- Queryfase waarin zoekopdrachten, weergaven, updates en verwijderingen worden toegepast op de ingevoegde dataset. Deze zoekopdrachten gebruiken ook MarkLogic-functies zoals facetten, paginering en bladwijzers.
Het gebruikte corpus is de algemeen beschikbare XML-verzameling van Wikipedia. Bestanden worden in gezipte indeling op schijf bewaard. Voor inname gebruiken we MarkLogic Content Pump (mlcp).
Met name de opnamefase is I/O-intensief. I/O is onderverdeeld in drie categorieën:
- In eerste instantie worden documenten opgenomen in in-memory stands en de enige schijfschrijfbewerkingen zijn journaalopslag.
- In-memory-stands lopen snel over en worden continu weggeschreven als on-disk-stands. Dit is een spaaractiviteit.
- Naarmate het aantal stands op de schijf toeneemt, moet MarkLogic ze samenvoegen om de query-overhead te verminderen. Samenvoegen omvat het lezen van meerdere stands op de schijf, het terugschrijven van een samengevoegde enkele versie en het verwijderen van de originelen.
Om het hoogste niveau van nauwkeurigheid te garanderen en elk apparaat in een stabiele toestand te dwingen, herhalen we de opname- en queryfasen 24 keer voor op flash gebaseerde apparaten. Voor PCIe Application Accelerators duurt elk interval tussen de 60 en 120 minuten, waardoor de totale testtijd tussen de 24 en 48 uur ligt. Voor apparaten met een lagere I/O-doorvoer kan de totale testtijd dagen beslaan. Onze focus in deze test is om te kijken naar de algehele latentie van elke opslagoplossing in vier interessegebieden: dagboekschrijven (J-lat), opslaan schrijven (S-lat), evenals samenvoegen lezen (MR-lat) en samenvoegen schrijven latentie (MW-lat).
In het bovenstaande diagram zien we de I/O-paden en latenties in MarkLogic:
- Journal schrijft de delta's naar de database. Wanneer een updateverzoek wordt uitgevoerd, worden alle wijzigingen in de status van de database vastgelegd in het journaal. Die wijzigingen kunnen opnieuw worden toegepast vanuit het journaal, zonder de aanvraag opnieuw uit te voeren. Updates kunnen toevoegingen, vervangingen of verwijderingen van documenten zijn. Het journaal beschermt tegen storingen, het overleeft gegarandeerd een systeemcrash daarna. De latentie van Journal-schrijfbewerkingen wordt vastgelegd in de J-lat-metriek
- Nadat er voldoende documenten zijn geladen, zal de in-memory standaard vollopen en naar de schijf worden gespoeld, uitgeschreven als een on-disk standaard. Deze flush naar schijf wordt een Save genoemd. De latentie van Save-schrijfbewerkingen wordt vastgelegd in S-lat
- Naarmate het totale aantal on-disk stands groeit, dreigt er een efficiëntieprobleem te ontstaan. Om een enkele termenlijst te lezen, moet MarkLogic de termenlijstgegevens van elke individuele stand lezen en de resultaten verenigen. Om het aantal standen beheersbaar te houden, draait MarkLogic merges op de achtergrond. Een samenvoeging leest (Merge Read) enkele van de standen op schijf en maakt er een nieuwe unieke standaard van Merge Write), waarbij de indexen en gegevens worden samengevoegd en geoptimaliseerd, evenals alle eerder verwijderde fragmenten worden verwijderd. De latentie van samenvoegbewerkingen wordt vastgelegd in MR-lat en de latentie van samenvoegbewerkingen in MW-lat.
Tijdens de opname indexeert MarkLogic ook alle documenten, maakt termenlijsten, enz. Deze activiteit vereist CPU-cycli waardoor de benchmark een goede balans vormt tussen hoge I/O en hoog CPU-gebruik.
De Wikipedia-gegevens zijn ook gekozen omdat deze niet-Engelse en niet-ASCII-tekst bevatten waarvan we gebruiken: Arabisch, Nederlands, Frans, Duits, Italiaans, Japans, Koreaans, Perzisch, Portugees, Russisch, Spaans, Vereenvoudigd Chinees en Traditioneel Chinees. Deze opties benadrukken de meertalige kenmerken van MarkLogic. Ten slotte maken de opgenomen statische gegevens de benchmark herhaalbaar, wat essentieel is voor prestatievergelijkingen tussen de verschillende hardwareconfiguraties van meerdere softwareversies.
MarkLogic-testomgeving
Opslagoplossingen worden getest met de MarkLogic NoSQL-benchmark in het StorageReview Enterprise Test Lab, waarbij gebruik wordt gemaakt van meerdere servers die zijn verbonden via een snel netwerk. We gebruiken servers van EchoStreams en Lenovo voor verschillende segmenten van de MarkLogic NoSQL-testomgeving, en voor de fabric die de apparatuur verbindt, gebruiken we Mellanox InfiniBand Switching en NIC's.
De opslagoplossing is opgedeeld in drie secties: de opslaghost, de MarkLogic NoSQL Database Cluster en de MarkLogic Database Client. Voor de opslaghost gebruiken we een 2U Lenovo ThinkServer RD630 om PCIe Application Accelerators, groepen van vier SATA/SAS SSD's en een host voor NAS/SAN-apparatuur te presenteren op de InfiniBand-structuur. Voor de MarkLogic Database Cluster gebruiken we een EchoStreams GridStreams quad-node server uitgerust met acht Intel Xeon E5-2640 CPU's om de computerresources te bieden die nodig zijn om de snelste opslagapparaten effectief te belasten. Aan de clientzijde gebruiken we 1U Lenovo ThinkServer RD530-servers die de werkgegevens leveren die in het systeemgeheugen worden geladen en via ons hogesnelheidsnetwerk naar het NoSQL-databasecluster worden gepusht. Al deze servers met elkaar verbinden is een Mellanox 56Gb/s InfiniBand-fabric met zowel switch als NIC's die ons de hoogste overdrachtssnelheden en de laagste latentie geven om de prestaties van krachtige opslagapparaten niet te beperken.
Mellanox InfiniBand-interconnects werden gebruikt om de hoogste prestaties en de grootste netwerkefficiëntie te bieden om ervoor te zorgen dat de aangesloten apparaten niet netwerkbeperkt zijn. Kijkend naar alleen PCIe-opslagoplossingen, kan een enkele PCIe Application Accelerator gemakkelijk meer 1-3GB/s naar het netwerk sturen. Stap over op een all-flash opslagapparaat met piekoverdrachtssnelheden van meer dan 10-20 GB/s en u kunt snel zien hoe de capaciteit van de netwerkverbinding gemakkelijk verzadigd kan raken, waardoor de algehele prestaties van het hele platform worden beperkt. Dankzij de verbindingen met hoge bandbreedte van InfiniBand kan de grootste hoeveelheid gegevens over het minste aantal verbindingen worden verplaatst, waardoor de volledige systeemmogelijkheden kunnen worden gerealiseerd.
Naast een hogere netwerkdoorvoer maakt InfiniBand ook een hogere algehele clusterefficiëntie mogelijk. InfiniBand gebruikt iSER (iSCSI-RDMA) en SRP (SCSI RDMA Protocol) om de inefficiënte iSCSI TCP-stack te vervangen door Remote Direct Memory Access (RDMA)-functionaliteit, waardoor bijna-native toegangstijden voor externe opslag mogelijk zijn. iSER en SRP zorgen voor meer efficiëntie in de geclusterde omgeving doordat netwerkverkeer de CPU's van het systeem kan omzeilen en gegevens rechtstreeks vanuit het geheugen van het verzendende systeem naar het geheugen van het ontvangende systeem kunnen worden gekopieerd. Ter vergelijking: traditionele iSCSI-operaties leiden netwerkverkeer via een complex proces van meerdere kopieën en overdrachten, waardoor waardevolle CPU-cycli en geheugenruimte worden opgeslokt en de latentie van gegevensoverdracht drastisch toeneemt. In onze MarkLogic NoSQL-omgeving gebruiken we het SCSI RDMA-protocol om elk knooppunt te verbinden met een SCSI-doelsubsysteem voor Linux (SCST) dat draait op onze opslaghost.
MarkLogic Benchmark-apparatuur
- EchoStreams GridStreams databasecluster met vier knooppunten
- Acht Intel E5-2640 CPU's (twee per node, 2.5 GHz, 6 cores, 15 MB cache)
- 256 GB RAM (64 GB per knooppunt, 8 GB x 8 Micron DDR3, 32 GB per CPU)
- 4 x 100GB Micron RealSSD P400e (Eén per node, on-board SATA)
- 4 x Mellanox ConnectX-3 InfiniBand-adapter
- 6.3 CentOS
- Lenovo Think Server RD530 Database-client
- Dubbele Intel E5-2640 CPU's (2.5 GHz, 6 cores, 15 MB cache)
- 64 GB RAM (8 GB x 8 micron DDR3, 32 GB per CPU)
- 200 GB x 3 Toshiba 10k SAS RAID5 (via LSI 9260-8i)
- 1 x Mellanox ConnectX-3 InfiniBand-adapter
- 6.3 CentOS
- Lenovo Think Server RD630 Opslag Host
- Dubbele Intel E5-2680 CPU's (2.7 GHz, 8 cores, 20 MB cache)
- 32 GB RAM (8 GB x 4 DDR3, 16 GB per CPU)
- Micron van 100 GB RealSSD P400e SSD (via LSI 9207-8i)
- 1 x Mellanox ConnectX-3 InfiniBand-adapter
- 6.3 CentOS
- Externe JBOD: iXsystems Titan iX-316J
- Mellanox SX6036 InfiniBand-schakelaar
- 36 FDR-poorten (56Gb/s).
- 4Tb/s totale schakelcapaciteit
Het belangrijkste doel van dit platform is om te benadrukken hoe enterprise-opslag presteert in een daadwerkelijke bedrijfsomgeving en workload, in plaats van te vertrouwen op synthetische of pseudo-synthetische workloads. Synthetische werklastgeneratoren laten goed zien hoe goed opslagapparaten presteren met een continu synthetisch I/O-patroon, maar ze houden geen rekening met andere externe variabelen die laten zien hoe apparaten daadwerkelijk werken in productieomgevingen. Synthetische werklastgeneratoren hebben het voordeel dat ze keer op keer een schoon I/O-patroon laten zien, maar zullen nooit een echte productieomgeving repliceren. Het introduceren van applicatieprestaties bovenop opslagproducten begint te laten zien hoe goed de opslag samenwerkt met de stuurprogramma's, het lokale besturingssysteem, de applicatie die wordt getest, de netwerkstack, de netwerkswitching en externe servers. Dit zijn variabelen waar een generator van synthetische werklast eenvoudigweg geen rekening mee kan houden, en ze zijn ook een orde van grootte meer middelen en infrastructuurintensief in termen van de apparatuur die nodig is om deze specifieke benchmark uit te voeren.
MarkLogic-prestatieresultaten
Met de MarkLogic NoSQL benchmark testen we een breed scala aan storageoplossingen die voldoen aan de minimale eisen van de testomgeving. Om in aanmerking te komen voor testen, moet het opslagapparaat een bruikbare capaciteit van meer dan 650 GB hebben en geschikt zijn voor gebruik onder stressvolle ondernemingsomstandigheden. Dit omvat nieuwe PCIe-toepassingsversnellers, groepen van vier SAS- of SATA-bedrijfs-SSD's, evenals grote HDD-arrays die lokaal of op het netwerk zijn aangesloten. Hieronder staan de totale latentiecijfers die zijn vastgelegd van alle apparaten die tot nu toe in deze test zijn getest. In productrecensies duiken we in meer detail en zetten we concurrerende producten tegenover elkaar, terwijl onze hoofdlijst de gelaagdheid van verschillende opslagoplossingen laat zien.
Apparaat | Algehele gemiddelde latentie | S-lat | J-lat | MR-lat | MG-lat |
---|---|---|---|---|---|
Dell R720 ExpressFlash 350 GB JBOD x 4 (SLC) |
1.24 | 1.56 | 1.56 | 0.46 | 1.37 |
Huawei Tecal ES3000 2.4 TB 4 partities (MLC) |
1.31 | 1.41 | 1.53 | 0.98 | 1.32 |
Huawei Tecal ES3000 1.2 TB 4 partities (MLC) |
1.43 | 1.42 | 1.76 | 1.20 | 1.33 |
EchoStreams FlacheSAN2 w/ Intel SSD 520 S/W RAID0, 4 groepen van 8 180GB SSD's (MLC) |
1.48 | 1.65 | 2.01 | 0.81 | 1.46 |
Micron P320h 700 GB 4 partities (SLC) |
1.49 | 1.62 | 2.13 | 0.79 | 1.41 |
Fusion ioDrive2 Duo MLC 2.4 TB S/W RAID0, High-Performance-modus, 4 partities (MLC) |
1.70 | 1.73 | 2.57 | 0.97 | 1.51 |
Fusion ioDrive2 Duo SLC 1.2 TB S/W RAID0, High-Performance-modus, 4 partities (SLC) |
1.72 | 1.78 | 2.69 | 0.90 | 1.52 |
OCZ Z Drive R4 1.6TB 4 partities (MLC) |
1.73 | 1.67 | 2.38 | 1.43 | 1.42 |
Hitachi Ultrastar SSD400S.B 400GB JBOD x 4 (SLC) |
1.77 | 1.75 | 2.72 | 1.11 | 1.51 |
Slimme Optimus 400 GB JBOD x 4 (MLC) |
1.82 | 1.69 | 2.74 | 1.36 | 1.49 |
EchoStreams FlacheSAN2 w/ Intel SSD 520 S/W RAID10, 4 groepen van 8 180GB SSD's (MLC) |
2.02 | 2.12 | 3.02 | 1.17 | 1.79 |
Virident FlashMAX II 2.2 TB Krachtige modus, 4 partities (MLC) |
2.26 | 2.30 | 3.39 | 1.57 | 1.81 |
Hitachi Ultrastar SSD400M 400 GB JBOD x 4 (MLC) |
2.58 | 2.09 | 4.49 | 2.07 | 1.68 |
OCZ Talos 2 400 GB JBOD x 4 (MLC) |
2.62 | 2.10 | 4.33 | 2.28 | 1.78 |
Intel DC-S3700 200 GB JBOD x 4 (MLC) |
3.27 | 2.71 | 5.80 | 2.59 | 1.95 |
OCZ Talos 2 200 GB JBOD x 4 (MLC) |
3.53 | 2.62 | 6.16 | 3.40 | 1.96 |
Intel SSD 910 800 GB Niet-RAID, JBOD x 4 (MLC) |
4.29 | 3.21 | 8.27 | 3.43 | 2.23 |
Fusion ioDrive2 MLC 1.2 TB S/W RAID0, High-Performance-modus, 4 partities (MLC) |
4.69 | 3.58 | 9.15 | 3.74 | 2.28 |
OCZ Deneva 2 200 GB JBOD x 4 (MLC) |
6.65 | 5.38 | 13.48 | 4.54 | 3.18 |
Kingston E100 200 GB JBOD x 4 (MLC) |
8.00 | 6.82 | 16.22 | 5.46 | 3.49 |
Smart CloudSpeed 500 240GB JBOD x 4 (MLC) |
11.06 | 9.07 | 22.74 | 7.19 | 5.23 |
Micron P400m 400 GB JBOD x 4 (MLC) |
12.60 | 9.70 | 27.51 | 8.70 | 4.51 |
Fusion ioDrive Duo MLC 1.28 TB S/W RAID0, High-Performance-modus, 4 partities (MLC) |
12.89 | 10.52 | 26.77 | 9.70 | 4.58 |
Micron P400m 200 GB JBOD x 4 (MLC) |
14.98 | 11.99 | 31.93 | 10.54 | 5.46 |
Toshiba 15K MK01GRRB 147 GB H/W LSI 9286-8e x 16, RAID10 x 4 |
16.58 | 7.85 | 40.61 | 12.25 | 5.61 |
LSI Nytro WarpDrive 800 GB 4 partities (MLC) |
17.39 | 17.08 | 31.42 | 13.63 | 7.43 |
Toshiba 10K MBF2600RC 600 GB H/W LSI 9286-8e x 16, RAID10 x 4 |
24.20 | 10.89 | 57.94 | 20.61 | 7.35 |
Toshiba 15K MK01GRRB 147 GB Software-RAID x 16, RAID10 x 4 |
61.40 | 54.33 | 126.77 | 45.21 | 19.28 |