Tôi sẽ xây dựng dự án thực tế đầu tiên của mình trong Rails bao gồm một ứng dụng web gồm 3 phần chính:
- Phần tĩnh không có cơ sở dữ liệu được sử dụng
- Phần đăng ký người dùng sẽ yêu cầu cơ sở dữ liệu và tôi có thể sử dụng MySQL vì mỗi hàng của người dùng sẽ có cùng các trường
- "Ứng dụng" nơi người dùng sẽ có thể tạo, sắp xếp, chỉnh sửa ... các mục trong bộ sưu tập và chia sẻ chúng với những người dùng khác
Sẽ có một số loại mặt hàng và mỗi loại sẽ có các tùy chọn khác nhau, ví dụ tôi có thể có các mục "video" với các tùy chọn sau:
- Tôi
- tên người dùng
- bộ sưu tập
- tiêu đề
- nền tảng (nếu được nhúng)
- url (nếu được nhúng)
- tên tệp (nếu được lưu trữ trên ứng dụng của tôi)
- kích thước tệp (id được lưu trữ trên ứng dụng của tôi)
và các mục "bản đồ":
- Tôi
- tên người dùng
- bộ sưu tập
- tiêu đề
- nền tảng (google maps, bing maps ...)
- vị trí
- url
- kích thước bản đồ
Khi bạn có thể sử dụng MySQL cho các mục, tính linh hoạt của MongoDB có thể hữu ích vì mỗi mục có thể cần các tùy chọn khác nhau sau đó một mục khác
Cho đến nay tôi luôn sử dụng PHP và MySQL (luôn được lưu trữ chia sẻ cho các dự án nhỏ) và khả năng mở rộng là một từ hoàn toàn mới đối với tôi.
Tôi có thời gian để học nhưng tôi muốn có thể làm một cái gì đó cụ thể trong khoảng 1 tháng.
Tôi đã đọc rất nhiều về MongoDB và NoQuery so với RDMS và MySQL và sau khi dùng thử, tôi phải nói rằng tôi thích cách MongoDB hoạt động: không có bảng, không có hàng và tài liệu JSON như vậy:
- Trong tình huống của tôi, bạn sẽ làm gì? tại sao?
- Về khả năng mở rộng có thể có vấn đề với MongoDB? nếu có khi (về kích thước DB) và những vấn đề này có thể làm chậm ứng dụng của tôi đáng kể không?
Chỉnh sửa: ứng dụng sẽ hoạt động như thế nào
Vì nhiều người hỏi đây là cách tôi muốn ứng dụng hoạt động:
- Một người dùng đăng ký
- Anh ấy đã đăng nhập
- Anh ấy tạo ra bộ sưu tập đầu tiên của mình, nơi anh ấy có thể tạo ra các vật phẩm vô hạn
- Các mục có nhiều loại và mỗi loại cần lưu dữ liệu khác nhau trong cơ sở dữ liệu và loại mục có thể được thêm hoặc sửa đổi
Người dùng có thể tạo các bộ sưu tập và vật phẩm khác bên trong nó.
Vì vậy, chúng tôi có CRUD cho các bộ sưu tập và vật phẩm bên trong chúng và mỗi bộ sưu tập / vật phẩm được giới thiệu đến một người dùng cụ thể
Vấn đề chính với MySQL là nó không có lược đồ linh hoạt, có cách nào để giải quyết vấn đề này (một cách giải quyết?)?
Suy nghĩ về NoQuery, nghi ngờ duy nhất tôi có là về việc tham gia, ví dụ như được cung cấp một phần chọn lọc nào đó tôi muốn truy xuất dữ liệu liên quan đến Người dùng có trường id = user_id trong bộ sưu tập
EDIT: Ý tưởng để tiếp tục sử dụng MySQL
Tạo một trường trong bảng "mục" với các cài đặt tùy chọn, mỗi cài đặt chia cho một | hoặc một biểu tượng khác.
Sau đó, tôi sẽ lưu ở đâu đó một cấu trúc của từng mục cài đặt tùy chọn, ví dụ loại mục "ghi chú" cần hai cài đặt tùy chọn "màu" và "lạ_số", khi tôi nhận được dữ liệu từ MySQL, tôi sẽ chia trường cho các cài đặt tùy chọn thành một mảng biết rằng mục đầu tiên trong mảng là cho "màu" và vv.
Bạn nghĩ sao? Có vấn đề với giải pháp đó? bạn có ý tưởng nào khác không?