Hướng dẫn should i use mongodb or mysql with nodejs? - tôi có nên sử dụng mongodb hoặc mysql với nodejs không?

Câu trả lời thực sự phụ thuộc vào cách bạn lên kế hoạch kiến ​​trúc giải pháp của mình: một dịch vụ nguyên khối hoặc microservice và cách bạn có kế hoạch truy vấn dữ liệu.

Cả SQL và NoQuery đều có thể là một lựa chọn tốt, tùy thuộc vào trường hợp sử dụng của bạn là gì.

Đối với một số nền tảng, tôi hiện đang làm việc cho một công ty tư nhân có lợi nhuận lớn có giá trị hơn 300 triệu đô la và chúng tôi sử dụng SQL (MSSQL, MySQL, MariadB) và NoQ liên quan đến.

Trong 4 năm qua, chúng tôi đã tham gia vào một cam kết để viết lại mã di sản 15 năm tuổi để tuân theo các thực tiễn tốt nhất hiện tại. Điều này có nghĩa là từ từ thay thế các phần nhỏ của mảnh mã nguyên khối di sản bằng các mảnh bằng microservice (trong NodeJs và Golang).

Tôi đã giành chiến thắng trong những ưu và nhược điểm của microservice và tại sao quyết định được đưa ra. Chúng tôi đã xây dựng hơn 100 người trong số họ và họ đã cho phép chúng tôi di chuyển/xây dựng rất nhanh.

Một trong những nguyên tắc của kiến ​​trúc microservice là phân cấp và điều đó quan trọng khi chúng ta nghĩ về thiết kế cơ sở dữ liệu. Microservice không được chia sẻ cơ sở dữ liệu với nhau - mỗi microservice có cơ sở dữ liệu riêng, dữ liệu riêng. Nếu Microservice cần dữ liệu, nó có dữ liệu được gửi cho nó hoặc yêu cầu dữ liệu từ một microservice khác.

Chúng tôi đã tìm thấy cấu trúc/lược đồ cơ sở dữ liệu microservice của chúng tôi rất đơn giản: một bảng/bộ sưu tập và không có mối quan hệ nào cho mỗi microservice với cơ sở dữ liệu.

Chúng tôi đã tìm thấy một nhu cầu về MySQL (tuy nhiên) trong kiến ​​trúc mới của chúng tôi khi chúng tôi đã tìm thấy MongoDB, Redis, DynamoDB và Elaticsearch để có tính đáng tin cậy và hiệu suất cao. Hàng triệu hồ sơ trong mỗi cơ sở dữ liệu và hàng trăm ngàn yêu cầu mỗi phút. Mã di sản của chúng tôi vẫn phụ thuộc rất nhiều vào SQL với một số quản trị viên cơ sở dữ liệu toàn thời gian.

Chúng tôi sẽ loại trừ MySQL vì nó đã chứng minh rằng chính nó rất đáng tin cậy và hiệu suất trong lịch sử lâu dài của nó. Thư viện máy khách MySQL mạnh mẽ và được thử nghiệm chiến đấu. AWS RDS Aurora cũng rất hiệu suất.

Có những người có sở thích mạnh mẽ cho một hương vị SQL hơn một hương vị khác. Tôi đã sử dụng một số hương vị khác nhau (Postgres, MySQL, SQLite, MSSQL) và tất cả chúng vẫn tồn tại vì lý do này hay lý do khác. Tôi thích MySQL hơn vì tôi đã không gặp phải bất kỳ vấn đề nào với nó sau khi sử dụng nó trong hơn 22 năm.

Chúng tôi đã phát hiện ra rằng cơ sở dữ liệu sơ đồ, như MongoDB, dễ triển khai dễ dàng hơn nhiều và chúng tôi có thể vận chuyển mã nhanh hơn SQL (và ElaticSearch). Chúng tôi đã thấy bất kỳ lợi ích nào mà SQL sẽ cung cấp cho NoQuery (chưa). Nếu một microservice giữ dữ liệu cho nhiều thực thể, SQL có thể là một tùy chọn nhưng trong các dịch vụ vi mô của chúng tôi, đây không phải là trường hợp.

Elaticsearch có tải nhiều sức mạnh hơn SQL, trong đó các điều khoản của các điều khoản và chúng tôi sẽ không bao giờ xem xét MySQL để truy vấn/tìm kiếm.

Một quan sát mà tôi đã thực hiện, hầu hết các nhà phát triển cấp trung và trung cấp mà tôi đã gặp đã tiếp xúc với NoQuery nhưng dường như không có nhà phát triển nào có bất kỳ tiếp xúc với SQL.

Liên quan đến đối số lược đồ so với sơ đồ, trong đó chúng tôi sử dụng MongoDB, chúng tôi thường thực thi một lược đồ trong mã nguồn của chúng tôi (rõ ràng không phải trên cơ sở dữ liệu, không giống như SQL thông thường), do đó, nó không hoàn toàn là sơ đồ khi chúng tôi xem xét toàn bộ nó.

Lưu ý cá nhân, tôi rất muốn xem nhị phân SQL JSON để so sánh điều đó với MongoDB (hoặc CouchDB) và xem ưu và nhược điểm.

Chúng tôi có thể thực sự phàn nàn về bất kỳ cơ sở dữ liệu nào mà chúng tôi sử dụng. Nó thực sự đi xuống để chọn đúng cho công việc và viết mã/truy vấn thử nghiệm tải tốt. Chúng tôi ban đầu đã đánh một bức tường hiệu suất với MongoDB cho đến khi chúng tôi nâng cấp lên động cơ Tiger có dây - đã ổn kể từ đó.

