2012-03-11 20 views
9

मुझे यह जांचने की ज़रूरत है कि कैसंड्रा डेटाबेस में कुछ कुंजीपटल मौजूद है या नहीं। मैं इस तरह ख़ाली लिखने की ज़रूरत:सीक्यूएल: कैसे जांचें कि कुंजीपटल मौजूद है या नहीं?

if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME; 

वहाँ एक आदेश keyspace का वर्णन है, लेकिन मैं किसी भी तरह cql लिपि में यह से जानकारी पुनः प्राप्त कर सकते हैं?

उत्तर

8

इस पल के रूप में, cql grammarcreate keyspace if not exists प्रदान नहीं करता है। शायद भविष्य में, वे इस सुविधा को जोड़ देंगे। कोई इसके करीब आ जाएगा, यह improvement होगा, हो सकता है कि वे भी किस्पेस बनाने के लिए जोड़ देंगे। shrugs

आप शायद पाइथन या किसी भी कैसंड्रा क्लाइंट में सीक्यूएल का उपयोग कर कुछ ऐसा कर सकते हैं। यदि जावा में लिखा नहीं गया है तो मेरे पास एक सरल निर्माण कुंजीपटल है।

try 
{ 
    if (cluster.describeKeyspace("new_keyspace") == null) 
    { 
     System.out.println("create new keyspace"); 
     KeyspaceDefinition ksdef = HFactory.createKeyspaceDefinition("new_keyspace"); 
     cluster.addKeyspace(ksdef); 
    } 
    else 
    { 
     System.out.println("keyspace exists"); 
    } 
} 
catch (HectorException e) 
{ 
} 
+0

ध्यान दें कि क्या से मैं जानता हूँ कि, एक 'वर्णन * बयान' समारोह बल्कि धीमी है जोड़ सकते हैं। उम्मीद है कि आपको इसका अक्सर उपयोग नहीं करना पड़ेगा। –

+0

इस साल 2012 में जवाब दिया गया था ... जब तक इस लेखन के समय इस समय तक, आप अभी भी प्राचीन कैसंद्रा का उपयोग कर रहे हैं, आपको वास्तव में वर्तमान दस्तावेज़ीकरण को पढ़ना चाहिए। – Jasonw

9

के अनुसार: https://issues.apache.org/jira/browse/CASSANDRA-2477, कैसेंड्रा 1.1 के रूप में, अब आप कर सकते हैं:

USE system; 
SELECT * FROM schema_keyspaces; 
+0

मुझे खेद है, मैंने गलती से 'संपादन स्वीकार करें' पर क्लिक किया। कृपया उन सामानों को न जोड़ें जो संपादन के लिए प्रश्नों के संदर्भ को बदलते हैं। सुझाए गए संपादन में 'उपयोग प्रणाली 'एक ऐसा उदाहरण है। –

+0

समस्या यह है कि सिस्टम टेबल समय के साथ (जल्दी) बदलते हैं। यह ऐसे कोड का समर्थन करने के लिए एक दुःस्वप्न हो सकता है, खासकर यदि आपको विभिन्न उपयोगकर्ताओं के लिए विरासत समर्थन होना है। सीक्यूएल 3.x में, जानकारी अब 'system_schema' नामक एक कुंजीपटल में है ... –

34

बस ताजा जानकारी उपलब्ध कराने के। CQL3 के रूप में, जबकि एक keyspace बनाने आप अगर इस तरह

CREATE KEYSPACE IF NOT EXISTS Test 
    WITH replication = {'class': 'SimpleStrategy', 
         'replication_factor' : 3}