(मैं हरोकू पोस्टग्रेज पर काम करता हूं)
हम कुछ प्रणालियों पर प्राथमिक कुंजी के रूप में यूयूआईडी का उपयोग करते हैं और यह बहुत अच्छा काम करता है।
मेरा सुझाव है कि आप uuid-ossp
. का उपयोग करें एक्सटेंशन, और यहां तक कि पोस्टग्रेज आपके लिए यूयूआईडी उत्पन्न करते हैं:
heroku pg:psql
psql (9.1.4, server 9.1.6)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
dcvgo3fvfmbl44=> CREATE EXTENSION "uuid-ossp";
CREATE EXTENSION
dcvgo3fvfmbl44=> CREATE TABLE test (id uuid primary key default uuid_generate_v4(), name text);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_pkey" for table "test"
CREATE TABLE
dcvgo3fvfmbl44=> \d test
Table "public.test"
Column | Type | Modifiers
--------+------+-------------------------------------
id | uuid | not null default uuid_generate_v4() name | text |
Indexes:
"test_pkey" PRIMARY KEY, btree (id)
dcvgo3fvfmbl44=> insert into test (name) values ('hgmnz');
INSERT 0 1
dcvgo3fvfmbl44=> select * from test;
id | name
--------------------------------------+-------
e535d271-91be-4291-832f-f7883a2d374f | hgmnz
(1 row)
प्रदर्शन प्रभाव संपादित करें
यह हमेशा होगा अपने कार्यभार पर निर्भर हैं।
पूर्णांक प्राथमिक कुंजी में स्थानीयता का लाभ होता है जहां समान-डेटा एक साथ बैठता है। यह उपयोगी हो सकता है उदाहरण के लिए:श्रेणी प्रकार के प्रश्न जैसे WHERE id between 1 and 10000
हालांकि ताला विवाद बदतर है।
यदि आपका पठन कार्यभार पूरी तरह से यादृच्छिक है जिसमें आप हमेशा प्राथमिक कुंजी लुकअप करते हैं, तो कोई मापनीय प्रदर्शन गिरावट नहीं होनी चाहिए:आप केवल बड़े डेटा प्रकार के लिए भुगतान करते हैं।
क्या आप इस टेबल पर बहुत कुछ लिखते हैं, और क्या यह टेबल बहुत बड़ी है? यह संभव है, हालांकि मैंने इसे मापा नहीं है, कि उस सूचकांक को बनाए रखने में निहितार्थ हैं। बहुत सारे डेटासेट के लिए यूयूआईडी ठीक हैं, और यूयूआईडी को पहचानकर्ता के रूप में उपयोग करने में कुछ अच्छे गुण हैं।
अंत में, मैं इस पर चर्चा करने या सलाह देने के लिए सबसे योग्य व्यक्ति नहीं हो सकता, क्योंकि मैंने कभी भी यूयूआईडी पीके के साथ इतनी बड़ी तालिका नहीं चलाई है जहां यह एक समस्या बन गई है। वाईएमएमवी। (ऐसा कहने के बाद, मुझे ऐसे लोगों के बारे में सुनना अच्छा लगेगा जो दृष्टिकोण के साथ समस्याओं में भाग लेते हैं!)