Computer >> Máy Tính >  >> Lập trình >> Redis

Kiến trúc không có dữ liệu (DBLess) là gì — và tại sao nó là tương lai

Bạn có thể tự hỏi:Tại sao một công ty cơ sở dữ liệu như Redis lại nói về kiến ​​trúc Không có dữ liệu (DBLess)? Và nó là gì? Đó là điều tự nhiên, nhưng trước khi đi vào chi tiết, hãy cùng xem xét cách suy nghĩ mới đằng sau kiến ​​trúc hoàn toàn mới này.

Để làm được điều đó, tôi muốn đi một vòng nhanh và nói về một thứ gọi là tư duy Nguyên tắc đầu tiên. Nó buộc bạn phải suy nghĩ cho chính mình và không chỉ tuân theo truyền thống mà phải đặt câu hỏi về mọi thứ.

Ý chính của Nguyên tắc đầu tiên là trừ khi bạn đang xem xét quy luật tự nhiên, chẳng hạn như quy luật trọng lực, mọi hệ thống hoặc khái niệm đều do con người tạo ra và có thể không hiệu quả. Thêm vào đó, thời gian trôi qua hoặc đổi mới công nghệ có thể đã chứng minh khái niệm này đã lỗi thời. Điều này có nghĩa là bạn nên thường xuyên đặt câu hỏi về hệ thống hoặc khái niệm truyền thống và xem liệu bạn có thể xây dựng thứ gì đó tốt hơn hay không.

Để tìm ra những điểm kém hiệu quả đó, bạn phải thực hiện một cách tiếp cận có hệ thống và khoa học, chia chúng thành nhiều phần nhỏ hơn để đi đến chân lý cơ bản. Sau đó, hãy xem liệu thời gian trôi qua hoặc sự phát minh ra công nghệ mới có khiến bất kỳ thiết bị nào trong số này trở nên lỗi thời hay không. Nếu vậy, có vẻ như bạn có cơ hội xây dựng một hệ thống mới hơn và tốt hơn.

Về cơ bản, cho dù mọi người có biết hay không, phần lớn những thay đổi về xã hội, kỹ thuật và kinh tế đã xảy ra do mọi người suy nghĩ với Nguyên tắc đầu tiên và thách thức truyền thống.

Kiến trúc không có dữ liệu (DBLess) là gì — và tại sao nó là tương lai

Trong video trên, Elon Musk giải thích cách ông xem xét các nguyên liệu thô của pin và có thể giảm giá thành của nó từ 700 đô la xuống còn 70 đô la.

Hãy lấy một ví dụ khác về nguyên tắc đầu tiên của tư duy vì nó dễ giải thích hơn:Xe chạy xăng so với xe điện.

Ô tô chạy xăng so với ô tô điện

Chúng ta đều biết rằng bạn có thể sử dụng pin điện để chạy ô tô.

Nhưng trong khi ô tô chạy xăng, không có pin, nó không được sử dụng để chạy ô tô. Nó sử dụng pin để khởi động động cơ, A / C, hệ thống âm thanh, đèn, cảm biến, khóa, v.v., nhưng không dùng để chạy xe. Thay vào đó, nó dựa vào động cơ đốt trong (ICE) để chạy xe.

Hóa ra, xe ICE hoạt động kém hiệu quả. Chỉ 16% đến 25% công suất được tạo ra thực sự đi vào các bánh xe. Mặt khác, xe điện cung cấp khoảng 90% năng lượng cho các bánh xe! Xe điện cũng có những lợi thế lớn về môi trường, chi phí sửa chữa, v.v.

Nếu bạn đang nhìn điều này từ góc độ Nguyên tắc đầu tiên, mặc dù hầu hết những chiếc xe hơi được chế tạo ngày nay đều là xe chạy xăng, nhưng sự thật cơ bản là chúng sử dụng một hệ thống không hiệu quả.

Bây giờ nếu bạn nhìn vào một chiếc ô tô điện, nó sẽ loại bỏ sự kém hiệu quả này để tạo ra một loại ô tô mới. Trong trường hợp này, nó chỉ đơn giản là loại bỏ động cơ phức tạp và kém hiệu quả và thay thế nó bằng một pin lớn và một động cơ để quay trực tiếp các bánh xe.

Kiến trúc không có dữ liệu (DBLess) là gì — và tại sao nó là tương lai

Vì vậy, bạn có thể thấy cách tư duy Nguyên tắc đầu tiên dẫn đến việc xác định sự kém hiệu quả và tạo ra một hệ thống mới hơn, tốt hơn.

Bây giờ hãy xem xét những ý tưởng này, nếu bạn thành lập một công ty ô tô mới, bạn sẽ chế tạo ô tô chạy bằng xăng hay ô tô điện?

Hãy chuyển bánh răng và chuyển sang thế giới cơ sở dữ liệu để xem liệu chúng ta có thể áp dụng tư duy Nguyên tắc đầu tiên tương tự cho lĩnh vực đó hay không.

