Kunci Utama Integer Unik dalam Django: Mencapai Kerahsiaan tanpa Mengorbankan Kepantasan
Kunci utama yang terdedah boleh menimbulkan kebimbangan keselamatan. Untuk menangani perkara ini, pembangun selalunya berusaha untuk menggantikan kunci utama auto-increment lalai dengan integer unik yang tidak mudah diteka atau dikira. Walaupun pencincangan kunci asal ialah penyelesaian biasa, ia memperkenalkan overhed prestasi dan keperluan untuk penukaran setiap kali kunci itu diakses.
Dalam artikel ini, kami mempersembahkan pendekatan alternatif yang diilhamkan oleh pendekatan Instagram. Penyelesaian kami menjana kunci integer unik yang memenuhi kriteria berikut:
Pelaksanaan
Menjana ID:
START_TIME = <unix timestamp constant> def make_id(): t = int(time.time()*1000) - START_TIME u = random.SystemRandom().getrandbits(23) id = (t << 23 ) | u return id
The Model:
class MyClass(models.Model): id = models.BigIntegerField(default = fields.make_id, primary_key=True)
Faedah
Pendekatan ini secara berkesan menangani kebimbangan yang dibangkitkan sambil memenuhi keperluan khusus sesuatu kunci utama integer unik tanpa menjejaskan prestasi atau kecekapan storan.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Kunci Utama Integer Unik Sulit, Boleh Susun dan Padat dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!