2010-01-06 57 views
18

Tôi là một người nhúng, không phải là một anh chàng cơ sở dữ liệu. Tôi đã được yêu cầu thiết kế lại một hệ thống hiện có trong đó có tắc nghẽn ở một số nơi.Cơ sở dữ liệu "tốt nhất" để nhúng là gì?

Thiết bị nhúng dựa trên bộ vi xử lý ARM 9 chạy ở 220mHz.

Nên có cơ sở dữ liệu các mục nhập 50k (có thể tăng lên 250k) mỗi mục có 1 nghìn dữ liệu (tối đa 8 tệp). Đó là gần đúng - tôi có thể cố gắng để có được con số chính xác hơn nếu cần thiết.

Họ hiện đang sử dụng SqlLite 2 và lập kế hoạch để chuyển sang SqlLite 3.

Nếu không bắt đầu một cuộc chiến tranh ngọn lửa - Tôi là một người hoàn toàn d người mới/b chỉ tìm kiếm lời khuyên - đó là quyết định "tốt nhất"? Tôi nhận ra rằng đây có thể là "chuỗi dài bao nhiêu?" câu hỏi, nhưng bất kỳ con trỏ woudl được hoan nghênh rất nhiều. Tôi không quan tâm đến việc đọc nhiều bài báo về nghiên cứu &, nhưng hy vọng rằng bạn có thể giúp tôi có được một khởi đầu mới. Cảm ơn.

p.s Một lần nữa, tổng số viết lại, thậm chí có thể không gắn với Linux nhúng, nhưng chuyển sang eCos, đừng lo lắng quá nhiều về việc chuyển đổi một lần giữa các định dạng d/b. Oh, và truy cập nên là không thường xuyên, nhiều nhất một vài giây một lần.


chỉnh sửa: ok, có vẻ như chúng có mục nhập 30k (có thể đạt 100 nghìn hoặc hơn) chỉ 5 hoặc 6 trường, nhưng ít nhất 3 trong số đó có thể là khóa tìm kiếm để lưu. Họ đang đùa giỡn với "không có d/b, vì dữ liệu rất đơn giản", nhưng có vẻ như với nhiều phím, chúng tôi không thể sử dụng các công cụ ưa thích như tìm kiếm kiểu quicksort() (đệ quy, tìm kiếm nhị phân). Bất kỳ suy nghĩ về "không có d/b", chỉ là cấu trúc dữ liệu?

Btw, một mấu chốt là 800k - không chắc chắn SqlLite xử lý đó (có thể với "không d/b" Tôi phải băm mà 800k một cái gì đó nhỏ hơn?)

+2

sqllite có vẻ như là một lựa chọn tốt để gắn bó với – Toad

+0

vâng, tôi cũng khuyên bạn nên sử dụng sqllite. – junmats

+1

Cơ sở dữ liệu có phải là nút cổ chai của bạn không? Bởi số của bạn, nó sẽ được sử dụng tốt, trừ khi lưu trữ của bạn là rất chậm. Hãy nhớ rằng 10 năm trước đây đã được coi là một cỗ máy khá nhanh. –

Trả lời

21

Ngoài ra SQLite là Cơ sở dữ liệu được chọn bởi hầu hết các hệ điều hành di động. Android, hệ điều hành iPhone và tàu Symbian với SQLite khiến tôi nghĩ rằng nhân lực đã được dùng để tối ưu hóa nó cho bộ xử lý trong những điện thoại đó (gần như luôn là ARM).

11

tôi sẽ gắn bó với SQLite, nó rộng rãi như thế nào được hỗ trợ và khá phong phú về các tính năng.

1

tôi không quen thuộc với hệ thống nhúng, nhưng việc sử dụng iphone arm9, và sqlite như DB

6
  • Firebird (trước đây Interbase) tuyên bố để làm việc tốt nhúng.

  • HypersonicQL (HQL) là nhỏ và nhanh và cũng tuyên bố là phù hợp để sử dụng nhúng.

Than ôi, tôi không có kinh nghiệm cá nhân để sao lưu xác nhận quyền sở hữu.

2

Tôi cũng sẽ đề xuất sqlite3. Nó được sử dụng bởi nhiều ứng dụng nổi tiếng.

4

SQLite có lẽ là một cược khá an toàn. Tuy nhiên, nếu hiệu suất thực sự quan trọng đối với ứng dụng của bạn và bạn không cần một cơ sở dữ liệu quan hệ, tôi sẽ đề nghị bạn hãy xem Berkeley DB link text. Berkeley DB không phải là một cơ sở dữ liệu quan hệ. Nói cách khác, nếu dữ liệu của bạn được nhóm trong các bảng khác nhau và bạn liên tục cần truy vấn các bộ kết quả yêu cầu dữ liệu liên quan từ nhiều hơn một bảng, bạn có thể cần một cơ sở dữ liệu quan hệ.Berkeley DB là phù hợp hơn cho một cái gì đó giống như tra cứu bảng (tức là, dữ liệu được tổ chức trong một vài bảng và bạn không cần phải truy vấn dữ liệu từ nhiều hơn một trong số chúng để tạo ra bộ kết quả bạn muốn). Berkeley DB là rất nhanh nhưng nó sẽ yêu cầu công việc nhiều hơn vào cuối của bạn để nhận được nhiều nhất của nó.

+0

Chỉ một bảng, 5 hoặc 6 trường, nhưng ba trường có thể được dùng làm khóa duy nhất ... và có rất nhiều bản ghi - 30k, có thể trở thành 100k, thậm chí có thể là 256k – Mawg

+1

Trong trường hợp này, Tôi muốn nói Berkeley DB là hoàn toàn hoàn hảo cho ứng dụng của bạn. Nếu hiệu suất là vô cùng quan trọng đối với ứng dụng của bạn, tôi nghĩ bạn nên nhìn vào Berkeley DB. – figurassa

+0

Đây là một so sánh hiệu suất của sqlite và Berkeley DB: http://www.sqlite.org/cvstrac/wiki?p=KeyValueDatabase để lưu trữ dữ liệu khóa-giá trị –

3

nếu bạn muốn thay thế, thì berkeleydb đáng xem. nó từng được sở hữu bởi phần mềm sleepycat, nhưng bây giờ đã có sẵn từ oracle. đó là một cơ sở dữ liệu cơ sở dữ liệu; có thể lập trình trực tiếp (chứ không phải là một sql). nó được sử dụng như một phần của động cơ cốt lõi trong nhiều cơ sở dữ liệu lớn, và là cơ sở dữ liệu trong nhiều thiết bị nhúng - nó thường được sử dụng để quản lý các bảng định tuyến trong các bộ định tuyến. nó có xu hướng bị bỏ qua những ngày này cho các thiết lập thời trang hơn, nhưng tôi đã tìm thấy nó được phong nha, vững chắc và cho những con số bạn đang nói về nó có thể được nhanh chóng sét.

2

SQLite là ok, nhưng không có kế hoạch sử dụng nếu bạn dự định chèn, cập nhật và xóa dữ liệu liên quan đến nhiều hơn 6 hàng hàng (Tất cả cùng một lúc hoặc bất kỳ phần nào). Điều là từ khóa VACCUM phải được thực hiện everynow và sau đó và nó trở thành một nút cổ chai rất nghiêm trọng cho hiệu suất, ngay cả khi nó tự động.

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