MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách mới để quản lý cơ sở dữ liệu nguồn mở

Cách đây không lâu, ngành công nghiệp cơ sở dữ liệu bao gồm một số ít các nhà cung cấp. Cơ sở dữ liệu chủ yếu là quan hệ và chạy trên các máy đơn lẻ. Tính khả dụng cao đã được triển khai thông qua các ‘cụm’ hoạt động ở chế độ chờ. Với mô hình 'mở rộng quy mô' theo chiều dọc, chủ yếu là về bộ nhớ dùng chung (SAN hoặc DRBD) hoặc sao chép không đồng bộ các bản ghi để đồng bộ hóa trạng thái với một nút chờ. Năm 2001, khi tôi bắt đầu làm việc với NDB Cluster (sau này trở thành MySQL Cluster), khái niệm giữ toàn bộ cơ sở dữ liệu trong bộ nhớ chính thật kỳ lạ - "điều gì sẽ xảy ra nếu bạn tắt máy chủ?". Việc phân phối cơ sở dữ liệu trên nhiều máy chủ thật đáng lo ngại - "bạn có những phần dữ liệu ở đây và ở đó". Và toàn bộ ý tưởng về một cơ sở dữ liệu mã nguồn mở cho các khối lượng công việc quan trọng của sứ mệnh thật nực cười.

15 năm trôi qua và chúng tôi hiện đã có hàng chục nhà cung cấp cơ sở dữ liệu trên thị trường - hầu hết là mã nguồn mở, các mô hình khác nhau (giá trị khóa, tài liệu, đồ thị,…) và được phân phối theo mặc định. Dữ liệu thường trú trong bộ nhớ là tiêu chuẩn để đạt được hiệu suất cao và độ trễ thấp. Ba trong số 5 cơ sở dữ liệu phổ biến nhất (theo xếp hạng của db-engine) là mã nguồn mở (MySQL, PostgreSQL và MongoDB). Ngày nay, bạn có nhiều khả năng quản lý một nhóm máy chủ cơ sở dữ liệu được phân phối trên các trung tâm dữ liệu khác nhau. Bạn thậm chí có thể có một số cơ sở dữ liệu của mình do nhà cung cấp đám mây bên thứ ba quản lý.

Vậy, quản lý cơ sở dữ liệu vào năm 2018 sẽ như thế nào?

TỰ ĐỘNG HÓA

Với rất nhiều nhiệm vụ cần quản lý và chỉ có rất nhiều giờ trong một ngày, người ta sẽ rất khó chịu khi làm mọi việc theo cách thủ công.

Tự động hóa là một cách tuyệt vời để hoàn thành công việc. Khi chúng ta có ít cơ sở dữ liệu để quản lý, việc vận hành cơ sở dữ liệu sẽ rất thực hành, với một số tác vụ được viết theo thứ tự như bash hoặc perl - ví dụ:một tập lệnh để sao lưu cơ sở dữ liệu, một tập lệnh khác để di chuyển các tệp sao lưu đến một vị trí nào đó. Chuyển đổi dự phòng sẽ là thủ công và chúng tôi thậm chí sẽ tranh luận xem liệu nó có nên được tự động hóa hay không.

Ngày nay, tự động hóa là điều không cần bàn cãi. Có một số hệ thống quản lý cấu hình hoặc tự động hóa CNTT có thể được tận dụng - Puppet, Chef, Ansible và Salt đều cung cấp các khuôn khổ có mục đích chung có thể được sử dụng để xây dựng tự động hóa cho các cấu trúc liên kết cơ sở dữ liệu khác nhau. Phần mềm quản lý cụm được viết riêng để quản lý thiết lập cơ sở dữ liệu bao gồm MongoDB Ops Manager và ClusterControl. Chúng cho phép các nhóm hoạt động quản lý các cụm của họ bằng một thứ gì đó sẵn có ngay từ đầu. Xây dựng một hệ thống quản lý cụm từ đầu bằng cách sử dụng một hệ thống quản lý cấu hình là một kỳ công không nhỏ. Nó đòi hỏi kiến ​​thức chuyên môn đáng kể về công cụ tự động hóa cũng như hiểu biết về các hoạt động quản lý như xác minh và lập lịch sao lưu, chuyển đổi dự phòng tự động với việc cấu hình lại hệ thống sau đó, triển khai các thay đổi cấu hình, vá lỗi, nâng cấp hoặc hạ cấp phiên bản, v.v.

