के लिए डेटा स्ट्रक्चर के सरल, आधुनिक, मजबूत, पारदर्शी दृढ़ता, मैं पारदर्शी रूप से पर एक समाधान की तलाश कर रहा हूं, परिपत्र संदर्भों के बिना पर्ल डेटा संरचनाओं (ऑब्जेक्ट्स भी नहीं, लेकिन वस्तु समर्थन एक प्लस होगा) जारी रहेंगे। मुझे बैकएंड के बारे में बहुत कुछ परवाह नहीं है, लेकिन मैं JSON पसंद करूंगा। वस्तुओं की संख्या अपेक्षाकृत कम होगी (कुछ हज़ारों हैशफ प्रत्येक के साथ लगभग 5 कुंजी)। "पारदर्शी" दृढ़ता से मेरा मतलब है कि जब भी मैं इन-मेमोरी डेटा संरचना अद्यतन करता हूं, तो मैं भंडारण बैकएंड में परिवर्तन नहीं करना चाहता हूं। कोई अद्यतन 2003 पर्ल
- डेव Rolsky के मॉड्यूल के Perl Object-Oriented Persistence संकलन:
my $ds; ... # load the $ds data structure from 'myfile' print $ds->{foo}->{bar}; # baz $ds->{foo}->{bar} = 'quux'; ... program dies, but the updated %hash has been persisted automatically in 'myfile' # in another invocation print $ds->{foo}->{bar}; # quux
अब तक मैं देखा है:
यहाँ कोड आदर्श की तरह यह कैसी दिखाई देगी फोय का MasteringPerl - Chapter 14. Data Serialization - डीबीएम :: दीप, एक अच्छा उम्मीदवार के बारे में बात करता है। मेरी इच्छा है कि धारावाहिक और पारदर्शी दृढ़ता के बीच एक स्पष्ट अंतर था।
- Persistent - कोई अद्यतन 2000
- SPOPS के बाद से - 2004
- SLOOPS केवल CPAN पर एक संस्करण है के बाद से परित्यक्त 2005
- Tangram से - बहुत छोड़ दिया लग
- Tie::File::AsHash पारदर्शी हठ, लेकिन केवल single-level hashes का समर्थन करता है है
- MooseX::Storage, Storable और JSON अच्छा लग रहा है, लेकिन वे केवल क्रमबद्ध हैं, जारी नहीं रहते खिलाडि़यों चौखटे
- DBIx::Class, Class::DBI, Fey::ORM, ORM, Rose::DB OO-RDBM मानचित्रकारों हैं, और I'd rather not use a database backend
- DB_File BerkeleyDB की आवश्यकता है
- KiokuDB कार्य
मैं केवल एक मिल गया है के लिए बहुत जटिल लगता है वादा मॉड्यूल, DBM::Deep। कोड उदाहरण के समान है, और आप डेटा संरचना को
my $ds = DBM::Deep->new("myfile.db");
प्रारूप बाइनरी के साथ लोड कर सकते हैं। कोई बड़ी समस्या नहीं है, क्योंकि मैं इसे मानव-पठनीय प्रारूप में निर्यात करने के लिए JSON का उपयोग कर सकता हूं।
तो, क्या मैं एक मॉड्यूल खो रहा हूं, और क्या मैं समस्या को सही तरीके से देख रहा हूं?
मैं पारदर्शी दृढ़ता की तलाश में हूं (मुझे उम्मीद है कि यह सही शब्द है?) "पारदर्शी" दृढ़ता से मेरा मतलब है कि जब भी मैं इन-मेमोरी अपडेट करता हूं तो मैं भंडारण बैकएंड में परिवर्तन नहीं करना चाहता डेटा संरचना। मैंने सवाल संपादित किया है; इस पर ध्यान दिलाने के लिए धन्यवाद। –