Truy vấn mongodb 1 triệu bản ghi

Làm việc với các bản ghi cơ sở dữ liệu 100 nghìn — 1 triệu gần như không phải là vấn đề với các gói giá Mongo Atlas hiện tại. Bạn tận dụng tối đa nó mà không cần phải hối hả, chỉ bằng phần cứng vừa đủ, chỉ cần sử dụng chỉ mục và phân trang

Nhưng hãy tưởng tượng dự án của bạn gần đây có một tập dữ liệu khách hàng khổng lồ cho hệ thống ETL mới. Bây giờ, bạn cần tạo tập lệnh tải lên một lần và sau đó xử lý tính toán KPI cho tất cả (hoặc một phần) tập dữ liệu

Còn việc có một tập dữ liệu lớn hơn 1 triệu bản ghi thì sao? . Không phải tất cả các phương pháp tiêu chuẩn đều hoạt động hiệu quả đối với những khối lượng như vậy

Do đó, hãy xem cách chúng tôi có thể xử lý khối lượng này bằng cách tăng dần kích thước tập dữ liệu và giải quyết các vấn đề về hiệu suất

Tuyên bố miễn trừ trách nhiệm — Tất cả mã nằm ở đây — Github

Cài đặt

Để làm cho thử nghiệm này trở nên đơn giản, tôi chọn sử dụng cụm M30 *Dedicated * trên Mongodb Atlas. Có một gói Mongo không có máy chủ nhưng hãy bỏ qua nó cho thử nghiệm này

Truy vấn mongodb 1 triệu bản ghi

Ngoài ra, có một công cụ đã được tích hợp sẵn trong Atlas để tải các mẫu tập dữ liệu, nhưng tôi khuyên bạn nên làm theo cách tiếp cận *thô sơ* để thực hiện các tập lệnh tùy chỉnh. Bạn có thể có máy chủ MongoDB tự lưu trữ mà không có Atlas hoặc atlas CLI không thể hỗ trợ loại tiện ích mở rộng tập dữ liệu của bạn, hơn nữa, bạn sẽ tự kiểm soát luồng dữ liệu

Một điều nữa cần đề cập là tốc độ internet. Các thử nghiệm đã được hoàn thành trên Macbook Pro cục bộ của tôi với kết nối wifi 25–35 Mbps. Kết quả của thử nghiệm hiện tại có thể khác so với chạy trên phiên bản EC2 sẵn sàng ra mắt vì mạng ở đó tốt hơn nhiều

Bạn có thể tìm thấy một số dữ liệu mẫu ở đâu?

Để thử với việc tạo dữ liệu và tạo tập dữ liệu tùy chỉnh, tôi có thể khuyên bạn nên sử dụng - https. // tạo dữ liệu. com/. Tôi đã sử dụng nó để tạo 1🍋 bản ghi dữ liệu. Tại thời điểm viết bài này, gói hàng năm cơ bản có giá 25 đô la và bạn sẽ không hối tiếc

Công cụ này hoạt động trong trình duyệt, vì vậy bạn cần sẵn sàng cho tải CPU nặng trong quá trình tạo

Đừng quên *bỏ khoảng trắng khỏi nội dung được tạo *đánh dấu để làm cho tệp của bạn nhỏ hơn ~20%

Truy vấn mongodb 1 triệu bản ghi

Tôi mất ~3 giờ để tạo tập dữ liệu 1🍋 có kích thước 254MB. Đó là một tệp JSON mà sau này chúng ta sẽ sử dụng để tải nó vào Mongo

Bạn sẽ tìm thấy các liên kết đến bộ dữ liệu sẵn sàng sử dụng trong đoạn chèn

Truy vấn mongodb 1 triệu bản ghi

Tôi khuyên bạn nên sử dụng công cụ này để tạo không quá 2 triệu dữ liệu vì nó mất một khoảng thời gian hợp lý và CPU máy tính xách tay của bạn

Muốn có nhiều dữ liệu hơn với ít nỗ lực hơn?

Một đồng nghiệp của tôi đã giới thiệu cho tôi một nền tảng DS tuyệt vời với các bộ dữ liệu đã được chuẩn bị sẵn để thử nghiệm dữ liệu. Sau khi đào nó, tôi tìm thấy hai bộ dữ liệu phù hợp nhất

  1. Bộ dữ liệu Yelp

