---
# System prepended metadata

title: Bitex - Mã bảo hành
tags: [eye, bitex]

---

# Bitex - Mã bảo hành

###### tags: `eye` `bitex`

Về vấn đề tạo mã bảo hành, tính năng này không liên quan tới module báo cáo. Vì chỗ này nó cần thực hiện tạo một loạt các mã bảo hành trước - đảm bảo mã phải unique, sau đó mới dùng nó để xuất ra file. Hiện tại việc generate mã tốn khá nhiều thời gian nên không thể tăng lên như mong muốn của Bitex là khoảng 2 triệu mã được.

Chỗ này để tăng performace của nó, mình cần tối ưu lại giải thuật chỗ sinh mã, để đảm bảo tốc độ và tính duy nhất của mã. Hiện đang gặp vấn đề:
- Độ dài mã: 10 ký tự
- Sinh mã random => cần kiểm tra trùng với các mã trước đó trong database
- Số lượng record trong database càng lớn thì tốc độ kiểm tra trùng càng chậm.

Chỗ này cần cải tiến như sau:
- Thay đổi cơ chế sinh mã, đề xuất:
  + Độ dài mã: 12 ký tự 
  + Sử dụng 4 ký tự đầu theo một rule định nghĩa trước, đảm bảo không bị trùng dữ liệu.

=> Việc có thêm quy luật khi random mã như trên sẽ giúp đảm bảo hạn chế việc trùng dữ liệu, và việc kiểm tra trùng sẽ chỉ kiểm tra trên 1 tệp dữ liệu nhỏ (trong ngày) mà không cần scan hết toàn bộ database.

Việc cải thiện các bước trên sẽ giúp tăng tốc độ sinh mã, tuy nhiên cũng chỉ tăng lên tầm 50.000 mã cùng lúc. EYE cũng sẽ hỗ trợ tới phần này.

Việc tăng lên 2 triệu mã cần bàn thêm giải pháp khác, và không thể làm 1 lần vì file xuất ra không thể chứa 2 triệu record được, không phần mềm nào có thể mở được file đó cả.

