Kami sedang mengerjakan aplikasi web, belum dapat diakses oleh pengguna. Bos saya memperhatikan bahwa catatan yang baru dibuat mendapatkan ID lebih dari 10.000, meskipun kami hanya memiliki di bawah 100 catatan dalam tabel. Dia berasumsi bahwa antarmuka web untuk beberapa alasan menciptakan lebih dari 100 kali lebih banyak catatan sementara daripada yang sebenarnya (dan menghapusnya) dan ini dapat membuat kita kehabisan jangkauan dalam beberapa bulan setelah rilis.
Saya tidak berpikir dia benar tentang penyebab inflasi ID (kolega yang bisa menjawab ini sedang berlibur, jadi kita tidak tahu pasti), tapi mari kita asumsikan dia benar. Dia mengatakan bahwa dia akan benci untuk menggunakan kolom bigint, dan bahwa dia ingin kita berhenti secara otomatis meningkatkan kolom ID dan menulis kode sisi server yang memilih integer "tidak terpakai" pertama dan menggunakannya sebagai ID.
Saya seorang mahasiswa pascasarjana ilmu komputer dengan sedikit pengalaman praktis, mengisi peran pengembang junior. Dia memiliki pengalaman bertahun-tahun mengelola semua basis data organisasi kami, dan merancang sebagian besar darinya. Saya pikir dia salah dalam hal ini, bahwa ID bigint tidak perlu ditakuti, dan yang meniru fungsionalitas DBMS berbau antipattern. Tapi saya belum percaya pada penilaian saya.
Apa argumen untuk dan melawan setiap posisi? Hal-hal buruk apa yang dapat terjadi jika kita menggunakan bigint, dan apa bahaya dari menciptakan kembali fungsi autoincrementing roda ? Apakah ada solusi ketiga yang lebih baik daripada yang lain? Apa yang mungkin menjadi alasannya untuk ingin menghindari inflasi nilai ID wajah? Saya tertarik mendengar tentang alasan pragmatis juga - mungkin ID bigint bekerja secara teori, tetapi menyebabkan sakit kepala dalam praktik?
Aplikasi ini diharapkan tidak menangani jumlah data yang sangat besar. Saya ragu bahwa itu akan mencapai 10.000 catatan aktual dalam beberapa tahun mendatang.
Jika ada bedanya, kami menggunakan Microsoft SQL server. Aplikasi ini ditulis dalam C # dan menggunakan Linq to SQL.
Memperbarui
Terima kasih, saya menemukan jawaban dan komentar yang ada menarik. Tapi saya khawatir Anda salah mengerti pertanyaan saya, jadi itu berisi apa yang ingin saya ketahui.
Saya tidak terlalu peduli tentang alasan sebenarnya untuk ID tinggi. Jika kita tidak dapat menemukannya sendiri, saya dapat mengajukan pertanyaan yang berbeda. Yang saya tertarik adalah untuk memahami proses pengambilan keputusan dalam kasus ini. Untuk ini, silakan asumsikan bahwa aplikasi akan menulis 1000 catatan per hari, kemudian menghapus 9999 dari mereka . Saya hampir yakin ini bukan masalahnya, tapi inilah yang diyakini bos saya ketika dia mengajukan permintaan. Jadi, dalam keadaan hipotetis ini, apa pro dan kontra dari menggunakan bigint atau menulis kode kita sendiri yang akan menetapkan ID (dengan cara yang menggunakan ID dari catatan yang sudah dihapus, untuk memastikan tidak ada celah)?
Adapun alasan sebenarnya, saya sangat curiga bahwa ini karena kami pernah menulis kode untuk mengimpor data dari database lain, sebagai bukti konsep bahwa migrasi selanjutnya dapat dilakukan sampai batas tertentu. Saya pikir kolega saya sebenarnya membuat beberapa ribu catatan selama impor dan kemudian menghapusnya. Saya harus mengkonfirmasi apakah ini benar-benar terjadi, tetapi jika ya, bahkan tidak perlu untuk bertindak.