Câu trả lời là có, đó là một lựa chọn hợp lệ nhưng không, có lẽ đó không phải là một ý tưởng tuyệt vời .
Có hai vấn đề lớn với SQL mà NoQuery cố gắng giải quyết, khi nói đến các trò chơi.
Đầu tiên là độ trễ, hoặc độ trễ. Ở một khía cạnh nào đó, cơ sở dữ liệu SQL rất nhanh, xử lý hàng ngàn giao dịch trở lên trong một phần mười giây. Theo một nghĩa khác, chúng cực kỳ chậm, bởi vì việc xử lý chỉ một vài giao dịch có thể mất cùng thời gian đó. Đối với hầu hết các cơ sở dữ liệu sử dụng, điều này không thành vấn đề, nhưng các trò chơi có thành phần thời gian thực, do đó, không chỉ là về số lượng giao dịch bạn có thể thực hiện mỗi giây, mà còn về thời gian trung bình để đáp ứng với giao dịch cơ sở dữ liệu.
Độ trễ này là một vấn đề lớn đối với các trò chơi thời gian thực. Nhiều nhà phát triển cần cơ sở dữ liệu lớn (thường là MMO) xây dựng một lớp bộ đệm nằm giữa cơ sở dữ liệu và máy chủ trò chơi để tránh các quầy hàng này, sau đó xả bộ đệm theo định kỳ. Vấn đề? Bạn chỉ cần đưa ra những lý do chính để sử dụng cơ sở dữ liệu - tính nguyên tử, tính nhất quán, sự cô lập và độ bền .
Nhưng vấn đề đó không áp dụng cho các trò chơi web.Bạn đã có một kết nối có độ trễ cao giữa người chơi và trò chơi, do đó bạn cũng có thể nhận được thông lượng SQL cung cấp, cũng như các lợi ích của phần mềm nổi tiếng, trưởng thành.
Tuy nhiên, vấn đề thứ hai áp dụng cho bạn và đó là sự không phù hợp trở kháng quan hệ đối tượng . Trò chơi đối phó với các đối tượng, cơ sở dữ liệu đối phó với các hàng. Nếu bạn may mắn, một đối tượng có thể được tạo thành một hàng chỉ bằng cách liệt kê các trường của nó, nhưng hầu hết các đối tượng thời gian là phân cấp và bạn phải làm phẳng chúng theo một cách nào đó để đưa chúng vào hàng.
Các cơ sở dữ liệu dựa trên tài liệu, như CouchDB và MongoDB, giải quyết vấn đề này bằng cách quảng cáo tài liệu lên đối tượng cấp cao nhất, thay vì hàng ("tài liệu" trong trường hợp này là từ đồng nghĩa với "đối tượng"). Nhưng bằng cách này, họ mất nhiều lợi ích của cơ sở dữ liệu SQL. Thông lượng thấp hơn nhiều, và các thuật toán khóa trở nên phức tạp hơn nhiều.
Tin tốt là, đã có rất nhiều ánh xạ quan hệ đối tượng (ORM) công cụ có sẵn cho bất kỳ ngôn ngữ nào bạn đang sử dụng. Chúng cho phép bạn dịch giữa các đối tượng trong bộ nhớ và các hàng trong cơ sở dữ liệu khá trong suốt. Các công cụ này thường không phù hợp với các trò chơi thời gian thực quy mô lớn, bởi vì chúng có thể trình bày các khía cạnh hiệu suất tồi tệ nhất của cơ sở dữ liệu SQL và NoQuery. Nhưng thật tốt cho một trò chơi trên web - tệ nhất là khi bạn gặp vấn đề về hiệu suất, bạn có thể quay lại thực hiện các giao dịch theo cách lỗi thời. Vấn đề độ trễ không làm tổn thương bạn và thông lượng tăng giúp bạn.
Cuối cùng, để tin vào một điểm tôi đã thực hiện ở nơi khác : Đây không phải là về dữ liệu trò chơi tĩnh. Tôi không nói về các mô tả vật phẩm của bạn hoặc thiệt hại hoặc vũ khí của bạn hoặc bất cứ điều gì ở đây. Ý tôi là dữ liệu trò chơi thực sự, có thể thay đổi, như những gì trong kho của người chơi hoặc số liệu thống kê của họ. Tất cả bạn cần cho dữ liệu tĩnh là một kho lưu trữ dữ liệu. Có thể nó chỉ ra rằng điều dễ nhất để làm là sử dụng cùng một cơ sở dữ liệu như kho lưu trữ dữ liệu vì bạn có một ORM tuyệt vời; có lẽ bạn sẽ chỉ cần hệ thống tập tin. Đó là hai vấn đề riêng biệt và một câu trả lời không cần (và có lẽ sẽ không) phù hợp với cả hai trường hợp.