Bạn có thể xem lại tất cả nội dung của nó, nhưng nhìn chung, có một tệp JSON lớn 5GB — yelp_academic_dataset_review. json nó chứa 6,9 🍋 bản ghi JSON. Sử dụng Dadroid để xem lại các tệp JSON lớn

Truy vấn mongodb 1 triệu bản ghi

2. Đánh giá ứng dụng trên cửa hàng Steam

Đây là một cái lớn — 45GB đánh giá trên steam. Tôi không biết có bao nhiêu bản ghi bên trong khi tải xuống vì tất cả các tệp đều nằm trong các thư mục được phân trang. Sau này, chúng ta sẽ tìm hiểu cách viết một kịch bản, để tóm tắt, đếm tất cả các bản ghi. Con số chính xác của chúng sẽ được tiết lộ, nhưng tin tôi đi, đây có thể gọi là Dữ liệu lớn (nhỏ)

Làm thế nào để chèn dữ liệu?

Tôi khuyên bạn nên đặt tập dữ liệu của mình bên ngoài thư mục làm việc. Nó sẽ ngăn trình chỉnh sửa mã của bạn lập chỉ mục tất cả cây tệp đó và làm chậm quá trình tìm kiếm văn bản

Chèn 1 triệu bản ghi

Hãy bắt đầu với việc chèn 1 triệu JSON chỉ bằng một thao tác cập nhật đơn giản Nhiều thao tác. Mẫu dữ liệu được tạo

Truy vấn mongodb 1 triệu bản ghi

mẫu dữ liệu


Tôi quyết định thử chèn tất cả các tài liệu vào một phần mà không có bất kỳ đoạn nào


Trong tập lệnh này, chúng tôi chỉ đơn giản gọi một hàm ẩn danh sẽ được thực thi ngay lập tức. Tôi sẽ sử dụng trình điều khiển mongodb bản địa vì tất cả các lib khác đều được xây dựng trên trình điều khiển đó. Ở dòng 3, tôi đã nhập phiên bản fs được quảng cáo để sử dụng chờ trong đầu vào phân tích cú pháp JSON

Thật thú vị khi thử khả năng của gói miễn phí, vì vậy tập lệnh này đã được chạy trên cụm Atlas miễn phí

> node insert/1m/index.js                                                                                                                               
Reading json: 3.279s
Connected successfully to server
Started insertion process successfully to server
Inserting records: 2:18.415 (m:ss.mmm)

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Mongo thậm chí không cảm thấy điều đó. Nút mất ~3 giây để đọc tệp và khoảng 2,5 phút để Mongo ghi 1 triệu bản ghi. Ngoài ra, không có nhiều hơn 3 kết nối được tạo cho điều đó

Còn cụm M30 thì sao?

node insert/1m/index.js                                                                                                                               
Reading json: 2.874s
Connected successfully to server
Started insertion process successfully to server
Inserting records: 2:20.470 (m:ss.mmm)

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Không có thay đổi về hiệu suất ở đây. Cách tiếp cận hiện tại là cách tiếp cận *tốt *, bạn có thể sử dụng nó cho một lần chèn. Nhưng con đường dễ dàng không phải là con đường của chúng ta. Chuyển sang phần tiếp theo

Chèn 7 triệu

Bây giờ hãy làm việc với 7 triệu JSON. Ví dụ về hồ sơ



Một đánh giá ở đây ít lớn hơn một bản ghi trong tập dữ liệu được tạo trước đó, tuy nhiên, khối lượng này đủ để gây căng thẳng cho cả Node và Mongo

Liệu cách tiếp cận trước đây có phù hợp với khối lượng dữ liệu như vậy không? . Tôi đã thay đổi đường dẫn đến tập dữ liệu mới và bắt đầu tập lệnh của mình

node insert/1m/index.js

