2009-06-15 11 views
7

स्पष्ट तरीका क्लोजर कंट्रीब से जेडीबीसी समर्थन को लोड करना और किसी तालिका में मानचित्र/संरचना का अनुवाद करने के लिए कुछ फ़ंक्शन लिखना है। इसका एक दोष यह है कि यह बहुत लचीला नहीं है; आपकी संरचना में बदलावों के लिए डीडीएल परिवर्तनों की आवश्यकता होगी। इसका मतलब या तो डीडीएल पीढ़ी (कठिन) या हाथ-कोडिंग माइग्रेशन (उबाऊ) लिखना है।क्लोजर में मानचित्र/structs को बनाए रखने का सबसे आसान तरीका क्या है?

कौन से विकल्प मौजूद हैं? उत्तर एसीआईडी ​​होना चाहिए, फाइल को क्रमबद्ध करने का निर्णय लेना आदि।

उत्तर

5

कॉच डीबी के जावा-क्लाइंट lib और clojure.contrib.json.read/write का उपयोग करके मेरे लिए काफी अच्छा काम करता है। हालांकि, कॉच डीबी की स्थिरता गारंटी आपके उद्देश्यों के लिए पर्याप्त मजबूत नहीं हो सकती है।

2

Clj-record क्लोजर में सक्रिय रिकॉर्ड का कार्यान्वयन होना चाहिए जो आपके लिए ब्याज हो सकता है।

7

क्लोजर में नक्शे को बनाए रखने के लिए एक विकल्प जो अभी भी एक संबंध डेटाबेस का उपयोग करता है, मानचित्र डेटा को एक अपारदर्शी ब्लॉब में संग्रहीत करना है। यदि आपको रिकॉर्ड्स की खोज करने की क्षमता की आवश्यकता है तो आप अलग-अलग तालिकाओं में इंडेक्स स्टोर कर सकते हैं। उदाहरण के लिए आप पढ़ सकते हैं कि कैसे FriendFeed MySQL के शीर्ष पर स्कीमलेस डेटा संग्रहीत कर रहा है - http://bret.appspot.com/entry/how-friendfeed-uses-mysql

एक और विकल्प डेटाबेस में डेटा संग्रहीत करने के लिए एंटीटी-एट्रिब्यूट-वैल्यू मॉडल (ईएवी) का उपयोग करना है। आप विकिपीडिया पर ईएवी के बारे में अधिक पढ़ सकते हैं (मैं एक लिंक पोस्ट करूंगा लेकिन मैं एक नया उपयोगकर्ता हूं और केवल एक लिंक पोस्ट कर सकता हूं)।

फिर भी एक और विकल्प जावा के लिए बर्कलेडीबी का उपयोग करना है - यह एक मूल जावा समाधान है जो एसीआईडी ​​और रिकॉर्ड स्तर लॉकिंग प्रदान करता है। (एक लिंक पोस्ट करने में एक ही समस्या)।

+1

+1 ताकि उम्मीद है कि आप कुछ समय जल्द ही :-) – mikera

2

आप जावा-आधारित ग्राफ़ डेटाबेस, जैसे Neo4J में से किसी एक को आजमा सकते हैं। इसे हस्मैप इंटरफ़ेस को उचित रूप से पारदर्शी बनाने के लिए कोड करना आसान हो सकता है।

+0

कुछ Clojure साथ Neo4j उपयोग कर रहे हैं और अधिक लिंक का उपयोग शुरू कर सकते हैं, है विभिन्न रैपर कार्यान्वयन के लिए यहां एक नज़र डालें: http://wiki.neo4j.org/content/Clojure – nawroth

1

मोंगोडीबी और इसका ढांचा congomongo (lein: [congomongo "0.1.3-SNAPSHOT"]) मेरे लिए काम करता है। यह स्कीमलेस डेटाबेस के साथ अविश्वसनीय अच्छा है, और congomongo साथ मिलकर काफी आसान है। MongoDB प्रत्येक दस्तावेज़ में इसे पहचानने के लिए एक _id-field जोड़ता है, और क्लोजर-मैप्स और मोंगो-मैप्स के बीच काफी पारदर्शिता है।

https://github.com/somnium/congomongo

9

FleetDB एक डेटाबेस Clojure में लागू है। मानचित्र/structs के साथ काम करने के लिए इसका एक बहुत ही प्राकृतिक वाक्यविन्यास है, उदा। सम्मिलित करने के लिए:

(client ["insert" "accounts" {"id" 1, "owner" "Eve", "credits" 100}]) 

तब चयन

(client ["select" "accounts" {"where" ["=" "id" 1]}]) 

http://fleetdb.org/

+1

पिछले 3 वर्षों में कोई प्रतिबद्धता नहीं है, और ऐसा लगता है कि .org डोमेन की नई स्वामित्व है। https://github.com/mmcgrana/fleetdb – Joanis

संबंधित मुद्दे

 संबंधित मुद्दे