Tổ chức và truy cập tập tin
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| file organisation/faɪl ˌɔːɡənaɪˈzeɪʃn/ | tổ chức tập tin |
| access method/ˈækses ˈmeθəd/ | phương thức truy cập |
| serial file/ˈsɪərɪəl faɪl/ | tập tin tuần tự |
| sequential file/siːˈkwenʃl faɪl/ | tập tin tuần tự |
| key field/kiː fiːld/ | trường khóa |
| direct access/daɪˈrekt ˈækses/ | truy cập trực tiếp |
| sequential access/siːˈkwenʃl ˈækses/ | truy cập tuần tự |
| random file/ˈrændəm faɪl/ | tập tin ngẫu nhiên |
Tại sao công việc ban đêm của ngân hàng mất cả đêm
- Cho đến thập niên 1980, tài khoản ngân hàng sống trên băng từ. Băng chỉ có thể đọc từ đầu này sang đầu kia, vì vậy các giao dịch trong ngày được sắp xếp vào ban đêm và toàn bộ tập tin chính được đọc từ đầu đến cuối, một lần, để áp dụng chúng.
- Hỏi số dư của một khách hàng giữa buổi chiều và câu trả lời là: cho đến ngày mai. Sự tổ chức của tập tin, không phải tốc độ máy tính, quyết định ngân hàng có thể cung cấp gì.
- Disk mang lại một cách tổ chức khác: tính toán vị trí của bản ghi từ khóa của nó và nhảy đến đó. Đó chính là thứ giúp ATM trả lời trong một giây.
- Bài học này là tổ chức tập tin, hai phương pháp truy cập, và cách chọn từ những gì chương trình thường làm nhất.
Ba cách tổ chức
- Một tập tin tuần tự chứa các bản ghi theo thứ tự chúng được thêm vào, không có sắp xếp. Việc bổ sung nhanh; tìm kiếm đòi hỏi đọc từ đầu. Dùng cho nhật ký và hồ sơ kiểm toán.
- Một tập tin tuần tự chứa các bản ghi được sắp xếp theo một trường khóa. Tìm kiếm nhanh hơn, vì bạn có thể dừng sớm hoặc tìm kiếm nhị phân; chèn chậm, vì các bản ghi sau phải dịch chuyển. Dùng cho tập tin chính được cập nhật theo lô.
- Một ngẫu nhiên, hay tập tin truy cập trực tiếp, chứa mỗi bản ghi tại một vị trí được tính toán từ khóa bản ghi của nó, thường bằng hàm băm. Tra cứu theo khóa rất nhanh; đọc theo thứ tự khóa thì cồng kềnh. Dùng cho bảng tra cứu lớn và tài khoản khách hàng.

Tuần tự: thứ tự đến, không có gì hơn

Tuần tự: cùng các bản ghi, theo thứ tự khóa
Hai phương pháp truy cập
- Truy cập tuần tự đọc từ đầu tập tin đến bản ghi mong muốn. Đây là kiểu truy cập duy nhất mà một tập tin thông thường cho phép, và cũng là cách một tập tin tuần tự được xử lý theo lô.
- Truy cập trực tiếp nhảy ngay vào vị trí đã biết mà không cần đọc những gì nằm trước đó. Đây là cách đọc một tập tin ngẫu nhiên, và một tập tin tuần tự cũng có thể được đọc trực tiếp khi vị trí của khóa đã biết hoặc có chỉ mục.
- Vì vậy sự kết hợp chương trình là: truy cập tuần tự dành cho tập tin thông thường và tập tin tuần tự; truy cập trực tiếp dành cho tập tin tuần tự và tập tin ngẫu nhiên.

