2011-01-21 40 views
14

Tôi hiện đang phát triển một ứng dụng có tiềm năng tạo cơ sở dữ liệu rất lớn. Tôi đã lên kế hoạch cài đặt ứng dụng trên thẻ SD để cho phép thêm một số phòng. Các giao dịch gần đây ở đây đã cảnh báo tôi rằng đó có thể không phải là một ý tưởng hay. Tôi có thể thực hiện bất kỳ bước nào để giảm thiểu nguy cơ của quá trình hành động này không? Hoặc có bất kỳ lựa chọn thay thế tốt hơn?Xử lý một cơ sở dữ liệu lớn trong Android

Trả lời

11

Đây là một comprehensive post về chủ đề (Tôi không phải là tác giả).

Tôi nghĩ, tổng thể, nó cần phải được truyền đạt rằng SQLite chỉ là một cơ chế SQL để truy cập một tệp. Dường như giới hạn thị trường hiện tại là 50mb cho toàn bộ APK. Khi cài đặt vào bộ nhớ trong, bạn cần 2x kích thước APK của mình. Cài đặt vào sdcard chỉ yêu cầu kích thước APK đã nêu.

Dưới đây là những gì bạn sẽ làm việc: 1.) Vì SQLite chỉ là trừu tượng đối với tệp của bạn, khi bạn chọn, chèn, cập nhật, v.v, bạn sẽ phát sinh chi phí ghi sdcard đọc chi tiết 2.) Tôi đã thấy đề cập đến một soft limit of 10000 records dựa trên hiệu suất. Bài viết này là một chút cũ, do đó, nó có khả năng nhận được tốt hơn.

Sau đó, có thể bạn sẽ phải thiết lập một số thử nghiệm để xem những gì có thể thực hiện được. Tìm kiếm cursory của google không hiển thị bất kỳ điểm chuẩn nào cho đến nay.

+0

Câu trả lời hay. +1. Tôi có nghi ngờ rằng nếu tệp sqlite nằm ngoài Android thì điều gì sẽ là giới hạn? Nó giống như máy tính để bàn hay vẫn còn có bất kỳ giới hạn ..? – Vinay

4

Như đã chỉ ra trước đó, SQLite có chức năng mà bạn đang tìm kiếm, được đóng gói trong một thư viện nhỏ. Nó được thiết kế để thay thế truy cập tệp đơn giản với truy cập dữ liệu giao dịch đáng tin cậy, có thể phục hồi thông qua API SQL. Có một bản tóm tắt tuyệt vời về số main page của họ.

Có hàng nghìn dự án đang sử dụng SQLite. Nếu tập dữ liệu của bạn sẽ rất lớn (hơn 100-200MB), thì bạn có thể muốn xem xét sử dụng Berkeley DB làm tùy chọn. Berkeley DB gần đây đã giới thiệu hỗ trợ cho một SQL API, hoàn toàn tương thích với SQLite. Ngoài chức năng được cung cấp bởi trình phân tích cú pháp SQL SQLite, trình lập kế hoạch truy vấn và trình thực thi, bạn cũng nhận được độ tin cậy và khả năng mở rộng mà Berkeley DB nổi tiếng. Chúng tôi có một số khách hàng vui vẻ bắt đầu với SQLite. Khi họ nhận ra rằng họ cần thêm tính đồng thời, khả năng mở rộng và độ tin cậy không có sẵn trong SQLite, họ đã thay thế thư viện SQLite bằng thư viện BDB, biên dịch lại ứng dụng của họ và kiểm tra và chạy trên Berkeley trong vòng vài ngày.

Tôi là một trong những Quản lý sản phẩm cho Berkeley DB, vì vậy tôi hơi thiên vị. Tuy nhiên, chúng tôi đã triển khai API SQL BDB để chúng tôi có thể cung cấp cho người dùng tốt nhất cả hai thế giới: sự phổ biến và dễ sử dụng của SQLite kết hợp với tính đồng thời, độ tin cậy và khả năng mở rộng của Berkeley DB. Đặc biệt với các bộ dữ liệu lớn hơn, Berkeley DB có thể tạo ra tất cả sự khác biệt về hiệu năng của ứng dụng.

+0

Berkeley DB có khả dụng trên tất cả các điện thoại Android không? Có dễ dàng chuyển đổi một ứng dụng Android từ SQLite sang BDB không? –

+1

Berkeley DB có thể được tải xuống từ đây: http://bit.ly/gNWr1C. Cả BDB và BDB Java Edition đều chạy trên Android. Nếu bạn muốn sử dụng API SQL, thì bạn nên tải xuống BDB (không phải BDB JE). Cả hai sản phẩm đều được thử nghiệm và hỗ trợ cho Android và chúng tôi có khách hàng chạy các ứng dụng dựa trên BDB trên Android. Bạn sẽ cần phải xây dựng Berkeley DB và trỏ ứng dụng của bạn vào thư viện BDB. Bạn phải cẩn thận với thư viện bạn đang sử dụng, nhưng một khi nó được thiết lập, nó sẽ chỉ chạy.Vui lòng cho chúng tôi biết nếu bạn có bất kỳ câu hỏi nào bằng cách đăng chúng lên Diễn đàn OTN (http://bit.ly/g5Fkbz). – dsegleau

+0

Bạn có thể tìm thấy liên kết trên Diễn đàn OTN này hữu ích: http://bit.ly/dZ86xg – dsegleau

2

Như đã đề cập ở trên, bạn có thể sử dụng Berkeley DB (không phải là phiên bản Java) trên Android. Tôi đã mô tả các bước của quá trình biên dịch chéo here vì nó yêu cầu chỉnh sửa nhỏ.

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