Ok, vì vậy câu chuyện là như thế này:phát hiện khi dữ liệu đã thay đổi
- Tôi gặp rất nhiều tác phẩm (khá lớn, khoảng 25GB) mà đang ở trong một định dạng đặc biệt và cần phải được nhập khẩu trong một kho dữ liệu
- những tập tin này được cập nhật liên tục với các dữ liệu, thỉnh thoảng mới, đôi khi cùng một dữ liệu
- tôi đang cố gắng tìm ra một thuật toán trên làm thế nào tôi có thể phát hiện nếu một cái gì đó đã thay đổi cho một dòng cụ thể trong một tệp, để giảm thiểu thời gian cập nhật cơ sở dữ liệu
- cách nó hiện đang hoạt động bây giờ là tôi đang bỏ tất cả dữ liệu trong cơ sở dữ liệu mỗi lần và sau đó nhập lại, nhưng điều này sẽ không hoạt động nữa vì tôi sẽ cần một dấu thời gian cho thời điểm một mục đã thay đổi.
- các tập tin chứa chuỗi và số (tiêu đề, đơn đặt hàng, giá, vv)
Các giải pháp duy nhất tôi có thể nghĩ đến là:
- tính toán một hash cho mỗi hàng từ cơ sở dữ liệu, rằng nó được so sánh với giá trị băm của hàng từ tệp và nếu chúng khác nhau thì việc cập nhật cơ sở dữ liệu
- giữ 2 bản sao của tệp đó, trước đó và những tệp hiện tại nhanh hơn cập nhật db) và dựa trên các bản cập nhật đó.
Vì số lượng dữ liệu rất lớn đến rất lớn, tôi không còn lựa chọn nào khác. Về lâu dài, tôi sẽ loại bỏ các tập tin và dữ liệu sẽ được đẩy thẳng vào cơ sở dữ liệu, nhưng vấn đề vẫn còn.
Bất kỳ lời khuyên nào, sẽ được đánh giá cao.
Nếu bạn đang nói để tính toán giá trị băm của toàn bộ tệp so với băm của toàn bộ cơ sở dữ liệu sẽ không giúp tôi. Nhưng nếu bạn đang nói để lưu trữ các hash mỗi hàng trong cơ sở dữ liệu, có, đó là một trong những giải pháp tôi nghĩ đến. Tôi chỉ tự hỏi liệu điều đó có nhanh hơn là chỉ tìm ra liệu dữ liệu có thay đổi hay không bằng cách chỉ so sánh phần tử với phần tử. – hyperboreean
+1 để đề xuất lưu trữ ngày và giờ sửa đổi lần cuối –
Tôi không có bất kỳ dấu thời gian nào trong tệp đó. – hyperboreean