Mặc dù vậy, tôi đã rất vui mừng với hệ thống dây điện để phân cụm MongoDB vì tôi cảm thấy giống như một suy nghĩ sau khi suy nghĩ lớn so với phân cụm MySQL /Postgres. Khi chúng tôi sử dụng MongoDB DaAs, thì đó là vấn đề khác của người khác !!

Nếu bạn viết một cơ sở mã nguyên khối, có lẽ SQL là quyết định đúng đắn cho bạn.

Với MongoDB, bạn chỉ có thể lưu trữ các đối tượng JSON và truy xuất chúng được hình thành đầy đủ, vì vậy bạn không thực sự cần một lớp ORM và bạn dành ít thời gian CPU hơn để dịch dữ liệu của mình qua lại. Các nhà phát triển đằng sau MongoDB cũng đã làm cho cơ sở dữ liệu theo chiều ngang được ưu tiên cao hơn và cho phép bạn chạy mã JavaScript tùy ý để xử lý trước dữ liệu ở phía DB (cho phép lọc dữ liệu kiểu MAP-Reduce).

Nhưng bạn mất một số cho những lợi ích này: bạn không thể tham gia hồ sơ. Trên thực tế, cấu trúc JSON mà bạn lưu trữ chỉ có thể được thực hiện thông qua các lần nối trong SQL, nhưng trong MongoDB, bạn chỉ có một cấu trúc đó cho dữ liệu của mình, trong khi trong SQL, bạn có thể truy vấn khác nhau và nhận dữ liệu của mình theo cách khác dễ dàng hơn nhiều, vì vậy nếu bạn Cần phải thực hiện rất nhiều phân tích trên cơ sở dữ liệu của bạn, MongoDB sẽ làm cho điều đó khó khăn hơn.

Ngôn ngữ truy vấn trong MongoDB là "khó khăn hơn", theo tôi, so với SQL, một phần vì nó ít quen thuộc hơn và một phần vì các tính năng truy vấn "cảm thấy" được kết hợp với nhau, một phần để làm cho nó hợp lệ JSON và một phần vì có một phần Một vài cách để làm điều tương tự, và một số cách cũ không hữu ích hoặc thường xuyên được định dạng như những cách khác. Và có sự phức tạp được thêm vào của các loại mảng và đối tượng phụ so với thiết kế dựa trên hàng đơn giản của SQL, do đó cú pháp phải có thể xử lý truy vấn cho các mảng có chứa một số giá trị bạn đã xác định, chứa tất cả các giá trị bạn đã xác định, Chỉ chứa các giá trị bạn đã xác định và không chứa giá trị nào bạn xác định. Sự khác biệt tương tự áp dụng cho các khóa đối tượng và giá trị của chúng, và điều này làm cho cú pháp truy vấn khó nắm bắt hơn. . Để quay lại hay không, nhưng nó phải chạy trên mọi bản ghi trong cơ sở dữ liệu, không có chỉ mục nào có thể được sử dụng.)

Vì vậy, nó phụ thuộc vào những gì bạn muốn làm, nhưng vì bạn nói rằng nó dành cho bản sao Google Docs, có lẽ bạn không quan tâm đến bất kỳ đại diện nào ngoài việc đại diện tài liệu, và có lẽ bạn sẽ truy vấn dựa trên tài liệu ID, tên tài liệu hoặc ID/tên của chủ sở hữu, không có gì quá phức tạp trong truy vấn.

Sau đó, tôi nói rằng việc có thể lấy biểu diễn JSON của tài liệu mà người dùng của bạn đang chỉnh sửa và chỉ cần ném nó vào cơ sở dữ liệu và tự động lập chỉ mục các trường quan trọng này, đáng giá để học một cơ sở dữ liệu mới.

MongoDB có tốt cho nút JS không?

Trình điều khiển MongoDB Node.js thực hiện bằng cách sử dụng MongoDB với Node.js một trải nghiệm liền mạch.Trình điều khiển tự động ánh xạ các đối tượng JavaScript vào các tài liệu BSON, có nghĩa là các nhà phát triển có thể dễ dàng làm việc với dữ liệu của họ. js driver makes using MongoDB with Node. js a seamless experience. The driver automatically maps JavaScript objects to BSON documents, meaning that developers can easily work with their data.

Có tốt không khi sử dụng MySQL với Node JS?

JS được kết hợp với MongoDB và các cơ sở dữ liệu NoQuery khác, nhưng Node.js cũng hoạt động tốt với các cơ sở dữ liệu quan hệ như MySQL.Nếu bạn muốn viết một microservice mới với nút.JS cho một cơ sở dữ liệu hiện có, rất có khả năng bạn sẽ sử dụng MySQL, một trong những cơ sở dữ liệu nguồn mở phổ biến nhất thế giới.Node. js performs well with relational databases like MySQL, too. If you want to write a new microservice with Node. js for an existing database, it's highly likely that you'll use MySQL, one of the world's most popular open-source databases.

Cơ sở dữ liệu nào là tốt nhất với Node JS?

"Nút.JS chỉ có thể được sử dụng với MongoDB (là cơ sở dữ liệu NoQuery phổ biến nhất).MongoDB (which is the most popular NoSQL database).”

Chúng ta có thể sử dụng MySQL và MongoDB cùng nhau trong Node JS không?

Vâng, có thể 100%, họ sử dụng các cổng hoàn toàn khác nhau và không quan tâm đến nhau.Máy chủ không phải là máy chủ 'NodeJS', đó là máy chủ đang chạy NodeJS và bạn có thể cài đặt bất cứ thứ gì bạn muốn trên máy chủ., they use completely different ports and do not care about each other. The server isn't a 'nodejs' server, it's a server that's running nodejs, and you can install anything you want on the server.