2008-12-10 25 views
7

Tôi đã đọc một số hướng dẫn về cách bắt đầu sử dụng Rails 2.0.Rails 2.0: Tại sao không sử dụng sqlite3?

(Time out: thiên tài tên trang web ý tưởng hình thành từ một typo Tôi chỉ cần thực hiện: "tutoRAILS". Xin lỗi, trở lại câu hỏi của tôi)

Trong hầu hết các hướng dẫn Tôi đã đọc, nó có vẻ khuyến khích sử dụng MySQL thay vì sqlite3. Có lý do nào cho điều này, như, hiệu suất khôn ngoan hay bất cứ điều gì? Tôi chỉ đang thử nghiệm Rails trên máy tính của tôi bằng cách sử dụng InstantRails tại thời điểm này, và họ đang tốt đẹp, đủ để bao gồm MySQL trong thiết lập của họ, nhưng tôi đã làm cho các ứng dụng thử nghiệm của tôi bằng cách sử dụng sqlite3. Tôi có thiếu một số caveat lớn của sqlite3, hoặc là điều này chỉ là một sở thích chung mà những người khác có cho MySQL?

Trả lời

11

SQLite là một công cụ tốt, nhưng nó vẫn là một động cơ kiểu trong quá trình (hoặc máy tính để bàn). Trong các công cụ xử lý có những điểm yếu cố hữu về mặt đồng thời làm cho chúng trở thành sự lựa chọn cơ bản về các công cụ dựa trên máy chủ như MySQL cho các trang web hoặc các tình huống khác với khả năng truy cập ghi đồng thời.

Xem trang này trên trang web SQLite:
http://www.sqlite.org/whentouse.html

SQLite thường sẽ làm việc tuyệt vời như cơ sở dữ liệu cho thấp đến các trang web giao thông vừa

nếu ... bạn đang nghĩ đến việc tách thành phần cơ sở dữ liệu ra khỏi một máy riêng biệt, thì bạn chắc chắn nên hãy xem xét sử dụng một cơ sở dữ liệu máy khách/máy chủ cấp doanh nghiệp thay vì SQLite.

+3

Họ cũng nói: 'bất kỳ trang web nào nhận được ít hơn 100 nghìn lượt truy cập/ngày sẽ hoạt động tốt với SQLite. Con số 100 nghìn lượt truy cập/ngày là một ước tính thận trọng, không phải là giới hạn trên cứng. SQLite đã được chứng minh là hoạt động với 10 lần lưu lượng truy cập đó '. Điều đó nói rằng SQlite là tốt cho 95% các trang web internet. – Niteriter

1

Tôi nghĩ rằng chủ yếu là vấn đề giữ mức ma sát thấp trên hướng dẫn. Nếu bạn là một newby, tôi sẽ khuyên bạn nên MySql chỉ vì nó sẽ được dễ dàng hơn để làm các hướng dẫn. sqlite là một giải pháp máy tính để bàn tốt nếu không.

+0

Cấp cho tôi không sử dụng Rails, nhưng cá nhân tôi đã tìm thấy SQLite dễ sử dụng hơn MySQL nhiều –

4

SQLite là tuyệt vời, nhưng nó có vấn đề hiệu suất với nhiều độc giả đồng thời và nhà văn.

Giống như Joel được trích dẫn, nếu trang web của bạn có lưu lượng truy cập thấp thì điều này hiếm khi là vấn đề, nhưng trên hoạt động trung bình, đôi khi tôi nhận được các DB bị khóa (và các truy vấn bị treo). Trong trường hợp này, DB có hỗ trợ tốt hơn cho nhiều người dùng đồng thời tốt hơn.

Cá nhân, nếu tôi sử dụng một lớp DB-thuyết bất khả tri để truy cập vào DB thì thật dễ dàng để chuyển đổi từ một sang khác, vì vậy rất dễ dàng để bắt đầu với SQLite và di chuyển đến một khác khi cần thiết.

3

Tôi luôn bắt đầu với SQLite. Nếu tôi cần phải thử nghiệm một dự án Rails, tôi có thể hoạt động và không có thời gian. Xây dựng một số giàn giáo, chạy di chuyển của tôi, viết một số xét nghiệm và tôi đi đến các cuộc đua.

Tuy nhiên, nếu và khi dự án đến điểm mà bạn sẽ triển khai, tôi sẽ đề xuất MySQL hoặc PostgreSQL để có hiệu suất tốt hơn.

SQLite cũng có lợi ích cho các ứng dụng nhúng nhỏ hoặc nếu bạn không có phí để chạy cơ sở dữ liệu cho một công cụ chỉ có một số người sẽ sử dụng.

0

Lưu ý rằng Sqlite là công cụ mặc định cho khung công tác Camping.Có ý nghĩa vì cả hai đều nhằm mục đích nhỏ và nhanh chóng, không lớn và enterprisey

2

Kể từ Rails 2.0, sqlite3 cơ sở dữ liệu mặc định, do đó chắc chắn không phải là một sự thiên vị chống lại nó. Tuy nhiên, nhiều hướng dẫn Rails có trước Rails 2.0, khi cơ sở dữ liệu mặc định là MySQL.

Như nhiều người khác đã đề cập, sqlite3 là một cơ sở dữ liệu tốt để nhanh chóng và dễ dàng nhận được một ứng dụng và chạy. Đối với môi trường phát triển Rails của bạn, nó có chân - nó sẽ có khả năng hoạt động tốt, ngay cả khi ứng dụng của bạn trở nên phức tạp. Đối với môi trường kiểm tra Rails, nó cũng là một lựa chọn rất tốt - nó rất nhanh và hầu hết các thử nghiệm đều có các yêu cầu cơ sở dữ liệu tương đối đơn giản và có xu hướng không yêu cầu đồng thời hoặc chạy vào các hạn chế của sqlite3.

Tuy nhiên, đối với nhiều người, nếu không nói là hầu hết, các trang web sản xuất, một DB được thiết kế cho đồng thời lên có thể được kêu gọi - MySQL, Postgres, vv ..

2

Đối với một cái gì đó giống như một SQLite Rails công cụ blog sẽ làm việc rất tốt ngay cả ở khối lượng khá cao bởi vì tất cả các lần đọc của nó và rất ít viết. Trong thực tế, phần lớn lượt truy cập của bạn sẽ được lưu vào bộ nhớ cache - tùy thuộc vào việc bạn cho phép nhận xét và chủ đề của bạn đang hoạt động như thế nào - bạn có thể thoát khỏi một quy trình rails vì máy chủ web của bạn sẽ xử lý hầu hết mọi yêu cầu.

Với cơ sở dữ liệu SQLite, mỗi quá trình đường ray phải chiến đấu trên khóa hệ thống tệp trên tệp để ghi, do đó bạn sẽ chặn rất nhiều nếu bạn có nhiều quy trình viết. Một cách để suy nghĩ về điều này là để xem xét có bao nhiêu quá trình đường ray bạn sẽ có ... nếu nó sẽ cần nhiều hơn 3-4 thì có lẽ SQLite không phải là một lựa chọn tốt.

Các vấn đề liên quan