RangeError [ERR_FS_FILE_TOO_LARGE]: File size (5341868833) is greater than 2 GB
    at new NodeError (node:internal/errors:372:5)
    at readFileHandle (node:internal/fs/promises:377:11)
    at async /Users/mongo-performance/insert/1m/index.js:16:36 {
  code: 'ERR_FS_FILE_TOO_LARGE'

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

2GB là kích thước giới hạn cho các tệp có thể được lưu trữ trong Nút. thực thể bộ đệm js. Đó là lý do tại sao chúng ta nên sử dụng Luồng ở đây

Một tài liệu tham khảo nhanh từ tài liệu

Luồng là một giao diện trừu tượng để làm việc với luồng dữ liệu trong Nút. js. Có nhiều đối tượng luồng được cung cấp bởi Node. js. Chẳng hạn, một yêu cầu tới máy chủ HTTP và xử lý. thiết bị xuất chuẩn là cả hai phiên bản luồng. Luồng có thể đọc được, ghi được hoặc cả hai. Tất cả các luồng là phiên bản của EventEmitter

Bây giờ chúng ta cần thực hiện một số thay đổi sơ bộ đối với tập lệnh



Dòng 23 - chúng tôi đã tạo một luồng có thể đọc được và sử dụng lib stream-json để dẫn luồng đó. Điều này đã được thực hiện kể từ khi sử dụng Bộ đệm thô từ Node. js sẽ làm cho quá trình đọc phức tạp hơn. Chúng ta cần bằng cách nào đó để xâu chuỗi Bộ đệm đó và tự phân tích cú pháp JSON từ chuỗi — stream-json sẽ làm việc này cho chúng ta

Dòng 25 - luồng được sử dụng thông qua Trình phát sự kiện. Hàm được đăng ký với một sự kiện *dữ liệu * và mỗi biến dữ liệu chứa chính xác một bản ghi JSON từ tệp tập dữ liệu 7m của chúng tôi

Dòng 27 — tất cả các bản ghi được đẩy vào một mảng tích lũy — arrayToInsert

Dòng 29 có một toán tử còn lại — nó chỉ được sử dụng để kích hoạt nhánh if bất cứ khi nào 100 nghìn bản ghi mới được đẩy vào mảng

Dòng 30 - khi chúng tôi nhập nhánh câu lệnh if, đường ống sẽ bị tạm dừng để ngăn việc đẩy mảng mới. Không có gì mới hơn nữa — insertMany và đợi 100 mili giây sau mỗi cuộc gọi. Tiếp tục đường dẫn và thực hiện cho đến khi kết thúc sự kiện kích hoạt để thoát khỏi tập lệnh

Trong ví dụ này, chúng tôi đang chèn 100k liên tục với một chút chậm trễ. thời gian thử nghiệm

node ./insert/insert-7mil-m30.js

Connected successfully to server
arrayToInsert size - 354.85045185293717 mb
Inserting time - 100000: 45.277s
--------------


.................


arrayToInsert size - *142*.*23186546517442* mb
Inserting time - *6900000*: *25*.911s
--------------

Operation took -  *1749*.*997*  seconds = ~29 minutes


Process finished with exit code 0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Mất khoảng 29 phút để chèn. Và bây giờ có vẻ hợp lý quá nhiều thời gian để chạy

Truy vấn mongodb 1 triệu bản ghi

Truy vấn mongodb 1 triệu bản ghi

Như bạn có thể thấy ở đây, chúng tôi đã sử dụng khoảng 30% CPU hệ thống và 66 IOP là giá trị cao nhất trong quá trình chèn

Theo 29 ​​phút trên 7 triệu tài liệu, khi bạn cần đặt 50 triệu bản ghi, sẽ mất gần như vô hạn (~ 3,5 giờ để chạy)😊

Chúng tôi chắc chắn có thể cải thiện nó bằng cách thêm một số thao tác chèn song song và có thể tăng kích thước khối 100k để xử lý nhiều thao tác song song hơn



Dòng 36 - 42 — củ cải. song song được sử dụng để thực hiện 5 lần chèn song song với một đoạn gồm 20 nghìn bản ghi. Các khối được tạo bởi lodash. phương pháp khối

Sau này, phương pháp này sẽ được sử dụng lại cho các phần chèn lớn hơn, vì vậy hãy dành thời gian của bạn để tìm hiểu cách thức hoạt động của nó

Kết quả

node insert/7m/7m-m30-per200k-5X20k.js                                                                                                                
Connected successfully to server
arrayToInsert size - 269.14077478740194 mb

id: 1664486093579 - stats: size 26.909 mb, records: 20000 - took: : 7.258s
id: 1664486093497 - stats: size 26.581 mb, records: 20000 - took: : 11.450s

................

id: 1664486950224 - stats: size 27.520 mb, records: 20000 - took: : 6.973s
id: 1664486951694 - stats: size 27.230 mb, records: 20000 - took: : 5.562s
--------------

Operation took -  867.229  seconds // ~14 minutes

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Như chúng ta có thể thấy ở đây hiệu suất được cải thiện đến 50%. Tôi đoán nó bây giờ tốt hơn nhiều. Còn Mông Cổ thì sao?

Truy vấn mongodb 1 triệu bản ghi

CPU hệ thống đã tăng lên 40%, nhiều hơn 10% so với lần chèn 100k theo trình tự

Truy vấn mongodb 1 triệu bản ghi

IOPS cũng tăng gần gấp đôi từ 50 lên 100 và kết nối cũng tăng từ 40 lên ~60

Tôi chắc chắn rằng có một cách lớn để cải thiện ở đây nhưng kết quả này phù hợp với hầu hết các trường hợp. Bây giờ bằng cách sử dụng song song hóa này, chúng tôi có thể nhận được dữ liệu Lớn-nhỏ của mình

Chèn hơn 50 🍋

Để thực hiện thử nghiệm này, chúng tôi cần rất nhiều dữ liệu, phải không? . Ngoài ra, tôi đã đề cập rằng trước khi loay hoay với tập lệnh chèn, chúng ta chỉ cần biết chính xác các bản ghi ở đó như thế nào

Tổng quan nhanh về các thư mục tập dữ liệu

Bộ dữ liệu này bao gồm các thư mục, mỗi thư mục chứa từ 10 đến 2000 tệp JSON. Mỗi JSON có thể chứa bất kỳ số lượng đánh giá nào

Truy vấn mongodb 1 triệu bản ghi

Trong ví dụ hiện tại, tập lệnh chủ yếu nên lặp lại qua từng thư mục, đọc tệp và lưu bộ đếm độ dài mảng đánh giá ở đó. Hãy xem một bài đánh giá bên trong tệp JSON



Như bạn có thể thấy bản ghi này là tài liệu lớn nhất trong số các bộ dữ liệu được so sánh

Một điều tôi muốn thực hiện trong tập lệnh này là thêm một số tham số đầu vào để hạn chế phân trang thư mục của chúng tôi. Nó sẽ cho phép chúng tôi kiểm tra tập lệnh trên một tập hợp con dữ liệu và chèn song song bằng cách chọn một loạt thư mục cho mỗi quy trình. Bây giờ hãy kiểm tra chính tập lệnh


Dòng 2 — gói tối thiểu được sử dụng để giúp dễ dàng đọc các tham số CLI bên trong quy trình nút. Bây giờ nó có thể được sử dụng như thế này * nút inde. js --from=1 --to=55*

Dòng 11 - liệt kê các thư mục sử dụng fs. lời hứa. thư mục đọc

Dòng 13 - chọn các đường dẫn bên trong thư mục của bộ dữ liệu và cắt chúng thành phạm vi chính xác mà chúng tôi sẽ làm việc với

Dòng 18 - mọi đường dẫn bên trong vòng lặp chứa một thư mục không có tệp JSON và thao tác tương tự sẽ được thực hiện ở đây - liệt kê tất cả các tệp JSON có fs. lời hứa. thư mục đọc

InternalPaths chứa tất cả các đường dẫn đến các tệp JSON mà chúng ta cần lặp lại. Tôi đã sử dụng củ cải. song song để đọc tệp trong dir nhanh hơn. Ngoài ra, không có luồng nào ở đây vì hầu hết mọi tệp đều không lớn hơn 100kb

Dòng 27 - phân tích cú pháp JSON ra khỏi chuỗi Bộ đệm và đọc khóa đánh giá độ dài. Tổng hợp doneReadingReview var

Có một nhật ký bảng điều khiển quan trọng trên dòng 33. Vì việc chèn dữ liệu có thể được thực hiện song song sau này nên chúng tôi cần biết có bao nhiêu thư mục đã được đọc để tích lũy một triệu bản ghi tiếp theo. Thời gian để chạy tập lệnh kỳ lạ này

node insert/50m+/read-size-of-dataset/index.js --from=1 --to=60000

 All paths 51936
done paths - 1953 done reviews 1000066
done paths - 3339 done reviews 4000078

........

done paths - 44528 done reviews 59000025
done paths - 51410 done reviews 63000010

Reviews 63199505
Reviews 63199505
Operation took -  429.955  seconds // ~ 7 minutes

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Quạt máy tính xách tay của tôi đạt RPS tối đa khi đọc tập dữ liệu này. Khi nào chúng ta có ở đây

  • 51936 thư mục

  • đáng kinh ngạc 63 199 505 hồ sơ

  • thời gian đọc là 7 phút (và đó chỉ là tính độ dài)

Hãy tính xem sẽ mất bao lâu để chèn 63🍋 bằng cách sử dụng kết quả tốt nhất của chúng tôi ở các bước trước đó (7🍋/14 phút) — 2h (khoảng 126 phút). Tôi không nghĩ chúng ta có thể từ bỏ điều đó

Chèn 63 triệu bản ghi

Như chúng ta đã thấy trước đây - quyền lực đang song song hóa. Sử dụng đầu ra nhật ký của phần trước, chúng ta nên chia nhật ký của mình thành 6 phần chẵn. Sau đó, sử dụng lại các phần đường dẫn đã thực hiện dưới dạng đầu vào --from và — toparams cho tập lệnh tiếp theo của chúng tôi. Nó sẽ dẫn đến các cặp này

1 - 14454

14454 - 25104

25104 - 28687

28687 - 34044

34044 - 42245

42245 - 52000

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Vì chúng tôi đã chuẩn bị tập lệnh đếm của mình để sử dụng phạm vi cho thư mục, bước tiếp theo chỉ là thêm phần chèn. Hãy xem lại kịch bản đã sẵn sàng và các phần chính của nó



Có 3 phần chính đã được thay đổi

Dòng 46–47 — chúng tôi chỉ đơn giản là đẩy các bài đánh giá mới vào một mảng

Các dòng 55–65 — khi có nhiều đánh giá hơn ngưỡng chúng được chèn vào Mogno và khi vòng lặp ở lần lặp cuối cùng, chúng tôi buộc phải chèn dữ liệu để đảm bảo tất cả dữ liệu được chèn

Dòng 87–100 — chức năng chèn phân đoạn tất cả các bài đánh giá trên mỗi 20k và chèn song song

Vì chúng tôi đã xác định các cặp cho các khối có cùng kích thước tập dữ liệu trước đó, tôi đoán chúng tôi có thể thử chạy tập lệnh chèn trong 6 quy trình song song. Để làm cho mọi thứ đơn giản, hãy mở 6 cửa sổ đầu cuối và chạy nó. Bạn luôn có thể sử dụng các mô-đun luồng công nhân tích hợp trong Node. js và công cụ pm2, nhưng thử nghiệm của chúng tôi có thể đáp ứng giải pháp nguyên thủy nhất. thời gian thử nghiệm

Truy vấn mongodb 1 triệu bản ghi

Kết quả của mỗi lần thực hiện song song

--from=*1* --to=*14454*
Done reading reviews:  *10 963 467
*Script: took -  *4963*.*341*  seconds ~ 1h 22m

--------

--from=*14454* --to=*25104
*Done reading reviews:  *10 498 700
*Script: took -  *5016*.*944*  seconds ~ 1h 23m

--------

--from=*25104* --to=*28687*
Done reading reviews:  *10 874 942
*Script: took -  *5050*.*838*  seconds ~ 1h 24m

---------

--from=*28687* --to=*34044
*Done reading reviews:  *11 659 485
*Script: took -  *5088*.*016 * seconds ~ 1h 24m

---------

--from=*34044* --to=*42245
*Done reading reviews:  *10 044 895
*Script: took -  *4796*.*953*  seconds ~ 1h 19m

---------

--from=*42245* --to=*52000*

Done reading reviews:  *9 158 016
*Script: took -  *4197*  seconds ~ 1h 9m

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Mất khoảng 1 giờ 24 phút để chèn 63🍋 bản ghi. Tốc độ chèn tuần tự nhanh hơn 33% so với dự đoán trước đây của chúng tôi. Chúng tôi đã tải gần 45GB dữ liệu trong chưa đầy một tiếng rưỡi. Còn Mông Cổ thì sao?

Truy vấn mongodb 1 triệu bản ghi

Truy vấn mongodb 1 triệu bản ghi

Những phần chèn này đã tải cụm khá nhiều. CPU hệ thống tối đa ~65%, CPU xử lý khoảng 40% trong toàn bộ thời gian. Các kết nối luôn ở mức 100 gần như toàn bộ thời gian và IOPS trung bình là 125. Tôi đoán những kết quả này là đủ tốt bây giờ

Một điều nữa

Tất cả các phương pháp được mô tả là cải thiện hiệu suất chung. Nhưng có thêm một cách hack dành riêng cho trình điều khiển mà bạn có thể sử dụng tùy thuộc vào dự án của mình

Phương thức insertMany của MongoDB có các tham số tùy chọn mà bạn có thể thay đổi để thực hiện thao tác chèn nhanh hơn nữa

  • viếtQuan tâm

  • ra lệnh

Sử dụng chúng cũng có thể tăng tốc độ chèn

Nhưng bạn cần lưu ý rằng việc sử dụng. ra lệnh. sai sẽ không cho phép bạn dựa vào thứ tự chèn của tài liệu

viếtQuan tâm. {w. 0} không yêu cầu xác nhận thao tác ghi (nguồn)

Nếu không có điều nào trong số này ngụ ý các yêu cầu của ứng dụng, bạn có thể sử dụng nó

Gói (lại

  • bạn có thể dễ dàng chèn 1m bản ghi bằng cách sử dụng insertMany. Nó sẽ không tạo ra bất kỳ tác động đáng kể nào đến hiệu suất ứng dụng của bạn

  • tải từ 1m đến 10m có thể sẽ yêu cầu bạn sử dụng API luồng và một số thao tác chèn song song. Nó có thể ảnh hưởng đến hiệu suất của Ứng dụng do thời gian chèn và tải ghi tăng lên

  • để tải hơn 10 triệu, bạn cần song song hóa cả quy trình và phần chèn để làm cho nó nhanh. Hiệu suất ứng dụng có thể giảm đáng kể do CPU cụm và IOPS được sử dụng nhiều. Lên lịch chạy tập lệnh hoặc điều chỉnh số lượng thao tác/quy trình có thể thực thi song song

Vô cùng cảm kích vì bạn đã đọc đến thời điểm này, hy vọng Nó sẽ giúp bạn trở thành một nhà phát triển tốt hơn

Đăng ký Phương tiện của tôi, theo dõi tôi trên Twitter, kết nối trên LinkedIn và xem các ví dụ mã trên GitHub

MongoDB có thể xử lý hàng triệu bản ghi không?

Làm việc với MongoDB và ElasticSearch là một quyết định chính xác để xử lý hàng triệu bản ghi trong thời gian thực . Những cấu trúc và khái niệm này có thể được áp dụng cho các bộ dữ liệu lớn hơn và cũng sẽ hoạt động rất tốt.

Giới hạn của truy vấn MongoDB là bao nhiêu?

Trong MongoDB, phương thức limit() giới hạn số lượng bản ghi hoặc tài liệu mà bạn muốn . Về cơ bản, nó xác định giới hạn tối đa của hồ sơ/tài liệu mà bạn muốn. Hay nói cách khác, phương thức này sử dụng trên con trỏ để chỉ định số lượng tài liệu/bản ghi tối đa mà con trỏ sẽ trả về.

Tôi có thể sử dụng MongoDB cho dữ liệu lớn không?

Do những yêu cầu đặc biệt này, Cơ sở dữ liệu NoSQL (không liên quan), chẳng hạn như MongoDB, là một lựa chọn hiệu quả để lưu trữ dữ liệu lớn .

MongoDB có thể xử lý hàng petabyte dữ liệu không?

Phần mềm cung cấp quy mô cực lớn, phục hồi nhanh chóng và tối ưu hóa lưu trữ thông minh. Sự gắn kết đang được các doanh nghiệp hàng đầu trong danh sách Fortune 500 sử dụng trong ngành bán lẻ, dịch vụ tài chính và chăm sóc sức khỏe. Các tính năng chính • Khả năng mở rộng cực cao sử dụng kiến ​​trúc mở rộng quy mô có thể hỗ trợ dữ liệu từ vài terabyte đến petabyte .