Tôi đã từng thừa hưởng mã nơi ai đó nghĩ lưu trữ địa chỉ IP là 4 int là một điều thực sự tốt, ngoại trừ họ dành toàn bộ thời gian chuyển đổi sang/từ int's.
Việc giữ chúng dưới dạng chuỗi trong cơ sở dữ liệu dễ dàng hơn nhiều và chỉ yêu cầu một chỉ mục duy nhất. Bạn sẽ ngạc nhiên về cách máy chủ sql có thể lập chỉ mục các chuỗi như trái ngược với 4 cột số nguyên. Nhưng danh sách IP này không phải dành cho danh sách đen. Một chuyến đi vòng cơ sở dữ liệu khá tốn kém.
Nếu cơ sở dữ liệu quá mức, hãy lưu trữ chúng trong từ điển trong bộ nhớ, nhưng đó chỉ là phỏng đoán vì chúng tôi không biết bạn cần so sánh bao nhiêu. Vì hầu hết các hashcodes là 32-bit int, và địa chỉ IPv4 là 32 bit, địa chỉ IP chính nó có thể chỉ là một hashcode tốt.
Nhưng khi những người khác chỉ ra, tùy chọn tốt nhất có thể là giảm tải trên máy chủ của bạn và mua phần cứng chuyên dụng. Có lẽ bạn giữ IP của danh sách đen gần đây trong bộ nhớ và định kỳ xuất bản một bộ định tuyến mới cho bộ định tuyến.
Nếu bạn là người cố gắng tạo một số phần mềm bên trong bộ định tuyến, thì bạn sẽ cần phải tìm ra cuốn sách cấu trúc dữ liệu của mình và tạo một thứ gì đó giống như cây b.
Nguồn
2008-10-02 05:08:43
là danh sách đen của bạn một tệp, được nạp vào bộ nhớ, trong cơ sở dữ liệu, cái gì? –
Việc đặt danh sách đen ở đâu không quan trọng. Nó vẫn sẽ được so sánh bởi CPU. Nhưng nếu bạn nghĩ rằng tôi nên đề cập đến điều này trong câu hỏi của tôi, xin vui lòng khai sáng cho tôi về lý do tại sao vị trí của danh sách đen là quan trọng. – MrValdez
@MrValdez: Thời gian lấy danh sách đen từ đĩa sẽ vượt quá thời gian để chuyển đổi tất cả các mục nhập của nó từ int thành chuỗi hoặc ngược lại. – MSalters