Và tất nhiên, có sự gia tăng của các nền tảng dịch vụ DBaaS, nơi việc triển khai, tình trạng, chuyển đổi dự phòng, sao lưu, v.v., tất cả đều được kiểm soát bởi phần mềm. Các nhà cung cấp đám mây thực sự rất giỏi trong việc tự động hóa. Amazon RDS là một ví dụ tuyệt vời về tự động hóa cơ sở dữ liệu trên quy mô lớn - nó tự động hóa việc triển khai, nâng cấp bản vá, sao lưu, khôi phục kịp thời, mở rộng các bản sao và tính khả dụng / chuyển đổi dự phòng cao.

PETS so với CATTLE

Vào những năm 90 và cho đến khi dotcom bùng nổ và phá sản, Sun Microsystems và Oracle đã kiếm được nhiều tiền nhờ bán cơ sở dữ liệu mở rộng quy mô trên phần cứng SMTP lớn. Hãy ném vào đó một số bộ nhớ SAN và phần mềm chuyển đổi dự phòng Veritas và bạn sẽ có cho mình một cụm chuyển đổi dự phòng hoạt động ở chế độ chờ hiện đại để có tính khả dụng cao. Các máy chủ cơ sở dữ liệu có số lượng tương đối ít, nhưng mạnh mẽ vì chúng sẽ phát triển theo chiều dọc. Chúng đã được đặt tên (giống như bạn đặt tên cho vật nuôi của mình!) Và được các DBA chăm sóc.

Ngày nay, cơ sở dữ liệu rẻ và chạy tốt trên phần cứng hàng hóa. Có rất nhiều trong số đó và chúng tôi cung cấp cho họ những con số - giống như gia súc. Nếu một cái bị hỏng, chúng ta có thể lấy cái mới.

Nó cũng là một giống gia súc mới - gia súc mã nguồn mở! Ba trong số năm cơ sở dữ liệu hàng đầu, theo db-engine, tất cả đều là mã nguồn mở - chúng đang dần dần ăn sâu vào thị phần của hai nhà cung cấp độc quyền. Nguồn mở là tiêu chuẩn trung tâm dữ liệu mới, không chỉ cho hệ điều hành mà còn cho cơ sở dữ liệu.

https://db-engines.com/en/ranking

Vì vậy, điều này có nghĩa là cho bạn? Chà, trong tương lai, nhiều khả năng bạn sẽ quản lý một cơ sở dữ liệu nguồn mở - hoặc thậm chí nhiều cơ sở dữ liệu cho các ứng dụng sử dụng bộ sưu tập dữ liệu không đồng nhất. Trong một thế giới của sự tồn tại của polyglot và microservices, kho dữ liệu cơ bản giờ đây được quyết định bởi bản chất của dữ liệu. Từ quan điểm kiến ​​trúc, cơ sở dữ liệu cá thể đơn lẻ với HA dựa trên đĩa đang nhường chỗ cho các cụm có khả năng được phân phối trên nhiều trung tâm dữ liệu.

Chúng ta có cần DBA không?

Vai trò DBA là một vai trò chuyên biệt - phải mất nhiều năm kinh nghiệm để trở thành một vai trò. Trước đây, khi chỉ có một vài nhà cung cấp cơ sở dữ liệu độc quyền để lựa chọn, bạn sẽ có các DBA chuyên biệt với một bộ kỹ năng và kinh nghiệm cụ thể. Nó cũng được yêu cầu - các cơ sở dữ liệu như Oracle hoặc SQL Server có các bộ tính năng khổng lồ, được xây dựng trong nhiều thập kỷ. Chúng không dễ quản lý. Chúng thường được triển khai làm cơ sở dữ liệu duy nhất cho một ứng dụng và cần được theo dõi, sao lưu dữ liệu và bất kỳ vấn đề nào xuất hiện đều phải được xử lý. Những nhiệm vụ này chính là điều mà các DBA ở đây tập trung vào.

