Có giải pháp nào thay thế không?

lại là em cậu bé mới tập tành python, sqlite chỉ để thực thi 1 file script cho công việc hiện tại :smiley:

hiện tại thì cơ chế hoạt động của em đơn giản là ntn:
có 2 bảng: nguyen_lieu(id, name), nhat_ky(id, uid, name)

mỗi lần script chạy sẽ nhận uid mới thì sẽ lấy từng row từ nguyen_lieu để xử lý, xong thì sẽ lưu vào nhat_ky để lần sau sẽ không bị lấy trùng lặp nguyen_lieu mà đã xử lý cho uid kia nữa, query get nguyen_lieu của e là:

SELECT name FROM nguyen_lieu WHERE name NOT IN (SELECT name FROM nhat_ky WHERE uid = uid)

vấn đề làm ntn thì bảng nhat_ky sẽ quá nhiều dữ liệu, mỗi lần thay server em copy file db qua mất time (hiện tại db của e là 250gb) hoặc nếu 1 bảng có quá nhiều dữ liệu như vậy thì tốc độ INSERT và SELECT có chậm hơn không ạ, liệu có giải pháp nào hoặc thiết kế lại db cho tối ưu hơn không ạ.

Tốc độ insert của cậu sẽ không gặp vấn đề gì, nhưng câu select của cậu thì có đó :smile:
Bài toán của cậu có thể sử dụng Bloom filter. Nếu cậu implement đúng, cậu sẽ chỉ cần fix size space thôi (trade off sẽ là false positive case).

Hope it helps!

4 Likes

dùng cái này dc ko a

Trông có vẻ không ổn lắm, vì cậu không được tự định nghĩa số lượng hash function ở plugin này. Số lượng hash function càng nhỏ, cậu càng có khả năng bị false positive.

Cơ mà cậu thử xem :smile:

4 Likes

Chỉ với dữ liệu đơn giản là ID, name, UID thôi mà tới 250GB cho file database.

Mình nghĩ là chắc không ai tư vấn được vô vấn đề đâu, vì nó mơ hồ quá

2 Likes

sao lại mơ hồ b, 250gb có gì đâu mà nhiều @@ nó còn tăng nữa á

Có những cái (dòng dữ liệu trong table ấy) có bao giờ truy cập lại đâu, sau vài tuần thì cắt bỏ đi chứ, lưu trữ rác làm gì? Còn vẫn truy cập nhưng tỉ lệ thấp thì cũng tách ra, chứ để nằm đó để lên đến hàng Terabyte, Petabyte gì đó là không nên, ngay cả các hãng công nghệ lớn họ cũng không để lùm xùm một CSDL trải dài quá 1 phân vùng ổ cứng.

4 Likes

em lại cần những dòng đó, nhưgnx dòng quá cũ thì cũng truy cập với tỉ lệ thấp hơn. nhưng hiện tại em dùng python với sqlite, thì làm sao để tách ra được nhỉ, nó chỉ gói gọn trong 1 file .db. Nếu tách ra thì mỗi script python sử dụng 1 file sqlite .db riêng hay sao ạ. Vậy dần dần nó sẽ lên tới hàng trăm, hàng nghìn file db ak a ?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?