2012-06-05 19 views
9

Tôi có một từ điển Python lớn của vectơ (150k vectơ, kích thước 10k) của số phao không thể nạp vào bộ nhớ, vì vậy tôi phải sử dụng một trong hai phương pháp lưu trữ này trên đĩa và lấy các vectơ cụ thể khi thích hợp. Các vectơ sẽ được tạo và lưu trữ một lần, nhưng có thể được đọc nhiều (hàng nghìn lần) - vì vậy nó thực sự quan trọng để có hiệu quả đọc. Sau một số thử nghiệm với mô-đun gác, tôi có xu hướng tin rằng sqlite sẽ là một lựa chọn tốt hơn cho loại nhiệm vụ này, nhưng trước khi tôi bắt đầu viết mã, tôi muốn nghe thêm một số ý kiến ​​về điều này ... Ví dụ, có tùy chọn ngoại trừ hai lựa chọn mà tôi không biết?Chọn giữa ngăn xếp và sqlite cho từ điển thực sự lớn (Python)

Bây giờ, giả sử chúng tôi đồng ý rằng tùy chọn tốt nhất là sqlite, một câu hỏi khác liên quan đến biểu mẫu chính xác của bảng. Tôi đang nghĩ đến việc sử dụng cấu trúc hạt mịn với các hàng có dạng vector_key, element_no, value để giúp phân trang hiệu quả, thay vì lưu trữ tất cả các phần tử 10k của một vectơ vào cùng một bản ghi. Tôi thực sự đánh giá cao bất kỳ đề xuất nào về vấn đề này.

Trả lời

9

Bạn muốn sqlite3, sau đó nếu bạn sử dụng ORM như sqlalchemy thì bạn có thể dễ dàng phát triển để mở rộng và sử dụng cơ sở dữ liệu phía sau khác.

Giá là một "đồ chơi" nhiều hơn thực sự hữu ích trong mã sản xuất.

Điểm khác mà bạn đang nói đến được gọi là chuẩn hóa và cá nhân tôi chưa bao giờ giỏi về nó this nên giải thích cho bạn.

Cũng giống như một lưu ý thêm this cho thấy thất bại hiệu suất trong xiên vs sqlite3

+0

Xin chào, tôi đã nhìn thấy trước liên kết bạn đang đề xuất, vấn đề là nó chỉ kiểm tra việc viết - không đọc là mối quan tâm cao nhất của tôi. Đối với bình thường hóa, cả hai hình thức tôi đề nghị ở trên đã ở dạng bình thường, tôi chỉ tự hỏi cái nào trong số hai sẽ là hiệu quả nhất để đọc - tôi đoán tôi có thể thực hiện một số xét nghiệm về điều này. Trong mọi trường hợp, cảm ơn bạn đã trả lời :) – dkar

3

Như bạn đang đối phó với vectơ số, bạn có thể tìm PyTables một sự thay thế thú vị.

+0

Xin chào, có vẻ như đó là một giải pháp thay thế thú vị, tôi sẽ xem xét kỹ hơn. Cảm ơn vì những đề suất của bạn :) – dkar

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