Tuy nhiên, trong thập kỷ qua, một ngành công nghiệp cơ sở dữ liệu hoàn toàn mới đã xuất hiện - với hàng chục và hàng chục cơ sở dữ liệu mã nguồn mở, cũng như các dịch vụ cơ sở dữ liệu đám mây. Như chúng ta đã thấy trước đó, không có gì lạ khi một ứng dụng đang sử dụng một vài kho dữ liệu khác nhau. Nhưng các công ty hiếm khi có DBA cho các kho dữ liệu này mà họ sử dụng. Bạn tìm thấy MongoDB hoặc Cassandra hoặc DBA với hơn 5 năm kinh nghiệm sản xuất ở đâu? Người ta có thể tranh luận rằng thế hệ cơ sở dữ liệu NoSQL mới đơn giản hơn nhiều so với thế hệ trước nguồn đóng của chúng và do đó sẽ không có cùng một đường cong học tập.

Quản lý chúng sẽ chỉ là một nhiệm vụ khác được thêm vào danh sách việc cần làm của nhóm SysAdmin hoặc DevOps hoặc Kỹ thuật độ tin cậy của trang web (SRE). Và ngày nay chúng ta thấy rằng nhiều công ty không có DBA toàn thời gian. Thay vào đó, trách nhiệm được phân bổ cho các nhóm, với các công cụ tự động hóa ngày càng được sử dụng để đảm nhận các công việc hàng ngày. Đối với cơ sở dữ liệu đã chuyển sang đám mây, các khía cạnh hoạt động về cách dữ liệu đang được lưu trữ được thuê ngoài hoàn toàn cho nhà cung cấp đám mây. Vì vậy, thay vì làm việc về cách lưu trữ dữ liệu, nhóm hoạt động hiện có thể tập trung vào việc sử dụng dữ liệu.

Vòng đời cơ sở dữ liệu

Vòng đời trung bình của một cơ sở dữ liệu từng dài hơn nhiều so với vòng đời của chúng ngày nay. Sau khi bạn chọn một nền tảng cơ sở dữ liệu, đó là nó. Quyết định sẽ được đưa ra giữa hai hoặc ba cơ sở dữ liệu quan hệ, thường là bởi DBA hoặc người nào đó cấp cao hơn trong tổ chức. Công ty sẽ kiếm được tiền để mua giấy phép vĩnh viễn. Sau khi quyết định đã được đưa ra, bây giờ bạn phải sống với nó trong hơn 10 năm tiếp theo. Cơ sở dữ liệu là nguyên khối và các ứng dụng thường sẽ sử dụng một cơ sở dữ liệu được chia sẻ duy nhất.

Ngày nay, trong thế giới của các vùng chứa, đám mây, microservices và đường ống CI / CD, không có gì lạ khi các nhà phát triển đưa ra các lựa chọn công nghệ - đặc biệt nếu đó là cơ sở dữ liệu nguồn mở có thể dễ dàng tải xuống hoặc được cung cấp dưới dạng dịch vụ, mà không cần phải nói chuyện với đại diện bán hàng hoặc phải tìm kiếm ngân sách từ ban quản lý. Các tổ chức đang bị thách thức để tạo ra giá trị nhanh hơn, vì vậy tỷ lệ thay đổi đối với cơ sở hạ tầng / ứng dụng đã tăng lên đáng kể. Cơ sở dữ liệu nguyên khối hiện được chia thành nhiều cơ sở dữ liệu nhỏ, với mỗi cơ sở dữ liệu quản lý dữ liệu miền cho một dịch vụ nhỏ riêng lẻ. Với sự đa dạng của các sản phẩm cơ sở dữ liệu hiện có trong hệ sinh thái mã nguồn mở, các nhóm có quyền lựa chọn và tự do chuyển sang một kho dữ liệu tốt hơn. Khi các dịch vụ được đưa vào hoạt động và ngừng hoạt động, cơ sở dữ liệu cũng tuân theo - mặc dù bản thân dữ liệu có thể được lưu trữ hoặc di chuyển vào một hồ dữ liệu. Trong bối cảnh cơ sở hạ tầng năng động hơn nhiều ngày nay, chúng tôi thấy rằng cơ sở dữ liệu của chúng tôi đang có tuổi thọ ngắn hơn.