Kiến trúc truyền thống so với kiến ​​trúc DBLess

Đầu tiên chúng ta hãy nhìn vào kiến ​​trúc truyền thống.

Kiến trúc không có dữ liệu (DBLess) là gì — và tại sao nó là tương lai

Trong kiến ​​trúc truyền thống, bạn có cơ sở dữ liệu chính (Postgres, MongoDB, v.v.) và cơ sở dữ liệu thứ cấp hoặc bộ nhớ cache (ví dụ:Redis hoặc Memcached). DB chính được sử dụng để lưu trữ tất cả dữ liệu và hỗ trợ các hoạt động CRUD. Bộ nhớ đệm DB được sử dụng để lưu vào bộ nhớ đệm, lưu trữ phiên, giới hạn tốc độ, lập danh sách IP cho phép, Pub / Sub, xếp hàng và nhiều thứ khác.

Nếu bạn nghĩ về điều này, ngay cả khi có lần truy cập vào bộ nhớ cache, chúng tôi cũng đang sử dụng DB phụ cho một phần của các hoạt động CRUD. Tuy nhiên, chúng tôi vẫn chưa hoàn toàn sử dụng nó như một cơ sở dữ liệu chính.

Điều này có nhắc bạn về vấn đề với xe chạy xăng không? Giống như việc chúng mang theo pin để cung cấp năng lượng cho nhiều thứ ngoại trừ việc di chuyển ô tô, các kiến ​​trúc truyền thống sử dụng những thứ như Redis cho mọi thứ ngoại trừ DB chính.

Bạn có thấy điểm giống nhau không?

Điều gì sẽ xảy ra nếu chúng ta sử dụng tư duy Nguyên tắc đầu tiên để làm những gì chiếc xe điện đã làm? Tương tự như cách EV loại bỏ engine, điều gì sẽ xảy ra nếu chúng ta loại bỏ cơ sở dữ liệu chính chậm và kém hiệu quả và chỉ cần sử dụng cache DB làm cơ sở dữ liệu chính?

Xin chào với kiến ​​trúc Databaseless (DBLess).

Kiến trúc không có dữ liệu (DBLess):

Trong kiến ​​trúc này, bạn loại bỏ DB chính, do đó có tên là DBLess. Thay vào đó, bạn sử dụng DB thứ cấp / bộ nhớ cache trước đây làm cơ sở dữ liệu chính mới.

Hãy tưởng tượng rằng chúng tôi bắt đầu sử dụng Redis hoặc các cơ sở dữ liệu bộ nhớ đệm tương tự khác làm cơ sở dữ liệu chính và loại bỏ hoàn toàn DB chính (chẳng hạn như Postgres, Mysql, MongoDB, v.v.).

Kiến trúc không có dữ liệu (DBLess) là gì — và tại sao nó là tương lai

Lưu ý quan trọng: Đây chỉ là một cuộc thảo luận về kiến ​​trúc. Kiến trúc DBLess không phải là kiến ​​trúc độc quyền chỉ giới hạn ở Redis hoặc Redis Enterprise và nó sẽ hoạt động với bất kỳ hệ thống nào giống Redis. Ngoài ra, hãy nhớ rằng Redis là một dự án OSS, vì vậy bạn có thể tự xây dựng dự án này hoặc trên bất kỳ nhà cung cấp đám mây nào khác do Redis lưu trữ.

Có ai đang sử dụng kiến ​​trúc này không?

Vâng chắc chắn. Như bạn có thể tưởng tượng, chúng tôi làm việc với hàng nghìn khách hàng hàng ngày. Và mặc dù Redis vẫn chủ yếu được sử dụng như một cơ sở dữ liệu thứ cấp, chúng ta đã bắt đầu thấy kiến ​​trúc DBLess mới này xuất hiện trong vài năm qua. Nó bắt đầu có thêm động lực khi bản thân Redis trở nên giàu tính năng hơn, mạnh mẽ hơn và khi nhiều người tìm thấy thành công hơn. Nhiều người thậm chí không phải là khách hàng của chúng tôi, như Chỉ số yêu cầu, đã xây dựng toàn bộ công ty khởi nghiệp của họ trên kiến ​​trúc này và thấy nó cực kỳ thành công.

Kiến trúc không có dữ liệu (DBLess) là gì — và tại sao nó là tương lai

Giờ thì bạn đã biết điều đó là có thật, hãy xem điều gì khiến điều này trở nên khả thi.

Về mặt kỹ thuật, điều này so với DB chính truyền thống như thế nào?

Hãy sử dụng Redis Enterprise làm ví dụ và so sánh nó với các DB chính truyền thống.

Kiến trúc không có dữ liệu (DBLess) là gì — và tại sao nó là tương lai