Ngẫu nhiên: khóa cho bạn biết nơi cần tìm
Đường dẫn truy cập tập tin
Theo dõi tập tin từ bộ lưu trữ đến chương trình và trở lại an toàn.
Một tập tin tuần tự (serial) lưu trữ các bản ghi:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Tập tin tuần tự giữ các bản ghi theo thứ tự đến — nhanh khi thêm, chậm khi tìm kiếm. Tập tin tuần tự (sequential) được sắp xếp theo khóa.
Ghép nối mỗi tổ chức tập tin với cách nó lưu trữ bản ghi.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Serial = thứ tự đến; sequential = sắp xếp; random = vị trí bít hóa; indexed-sequential = sắp xếp + chỉ mục.
Một tập tin ngẫu nhiên (truy cập trực tiếp) đặt mỗi bản ghi:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Khóa được chuyển đổi (thường bằng hàm bít hóa) thành vị trí, nên tra cứu một khóa là rất nhanh.
Sự khác biệt giữa tập tin serial và tập tin sequential là gì?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Thứ tự đến so với sắp xếp theo khóa. Sự khác biệt đơn lẻ này khiến tập tin sequential có thể tìm kiếm sớm và chậm khi chèn vào.
Ví dụ minh họa: chọn tổ chức
- Một chương trình lương tháng đọc từng bản ghi nhân viên đúng một lần mỗi tháng, theo thứ tự mã nhân viên, để xuất phiếu lương. Tổ chức và loại truy cập nào, cùng lý do?
- Tổ chức tuần tự với truy cập tuần tự: mọi bản ghi đều được xử lý nên việc nhảy qua lại không mang lại lợi ích gì, và lưu trữ theo thứ tự khóa giúp phiếu lương ra đúng thứ tự mà không cần bước sắp xếp.
- Một máy ATM phải lấy một tài khoản theo số tài khoản trong vòng dưới một giây. Tổ chức ngẫu nhiên với truy cập trực tiếp: vị trí được tính toán từ số tài khoản, nên chỉ cần đúng một lần đọc thay vì tìm kiếm trên hàng triệu bản ghi.
- Một ứng dụng máy chủ web thêm một dòng cho mỗi yêu cầu vào nhật ký. Thông thường: chỉ cần thêm vào cuối, và việc thêm vào cuối là thao tác nhanh nhất của tập tin thông thường.
Tập tin sequential có thể được đọc bằng truy cập tuần tự cũng như truy cập trực tiếp.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Truy cập tuần tự phục vụ tập tin serial và sequential; truy cập trực tiếp phục vụ tập tin sequential và ngẫu nhiên. Chỉ có tập tin serial bị giới hạn ở một phương pháp.
Sắp xếp lại các bước lấy một tài khoản từ tập tin ngẫu nhiên.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Không có tìm kiếm nào xảy ra: khóa được chuyển thành vị trí và đọc một lần. Kiểm tra cuối cùng bắt va chạm.
Các sự đánh đổi, đặt cạnh nhau
| thông thường | tuần tự | ngẫu nhiên | |
|---|---|---|---|
| thứ tự bản ghi | theo thứ tự thêm vào | sắp xếp theo khóa | tính toán từ khóa |
| thêm một bản ghi | nhanh, thêm vào cuối | chậm, các bản ghi bị dịch chuyển | nhanh, nếu ô trống còn |
| tìm một bản ghi | chậm, đọc tất cả | nhanh hơn, có thể dừng sớm | nhanh nhất, một lần đọc |
| đọc theo thứ tự khóa | cần sắp xếp | tự nhiên | cần sắp xếp |
- Đáp án đúng luôn được lập luận dựa trên hoạt động chính: chương trình này làm gì nhiều nhất?
Tổ chức tập tin tuần tự (sequential) rất phù hợp để xử lý từng bản ghi theo lượt.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Truy cập trực tiếp phù hợp để tra cứu một bản ghi duy nhất.
Ghép nối mỗi tình huống với tổ chức tập tin phù hợp.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Chỉ thêm, xử lý mọi thứ theo thứ tự, hoặc tra cứu một bản ghi: thao tác chiếm ưu thế quyết định tổ chức.
Ví dụ minh họa: biện chứng cho sự thay đổi
- Tệp sách của thư viện có dạng thông thường. Tìm kiếm một tựa đề cụ thể rất chậm. Hãy đề xuất một sự thay đổi và biện chứng cho nó.
- Tái tổ chức thành tập tin ngẫu nhiên, sử dụng hàm băm ISBN sang địa chỉ, biến việc tìm kiếm thành một lần đọc trực tiếp thay vì quét toàn bộ tệp.
- Nếu thư viện cũng in danh mục theo thứ tự tựa đề, thì tổ chức tuần tự theo tựa đề sẽ phục vụ tốt cả hai: danh mục không cần sắp xếp và việc tìm kiếm có thể dừng sớm hoặc dùng tìm kiếm nhị phân.
- Tên tổ chức, tên phương pháp truy cập, và liên hệ cả hai với một hoạt động mà câu hỏi nêu ra.
Để tạo báo cáo theo thứ tự khóa, tổ chức tập tin tốt nhất là:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Một tập tin sequential đã ở thứ tự khóa, vì vậy đọc tuần tự sẽ tạo báo cáo theo thứ tự.
Một tổ chức tập tin được chọn bằng cách xem xét ____ thao tác của chương trình.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Mỗi tổ chức đều nhanh ở cái này và chậm ở cái khác, vì vậy thao tác diễn ra thường xuyên nhất sẽ quyết định.
Khóa phải như thế nào, và tại sao hàm băm lại phá vỡ điều đó
- Truy cập trực tiếp cần một khóa, và khóa đó phải duy nhất đối với một bản ghi. Họ tên không phải là khóa; mã khách hàng thì có.
- Hàm băm biến khóa đó thành địa chỉ bản ghi chỉ qua một phép tính, nên một lần đọc duy nhất đủ để đạt đến bản ghi bất kể tập tin lớn đến đâu.
- Hai khóa khác nhau có thể bị băm về cùng một địa chỉ. Đó là xung đột, và nó không phải lỗi thuật toán: nó là điều không thể tránh khỏi khi số lượng khóa khả dĩ vượt quá số địa chỉ.
- Giải pháp được nêu trong điểm chuẩn là khu vực tràn, hoặc lưu một con trỏ tại địa chỉ đó trỏ đến một chuỗi các bản ghi chia sẻ địa chỉ đó. Do đó, xung đột chỉ tốn thêm một lần đọc chứ không mất bản ghi.
- Vì vậy so sánh trung thực là: hàm băm cung cấp truy cập gần như không đổi cho đến khi tập tin đầy, và hiệu suất giảm sút khi các xung đột tích tụ. Truy cập tuần tự không bao giờ suy giảm nhưng vốn dĩ chưa bao giờ nhanh.
Hai bản ghi bít hóa về cùng một địa chỉ. Điều nào đúng? Chọn tất cả các áp dụng.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Không có gì bị mất; một va chạm tốn thêm một lần đọc. Nó không thể tránh khỏi về nguyên tắc, vì luôn có nhiều khóa khả thi hơn địa chỉ.
Điểm số dễ mất
- Thông thường là thứ tự thời gian đến; tuần tự là sắp xếp theo một khóa. Chúng không đồng nghĩa, và bài thi kiểm tra chính xác sự khác biệt đó.
- Tổ chức là cách các bản ghi được bố trí; truy cập là cách chương trình tiếp cận một bản ghi. Một câu hỏi sẽ nêu một hoặc cái kia.
- Một tập tin tuần tự hỗ trợ cả hai phương pháp truy cập; một tập tin thông thường chỉ hỗ trợ truy cập tuần tự.
- Biện chứng dựa trên hoạt động chính, không phải dựa trên "nó nhanh hơn". Hãy nói nhanh hơn ở aspect nào, và tại sao.
Bạn đã nắm vững
- Thông thường: thứ tự thêm vào, thêm vào cuối nhanh, tìm kiếm chậm, dùng cho nhật ký · Tuần tự: sắp xếp theo một trường khóa, tốt cho xử lý lô và xuất theo thứ tự · Ngẫu nhiên: vị trí tính toán từ khóa bản ghi, một lần đọc để tìm thấy bản ghi
- Truy cập tuần tự đọc từ đầu; truy cập trực tiếp nhảy đến một vị trí
- Truy cập tuần tự phục vụ tập tin thông thường và tuần tự; truy cập trực tiếp phục vụ tập tin tuần tự và ngẫu nhiên
- Chọn từ hoạt động chính: xử lý tất cả, tìm một cái, hay chỉ thêm vào cuối