VAI TRÒ CỦA DBA

DBA, theo truyền thống vừa là người giám hộ vừa là người gác cổng của cơ sở dữ liệu, sẽ phục vụ nhu cầu cơ sở dữ liệu của các nhóm ứng dụng / cơ sở hạ tầng khác nhau trong tổ chức. Bất kỳ thay đổi nào yêu cầu quyền truy cập hoặc thay đổi cơ sở dữ liệu sẽ yêu cầu các dịch vụ của DBA. Tuy nhiên, các ưu tiên xung đột và thiếu tính khả dụng của DBA có thể đồng nghĩa với việc dự án sẽ bị chặn / trì hoãn và sẽ xảy ra xung đột không thể tránh khỏi.

Chi phí hợp tác cao và đổi mới nhanh / thời gian ngắn đưa ra thị trường không đi đôi với nhau. Như chúng ta đã thấy trước đó, microservices là một ví dụ về cách cơ sở hạ tầng và các dịch vụ ứng dụng hiện được kiến ​​trúc để tách rời nhiều nhất có thể. Cơ sở dữ liệu ngày càng được tự động hóa và việc kiểm soát cơ sở dữ liệu đang chuyển sang các nhà phát triển hoặc nhóm dự án. Ngay cả những thứ như thay đổi lược đồ cũng không còn nặng nề như trước đây. Chúng khó hơn nhiều trong bối cảnh cơ sở dữ liệu trung tâm cho một ứng dụng nguyên khối. Với việc dữ liệu được chia sẻ giữa các thành phần khác nhau, các thay đổi lược đồ sẽ cần được phối hợp và lên kế hoạch cẩn thận - thường là trước hàng tháng. DBA có vai trò quan trọng trong việc hiểu và thực hiện các thay đổi. Các động lực ngày nay đã khác, khi tốc độ thay đổi nhanh hơn nhiều. Không có gì lạ khi các nhóm phát triển đang thúc đẩy các thay đổi mã trong quá trình sản xuất hàng tuần hoặc hàng ngày - hoặc thậm chí vài lần một ngày! Cơ sở dữ liệu cần cập nhật liên tục để theo kịp những thay đổi của ứng dụng và những thay đổi này được thực hiện bởi các nhà phát triển. Một số cơ sở dữ liệu mới hơn như MongoDB thậm chí còn làm cho nó rất đơn giản bằng cách có một mô hình schemaless. Điều hiệu quả có nghĩa là lược đồ cơ sở dữ liệu đang chuyển sang mã ứng dụng.

