2011-06-21 1 views
8

Tôi đã lập trình với php và mySql trong một thời gian và gần đây đã quyết định rằng tôi muốn thử nosql. Tôi thực sự đánh giá cao nếu một số bạn có kinh nghiệm có thể cho tôi biết:Khi nào sử dụng NoSql, và cái nào?

  • Khi nào là thời điểm tốt để chuyển, làm cách nào để biết nosql là dành cho tôi?
  • Bạn muốn giới thiệu phần mềm nosql nào?

Cảm ơn

+7

Rất chủ quan, IMHO. – driis

+4

Rất xây dựng, IMHO. – GorillaApe

Trả lời

3

Nó depenends trên nhu cầu ứng dụng của bạn .. Có rất nhiều lựa chọn.

Bạn có thể sử dụng một tài liệu hướng như mongodb, một "đại gia" giá trị khóa như Redis hoặc có thể là một đồ thị theo định hướng như neo4j

Bài viết này rất hữu ích http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html

+0

Một trang web khác có cùng trang - http://highscalability.com/blog/2011/6/20/35-use-cases-for-choosing-your-next-nosql-database.html –

2

này gần đây blog post trong cao Khả năng mở rộng khá nhiều câu trả lời câu hỏi của bạn liên quan đến khi sử dụng NoSQL.

Bản thân tôi luôn đi MySQL cho đến khi nó không thành công tôi và sau đó chọn công cụ phù hợp cho công việc, một số các cơ sở dữ liệu không quan hệ tôi đã làm việc với là:

  • Riak: một bản sao dynamo đó là hữu ích khi bạn cần truy cập hồ sơ nhanh chóng nhưng bạn có quá nhiều bản ghi để lưu trên một máy. Ví dụ: hệ thống giới thiệu cho người dùng trong ứng dụng web, bạn muốn truy cập dữ liệu trong vài phần nghìn giây nhưng bạn có 200 triệu người dùng.
  • MongoDB: cơ sở dữ liệu dựa trên tài liệu, khi tôi cần tốc độ nhưng có ứng dụng ghi chuyên sâu (tỷ lệ đọc/ghi gần 1: 1) dữ liệu rất thoáng qua nên tôi không quan tâm đến vấn đề độ bền
1

thời gian tốt nhất để chuyển đổi là khi bạn:

  • Bắt đầu làm việc trên một dự án mới và bạn đưa ra quyết định kiến ​​trúc đầu tiên của bạn. Việc chuyển một ứng dụng hiện có sang một cơ sở dữ liệu khác có thể gây ra nhiều đau đầu.
  • Lượt một bức tường gạch ... hoặc tốt hơn trước khi bạn nhìn thấy một đến :) Lý do chính thường thiếu hiệu suất hoặc khả năng mở rộng.
  • Cần một tính năng bị thiếu (ví dụ: cấu trúc hình cầu phức tạp, các giao lộ giống như đồ thị, v.v.).

Tôi muốn giới thiệu rất nhiều trong số họ, nhưng mỗi người trong số họ có điểm ngọt riêng của họ, nơi họ tỏa sáng và các phần khác mà họ thiếu tính năng. Cách duy nhất để chọn đúng (các) công cụ là làm quen với một vài công cụ.

  • nhà phát triển web thường tìm hiểu các cửa hàng giá trị khóa (memcached, redis) đầu tiên khi họ có thể sửa chữa nhiều vấn đề hiệu suất (mà còn thêm một số phức tạp cho ứng dụng của bạn ...).
  • Có cơ sở dữ liệu (lược đồ ít) như MongoDB hoặc CouchDB có thể nâng cao đáng kể hiệu suất của bạn nếu mô hình dữ liệu của bạn thường thay đổi.
  • Đối với các bản đồ truyền tải, có NeoJ.
  • Đối với "dữ liệu lớn", Hadoop và các dự án liên quan của nó.
  • Và danh sách đi và về ...
7

Khi nó là một thời điểm tốt để chuyển đổi?

Nó thực sự phụ thuộc vào dự án cụ thể. Nhưng nói chung tôi thấy rằng tôi có thể sử dụng nosql cho 95% các ứng dụng web. Tôi vẫn sẽ sử dụng sql tốt cũ cho các hệ thống cần đảm bảo ACID (ví dụ, các hệ thống hoạt động với tiền 'thực').

Làm cách nào để biết nosql là dành cho tôi?

Đó là vì bạn, cho bạn, hãy tin tôi. ;)

Bạn chỉ cần thử một cái gì đó từ thế giới nosql, đọc một số bài viết hiện có và bạn sẽ thấy tất cả những lợi ích và vấn đề.

Bạn muốn giới thiệu phần mềm nosql nào?

Cá nhân tôi khuyên bạn nên bắt đầu từ mongodb, bởi vì nó thực sự đơn giản. Để trở thành một chuyên gia trong sql mất nhiều năm, để trở thành một chuyên gia trong mongodb cần một tháng hoặc lâu hơn.

Tôi đề nghị bạn dành một giờ để đọc "The little mongodb book" và cố viết ứng dụng thử nghiệm đầu tiên của bạn bắt đầu từ ngày mai.

Không ai ở đây sẽ nói rằng bạn cần sử dụng cơ sở dữ liệu này hoặc cơ sở dữ liệu này. Cơ sở dữ liệu nào sử dụng phụ thuộc vào dự án và yêu cầu.

+0

+1 cho câu trả lời chi tiết. 3 phản đối tho :: Re ACID - một số NoSQL hỗ trợ quá, xem RavenDB ví dụ (http://ayende.com/blog/23553/yoursquo-ll-pry-transactions-from-my-dead-cold-broken-hands). Chọn lại NoSQL - xem http://nosql-database.org. Giới thiệu lại MongoDB - trước tiên bạn nên chọn TYPE của NoSQL để sử dụng, sau đó chọn một sản phẩm từ loại đó. Không có lý do thực sự để giới thiệu một DB khác mà không có sự hiểu biết thực sự của BL và cơ sở hạ tầng. – synhershko

+0

@synhershko: Tôi sử dụng ravendb cũng thực sự, tôi biết về các giao dịch ở đó;). Và tôi đồng ý với bạn. –