Như bạn có thể thấy, câu trả lời ngắn gọn là nó thực sự tốt và trên thực tế, thậm chí có thể tốt hơn một số DB chính truyền thống.

Xin nhắc lại, bạn có thể sử dụng kiến ​​trúc này bằng cách sử dụng Redis OSS hoặc các đối thủ cạnh tranh khác của Redis. Bạn chỉ cần đưa ra một bảng so sánh tương tự để xem nó hoạt động tốt như thế nào.

Nhưng, Redis thực sự có thể làm được điều này không? Tôi nghĩ đó chỉ là một bộ nhớ cache?

Bạn nói đúng. Nó bắt đầu như một kho lưu trữ bộ nhớ cache khoảng một thập kỷ trước và vẫn tuyệt vời cho mục đích đó.

Tuy nhiên, Redis và Redis Enterprise đã mở rộng đáng kể trong những năm qua bằng cách kết hợp hầu như tất cả các tính năng của DB truyền thống — và bằng cách có một hệ sinh thái mô-đun chạy nguyên bản với Redis cốt lõi.

Hãy sử dụng RedisJSON (nhanh hơn 10 lần so với người dẫn đầu thị trường). Bạn có thể sử dụng nó và về cơ bản có cơ sở dữ liệu giống như tài liệu thời gian thực hoặc sử dụng mô-đun RediSearch (nhanh hơn gấp 4 lần đến 100 lần) và triển khai các tìm kiếm toàn văn bản trong thời gian thực như Elastic Search hoặc Algolia.

Và bạn có thể sử dụng bất kỳ mô-đun nào trong số này như một phần của Redis OSS và tự lưu trữ nó.

Đây có thực sự là tương lai?

Chúng tôi tin tưởng mạnh mẽ kiến ​​trúc này là tương lai theo nghĩa xe điện là tương lai. Và mặc dù ô tô điện chỉ chiếm chưa đến 1% tổng số ô tô, chúng vẫn là tương lai. Chúng tôi nghĩ rằng đây chỉ là một sự phát triển tự nhiên của công nghệ. Chứng kiến ​​sự thành công của nhiều khách hàng, chúng tôi nghĩ rằng càng nhiều người tìm hiểu về nó, thì càng có nhiều người thử và áp dụng điều này.

Tên gì?

Nó được gọi là DBLess vì chúng tôi đang loại bỏ DB chính và chúng tôi nghĩ rằng đó là một cái tên vui nhộn và kỳ quặc dọc theo các dòng “không trạng thái”, “không máy chủ”, “NoSQL” và “Không có phần mềm”.

Làm thế nào để bắt đầu?

Nếu bạn là một trong số hàng trăm nghìn người dùng Redis, bạn thật may mắn — bạn có thể thực hiện một bản mô tả khái niệm nhanh chóng ngay hôm nay! Chúng tôi không yêu cầu bạn thêm một cái gì đó mới mà thay vào đó hãy loại bỏ một cái gì đó không hiệu quả.

Và đây là cách thực hiện.

Nếu bạn đang xây dựng một hệ thống mới hoặc một tính năng mới, thì thật đơn giản chỉ cần bắt đầu sử dụng kiến ​​trúc này — hoặc ít nhất là thực hiện Proof-of-Concept và xem nó có phù hợp với bạn không.

Nếu bạn đã có DB chính, thì hãy làm những gì nhiều khách hàng của chúng tôi làm và sử dụng phương pháp kết hợp. Họ tiếp tục sử dụng kiến ​​trúc truyền thống nhưng chuyển các phần của sản phẩm sang kiến ​​trúc mới hơn, chẳng hạn như những nơi mà họ đã dựa nhiều vào Redis hoặc các tính năng mới hơn. Và từ từ nhưng chắc chắn, chúng sẽ di chuyển tất cả các tính năng cho đến khi chúng được di chuyển hoàn toàn.

Tóm tắt:Hãy là người suy nghĩ về Nguyên tắc đầu tiên

Chúng tôi yêu cầu bạn trở thành một nhà tư tưởng Nguyên tắc đầu tiên. Chỉ vì thứ gì đó được sử dụng theo cách truyền thống, điều đó không có nghĩa là nó hoàn hảo và bạn nên làm theo nó một cách mù quáng. Chúng tôi yêu cầu bạn đặt câu hỏi về tư duy truyền thống, xem xét nó một cách nghiêm túc và thử các lựa chọn thay thế. Và khi bạn làm vậy, bạn có thể chỉ phát minh ra thứ gì đó hữu ích cho bản thân và những người khác.

Kiến trúc DBLess cung cấp một giải pháp thay thế cho tư duy truyền thống. Thay vì tự hỏi liệu nó có hoạt động hay không, hãy thử Proof-of-Concept. Nó có thể làm bạn ngạc nhiên!

Tài liệu tham khảo

  1. Elon Musk về những nguyên tắc đầu tiên