Vì vậy, nếu tất cả các nhiệm vụ cốt lõi phổ biến đang được tự động hóa, điều gì sẽ xảy ra với vai trò DBA trong tương lai? Thay vì tập trung vào các nhiệm vụ hành chính, DBA sẽ hoạt động nhiều hơn như một người cố vấn cho các đội khác trong tổ chức. Các tổ chức cần hiểu họ có dữ liệu gì và dữ liệu đó có thể được sử dụng như thế nào. Xét cho cùng, dữ liệu có giá trị nhất khi được chia sẻ và kết hợp với các tài nguyên khác, không chỉ được lưu trữ. Schemaless nghe có vẻ tuyệt vời, nhưng chúng ta vẫn cần theo dõi dữ liệu của mình - trong cơ sở dữ liệu hoặc trong mã. Bảo mật là một thách thức và vi phạm dữ liệu ngày càng trở nên tồi tệ hơn. Vì vậy, nếu chúng ta muốn làm cho dữ liệu trở nên tuyệt vời trở lại, DBA cần phải chuyển sang vai trò cố vấn / người điều hành theo chiều ngang trải dài qua các nhóm. Từ góc độ năng lực, DBA hiện đại cần hiểu cách thiết kế các hệ thống có tính sẵn sàng cao phân tán và đưa vào áp dụng các hệ thống tự động hóa hiệu quả để đảm nhận các nhiệm vụ thông thường. Khi các công ty triển khai cơ sở hạ tầng trên các môi trường đám mây hoặc thậm chí là vùng chứa, việc hiểu cách xây dựng cơ sở dữ liệu có khả năng mở rộng và khả dụng cao trên các nền tảng này sẽ đảm bảo sự tồn tại của DBA.

Tóm tắt

Chúng ta đang ngồi ở một ngã ba hấp dẫn trong lịch sử của ngành cơ sở dữ liệu, ngành đã trải qua một quá trình chuyển đổi lớn trong 2 thập kỷ qua. Bảng dưới đây cố gắng tóm tắt nó.

Cách cũ Cách mới
Làm thế nào? Hướng dẫn sử dụng với sự trợ giúp của tập lệnh &công cụ / tiện ích Tự động hóa thông qua phần mềm (rối, đầu bếp, ClusterControl) hoặc nền tảng DBaaS.
Cái gì? Một số phiên bản DB quan trọng, vật nuôi thay vì gia súc Nhóm các phiên bản được ảo hóa, môi trường tồn tại đa giác
Ai DBA chuyên dụng “Mọi người” - DBA, SysAdmins, DevOps, Dev.
Vai trò DBA Vai trò theo chiều dọc - DBA như người giám hộ / người gác cổng, tập trung vào các nhiệm vụ quản trị truyền thống xung quanh hậu cần dữ liệu. Vai trò ngang - DBA như người cố vấn tập trung vào dữ liệu. Chuyển hướng sang các tác vụ phi hoạt động như kiến ​​trúc, bảo mật và chiến lược phân tích / tiêu thụ / điều chỉnh dữ liệu.
Vòng đời Tuổi thọ lâu dài, với những thay đổi được lên kế hoạch trước Tuổi thọ ngắn hạn đến trung hạn, với tốc độ thay đổi nhanh hơn nhiều
Năng lực DB, OS, bộ nhớ DB, OS, Storage, hệ thống phân tán, mạng &bảo mật, tập lệnh tự động hóa

Tôi muốn nghe suy nghĩ của bạn về việc quản lý cơ sở dữ liệu nguồn mở và liệu bạn có thấy xu hướng tương tự không? Những cuộc đấu tranh hoặc thành công của bạn với OSDBs trong những năm qua như thế nào? Và bạn dự đoán điều gì sẽ xảy ra vào năm tới?

Tất nhiên, chúng tôi tại Somenines sẽ tiếp tục hợp tác để giúp tạo điều kiện thuận lợi cho việc quản lý và tự động hóa cơ sở dữ liệu nguồn mở của bạn trong năm tới và hơn thế nữa. Vì vậy, hãy theo dõi các bản cập nhật về điều đó bắt đầu từ tháng 1 tới.

Nhưng trong thời gian chờ đợi, hãy cho tôi biết suy nghĩ của bạn và hẹn gặp lại bạn vào năm 2019!

Ảnh của SoRad (Shutterstock) &The Simpsons; các ảnh khác là của chủ sở hữu tương ứng của chúng.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose giới hạn / bù đắp và truy vấn đếm

  2. Bắt đầu với quản lý người dùng MongoDB

  3. Làm điều gì đó nếu không tìm thấy gì với .find () mongoose

  4. Nối các giá trị chuỗi trong mảng trong một trường duy nhất trong MongoDB

  5. Nhập kiểu dữ liệu ngày bằng mongoimport