इस समस्या आ का एक तरीका हो सकता है:
पते/फोन नंबर/पोस्ट कोड आदि की तीन दृश्य को अपनाने
पहली बार देखने पते (कहते हैं) कई लाइनों के रूप में की है पाठ का
दूसरा दृश्य पता टैग (नीचे इस पर अधिक) है।
तीसरे दृश्य पतों
अन्य घटक है कि मान्यता के लिए एक सामान्य प्रक्रिया (वर्ग/ट्रिगर) कर रहे हैं इस दृष्टिकोण के लिए आवश्यक हैं के लिए सत्यापन नियमों का है; प्रिंटिंग उद्देश्यों के लिए एक स्वरूपण दिनचर्या; और एक नियम आधार, एक प्रशासक तंत्र के साथ सत्यापन नियमों को अद्यतन करने के लिए। एक "कैचॉल" नियम जो कहता है कि यह एक मान्य पता है - इसे मैन्युअल रूप से सत्यापित किया गया है - भले ही यह आपके नियम आधार के नियमों में से कोई भी न हो।
घटक: 1 पता कई पंक्तियों से बना है जिनमें से प्रत्येक में अनुक्रम अनुक्रम संख्या और कई टैग (आमतौर पर एक) हैं। एक पता रेखा, नियमों के नियमों और नियमों के संस्करणों के साथ भी संबद्ध होना संभव है, जिनके खिलाफ उन्हें सत्यापित किया गया था, लेकिन यह एक परिशोधन है जो आपके अपडेट/डालने/गणना दरों पर निर्भर करता है।
2 पता टैग शहर की तरह चीजें हैं; नगर; घर का नंबर; और पते की विभिन्न पंक्तियों की पहचान करें। एक पता रेखा होना संभव है जिसमें कोई टैग न हो, लेकिन इस मामले में, लाइनों के पूर्ण सेट पर केवल सामान्य खोज (उदाहरण के लिए न्यूयॉर्क) संभव है। "सिटी = न्यूयॉर्क" के लिए खोजें) संभव नहीं हैं।
3 डोमेन विशिष्ट भाषा में लिखे गए नियम। यह नियमित अभिव्यक्ति हो सकती है; आपके लिए विशिष्ट भाषा; आपकी सामान्य विकास भाषा (हालांकि यह कम से कम उपयोगी दृष्टिकोण होने की संभावना है, क्योंकि प्रोग्रामिंग भाषाओं को इस तरह के नियमों के बारे में समझदारी से और सटीक रूप से प्रतिनिधित्व करना मुश्किल हो सकता है। प्रतिनिधि नियमों का एक उदाहरण हो सकता है (आपके विवरण से निपटना अमेरिका ज़िप कोड) - पहले पांच पात्रों अंकों का होना चाहिए
पहले पांच पात्रों एक "क्षेत्र कोड" का प्रतिनिधित्व
जिप कोड एक पते की अंतिम पंक्ति में होना चाहिए
।।। नियम समूहों और सेटों (जैसे यूएस पते) में विभाजित किए जाएंगे नियम नियमों के साथ-साथ पता डेटा को संदर्भित करने में सक्षम होना चाहिए।
आपकी सत्यापन दिनचर्या को पते की रेखाएं लेने और नियमों को लागू करने की आवश्यकता होती है (आमतौर पर सेट द्वारा)। यह एक बुलियन - वैध या अमान्य पता और वैकल्पिक रूप से नियमों के सेट के खिलाफ मान्य होगा।
प्रिंटिंग दिनचर्या फिर से एक निर्धारित पता प्रदान करने के लिए पता डेटा पर उचित नियम सेट (संभवतः आपके सत्यापन सेट से अलग) लागू करेगी।
मुझे आशा है कि अन्य componenets समग्र दृष्टिकोण से स्पष्ट कर रहे हैं।
यह दृष्टिकोण इन मुद्दों अपने प्रश्न में पहचान के साथ सौदा करने का इरादा है:
फोन कोड का विभाजन।
उपयोग में संभावित क्षेत्र कोड की सीमित संख्या।
विशिष्ट उद्देश्यों के लिए आरक्षित फोन नंबरों के ब्लॉक।
डेटा का सामान्यीकरण - डेटा सामान्यीकृत है। हालांकि, इस प्रकार के सामान्यीकरण (रिवर्स इंडेक्सिंग) का उपयोग आमतौर पर डेटा वेयरहाउस सॉफ़्टवेयर और बड़े पैमाने पर वास्तविक समय सेंसर जानकारी वाले डेटाबेस को छोड़कर नहीं किया जाता है। यह संभव है कि इस समाधान को लागू करने में आप डुप्लिकेट डेटा (नियंत्रण) को चुनने का अंत कर सकते हैं। यह समाधान का एक निहित हिस्सा नहीं है, लेकिन सुविधाजनक हो सकता है।
मैं दृढ़ता से सुझाव देता हूं कि प्रत्येक संस्करण के लिए कक्षाएं न जोड़ें - यह स्केलेबल और न ही बनाए रखने योग्य है।
खोज नीचे विस्तार से कवर किया गया है।
राक्षस तालिकाओं से बचा जाता है - नियम आधार वास्तविक डेटा के अतिरिक्त सैकड़ों से कम हजारों नियमों का आदेश होने की संभावना है।
समाधान स्केलेबल है - कोई बस नियम जोड़ता है या संशोधित करता है।
और भी कुछ संबंधित समस्याओं से निपटने के।
भले ही आप पते के राष्ट्रीय स्वरूपों के लिए सत्यापन नियम लागू कर सकें, फिर भी हमेशा विशेष देश के मानकों के अपवाद होंगे। मेरा अपना पता एक उदाहरण है - मैं एक नाव पर रहता हूं, और डाकघर मानक पते के ऊपर और ऊपर, मेरे पते में शामिल अतिरिक्त जानकारी की आवश्यकता है। इस तरह के विसंगतियों को हमेशा मैन्युअल हस्तक्षेप की आवश्यकता होती है - इसलिए मैन्युअल हस्तक्षेप द्वारा स्वीकार किए जाने वाले नियम।
विभिन्न देशों के पते के लिए अलग-अलग आदेश हैं - उदाहरण के लिए चीन में पते लिखे गए हैं: देश; पोस्ट कोड; शहर; सिटी जोन; सड़क का नाम; घर का नंबर; व्यक्ति का नाम
किसी ऐसे क्षेत्र से पहले पते की स्वीकृति जहां आपके पास कोई नियम नहीं है, और देश के नियम आपके द्वारा रिकॉर्ड किए गए किसी भी से अलग हैं।
लोग "उनके" पते से अलग (उदाहरण के लिए एक कार्यालय) पते का उपयोग करना चाहते हैं।
विशिष्ट व्यक्तिगत संबोधन चिंताओं - कोई अपने निकटतम और प्यारे से अपने पत्राचार को छिपाने की इच्छा रखता है।
समाधान को समस्याओं की तरह बढ़ाया जा सकता है - उदाहरण के लिए किसी व्यक्ति का जिक्र करना। इसमें खिताब शामिल हो सकते हैं - डॉ, रेव, आदि; हाइफेनेटेड नामों को गुणा करें (ffoulkes-symthe); योग्यता (सीपीए, बीएससी, आदि; और पारिवारिक योग्यता (तीसरा, आदि); और व्यक्ति संस्कृति के आधार पर नामकरण के कई तरीके (भारतीय उपमहाद्वीप के लोगों के पास अक्सर परिवार का नाम नहीं होता है, और प्रत्येक के पास एक अलग उपनाम होगा ।)
को संबोधित कर नियमों में किए गए परिवर्तन (एक नया विकास के लिए एक नया पिन कोड के अलावा जैसे) आसानी से और जल्दी बनाया जा सकता है
समस्याएं अभी भी उत्पन्न होने वाले हैं:।
खोज कुछ हद तक अधिक जटिल होगी cated - विशिष्ट पता फ़ील्ड के बजाय सभी पंक्तियों और पते के संबंधित टैग खोजने की आवश्यकता
इस प्रकार का नियम आधार बनाने में समय लगता है - जबकि प्रारंभिक नियम लोडिंग काफी तेज़ी से किया जा सकता है - उदाहरण आपके सामने मौजूद हैं प्रश्न - एक पूर्ण सेट की तरह कुछ भी केवल अपवादों और विसंगतियों से निपटने के बाद ही उपस्थित होगा।
संपादित करें:
मैं जब मैं अपने प्रतिक्रिया में लिखा था बिगटेबल के बारे में पता नहीं था। इस पर बहुत तेज नजर रखने के बाद, यह एक बहुत ही समान अवधारणा प्रतीत होता है। एसीआईडी विकास में इसे लागू करने के लिए मुझे लगता है कि यह संपर्क डेटासेट के लिए और नियम डेटा बेस के लिए संभव है।अनुभव से मुझे पता है कि यह इस तरह के वातावरण में संपर्क विवरण के 5 * 10^7 सेटों तक आसानी से स्केल करता है (हालांकि पृष्ठभूमि के साथ, संपर्क विवरण की गैर-महत्वपूर्ण महत्वपूर्ण सत्यापन)।
एसीआईडी / एसक्यूएल मामले पर विचार करते हुए "व्यू" शब्द का उपयोग करने से मुझे उस दिशा में एक खरगोश शुरू हो सकता है जिस पर मेरा इरादा नहीं था। एक और उचित शब्द अवलोकन या दृष्टिकोण हो सकता है (कोई रिलेशनल मॉडल या डीबीएमएस फ्रेट संलग्न नहीं है)। असल में मैं उन सभी चीजों पर विचार करता हूं जिन्हें मैंने एक उम्मीदवार के रूप में संदर्भित किया है, उम्मीदवार तालिका के रूप में।
मैंने चर्चा में सहायता के लिए मेरे दृष्टिकोण के लिए एक स्कीमा का एक स्केच सेट किया। यह स्कीमा कुछ एम: एन कनेक्शन का उपयोग करती है, जो स्पष्ट रूप से सहयोगी तालिकाओं के रूप में कार्यान्वयन में सामान्यीकृत की जाएगी। यह पाठक के लिए एक अभ्यास के रूप में छोड़ दिया गया है :-)। मैंने कुछ तालिकाओं में कुछ नमूना विशेषताओं और डेटा डाल दिए हैं।
स्केच में, नियम सेट के संपादन; नियम; और अन्य नियमों (प्रशासनिक आवेदन) से संबंधित नियम स्पष्ट रूप से पता उपयोगकर्ता पर एसक्यूएल सामान्य सीआरयूडी संचालन द्वारा एसीआईडी गुणों के साथ किया जा सकता है; पता; और पता रेखा उपयोगकर्ता द्वारा इनपुट के रूप में पता पंक्तियों को लेते हुए, एसीआईडी / एसक्यूएल तरीके से समान रूप से किया जा सकता है। आप सड़क नाम से घर संख्या (मेरे उदाहरण में) अलग करने के लिए लेनदेन के कुछ प्रीप्रोकैसिंग करना चाह सकते हैं और इसके परिणामस्वरूप "सड़क नाम" नियम खो सकते हैं। अन्य प्री-प्रसंस्करण जो उपयोगी होने की संभावना है पूंजीकरण का मानकीकरण है - हालांकि यह सत्यापन चरण का हिस्सा भी हो सकता है। इनपुट के रूप में पूरी लाइन "9 रिचमंड रोड" को स्वीकार करना भी संभव है, और इसे "मान्यताओं की आवश्यकता" के रूप में टैग करें। किसी भी मामले में इस लेनदेन एसीआईडी बनाने के बारे में कोई समस्या नहीं है (जिसे मैं जानता हूं)।
जहां मैं कम स्पष्ट हूं कि सत्यापन और बाद में टैगिंग को एसीआईडी / एसक्यूएल लेनदेन में कैसे शामिल किया जा सकता है। ऐसा लगता है कि प्रमाणीकरण चरण एसीआईडी बनाने के लिए, नियम सेट के खिलाफ परीक्षण के आवेदन को ऑर्डर करना आवश्यक हो सकता है (पहले परीक्षण किए जाने वाले सबसे आम मामलों के साथ, और सत्यापन सफल होने पर रोकना)। यह भी आवश्यक हो सकता है कि लेनदेन एसीआईडी बनाने के लिए, केवल अपने सबसे आम मामले के खिलाफ मान्य करने के लिए, दूसरों को "आवश्यकता सत्यापन" के रूप में टैग किया गया, जिसे तब पृष्ठभूमि कार्य के रूप में किया जाएगा।
सत्यापन की वास्तविक कार्य पूरे नियम आधार, सेट द्वारा निर्धारित की जाँच, जब तक नियमों का एक सेट पाया जाता है सभी इनपुट लाइनों की पुष्टि करता है शामिल है। वहाँ स्पष्ट रूप से डेटा से ही संभावित दिशा निर्देश हैं - अगर आप दर्ज की गई है देश, तो यह दोनों के लिए सक्षम बनाता आप में देश के साथ लाइन टैग करने के लिए सीधे, और शासन के लिए एक फिल्टर सेट आप के खिलाफ परीक्षण करने के लिए है प्रदान करता है। मुझे खेद है, लेकिन जहां तक मैं इस पहलू को अब तक ले सकता हूं।
संयोग से, यह स्केच स्कीमा केवल कुल सामान्यीकरण की ओर भाग लेती है। तैयार किए गए अनुसार, प्रत्येक पते में पता पंक्तियों का अपना अनुक्रम होता है, और इनपुट के रूप में अलग-अलग पंक्तियों से परे डेटा का कोई सामान्यीकरण नहीं होता है (प्लस या किसी भी प्री-प्रोसेसिंग को घटाएं जिसे आप करना चुनते हैं)। पता और पता रेखा एम: एन के बीच संबंध बनाकर और यह सुनिश्चित करना कि पता रेखा तालिका का रेखा क्षेत्र इसकी प्राथमिक कुंजी है, इस दृष्टिकोण को और भी आगे लेना संभव है।
जब इस अवधारणा के लिए अधिक विस्तृत संसाधनों की बात आती है तो मुझे दो समस्याएं होती हैं।
पहली (और तुच्छ) एक ही है कि इस अवधारणा को अपने मूल काम करते हैं, और विकास के वातावरण प्रौद्योगिकी और विकास के तरीकों में एक विशेष रुचि के साथ आईटी रणनीति सलाहकार एक विधि सलाहकार के रूप में बीस से अधिक वर्षों में मेरे अनुभव के आधार पर है। मेरे सभी कामकाजी जीवन वातावरण जहां सम्पर्क करने का विवरण एक प्रमुख चिंता का विषय (वित्तीय और विनियामक/विधायी कारणों के लिए) किया गया है में खर्च किया गया है। वास्तव में अपने प्रश्न का अपने मूल प्रतिक्रिया मेरे मन में पूरा किया गया इससे पहले कि मैं अपने प्रश्न पढ़ने समाप्त किया था, हालांकि यह तो इसे टाइप किया पाने के लिए एक घंटे का तीन चौथाई के बारे में मुझे लिया।
अधिक महत्वपूर्ण कारण यह है कि इस विचार के कुछ स्रोत गोपनीय या गुप्त हैं। मेरे कामकाजी करियर में, मेरे काम का हिस्सा प्रौद्योगिकी विकास के साथ अद्यतित है, और दस साल के समय में व्यापार पर प्रौद्योगिकी के प्रभाव की भविष्यवाणी करता है। इसमें अनुसंधान प्रयोगशालाओं का दौरा करने और विभिन्न विषयों के बारे में प्रमुख शोधकर्ताओं के साथ चर्चा करने शामिल थे। जबकि मैं नहीं हूं, स्वयं, प्रथम श्रेणी के शोधकर्ता, मैं दूसरों के शोध प्रयासों को संश्लेषित करने में बहुत अच्छा प्रतीत होता हूं। हालांकि, ऐसा करने के दौरान मैं हमेशा वाणिज्यिक गोपनीयता और/या सैन्य गोपनीयता की शर्तों के तहत काम कर रहा था। मेरे किसी भी उत्तर ने इन शर्तों का उल्लंघन नहीं किया है। इसके परिणामस्वरूप मैं केवल अस्पष्ट दिशानिर्देश दे सकता हूं कि जानकारी कैसे प्राप्त की गई थी।
मेरे स्रोत हैं:
एक संगोष्ठी आईबीएम में, द्वारा सी जे तिथि का आयोजन किया, सामान्यीकरण की आगे पहुँच और रिलेशनल मॉडल (नहीं रिलेशनल मॉडल एसक्यूएल में लागू के रूप में) की खोज। इसमें पांचवें (?) और छठे (?) सामान्य रूपों की खोज शामिल थी।
मेटा डेटा पर चर्चा करते समय, ओरेकल तकनीकी कर्मचारियों के साथ चर्चा की एक श्रृंखला; मेटा मेटा डेटा; और ऐसे अन्य सामान्यीकरण।
यूके स्थित सैन्य अनुसंधान प्रतिष्ठान के साथ चर्चा। हालांकि यह कुछ साल पहले था, मुझे यकीन नहीं है कि जिन विषयों पर हम चर्चा कर रहे थे उन पर कुछ भी प्रकाशित किया गया है या नहीं।
एक बड़े वित्तीय संस्थान में काम कर रहा है जिसका संपर्क विवरण सिस्टम मेरे प्रस्ताव की तरह आकार दिया गया था, लेकिन गैर-संबंधपरक जड़ों से उत्पन्न हुआ; और जिसके लिए मूल तकनीकी गति एक युग में अंतरिक्ष की बचत थी जब स्मृति, लगातार स्मृति, और बैक अप क्षमता एक प्रमुख चिंता थी।
संपादित करें:
मैं ऊपर संपादित करें पूरा, अपने कंप्यूटर चुप रहो, कुछ घर के काम किया था, बिस्तर के पास गया, ley नीचे, अपनी आँखें बंद कर, और मैं भाग का हल था मैं उस पिछले संपादन में पूरा नहीं कर सका।
हालांकि जब काम के अधिकांश टैगिंग/सत्यापन करना वास्तव में पढ़ना और तुलना करना है तो अपडेट होने पर अपडेट होते हैं। जैसे कि यह आशावादी लॉकिंग के लिए एक प्रमुख उम्मीदवार है।
Start read transaction
Read set of address lines where one or more lines are "Needs Validation"
Read all rule set names
Read all rule lines which belong to the first rule set
If read is not successful then abandon and start process again
End read transaction
Do while address not validated and not end of rule sets
If set of address lines validates against first rule set then
prepare transaction by allocating the tags to be applied to each line of the
address and temporarily recording the rule set that has validated the address
Start validation transaction
Read same set of address lines and rule set (all fields)
Is the address and the rule set identical to what was obtained in the read
transaction?
If identical then
create appropriate set of Tag Usage records
if successful then
commit validation transaction
end overall process
if not successful or
if not identical then
rollback validation Tag and Tag Usage
** This is the point where there might be problems if the rule set has
changed since reading it. The ordering may have changed due to amendment
deletion or creation of rule sets. This is the reason for the read of all
the read set names initially. However if there is such a change one can
afford to fail to validate and move on, aiming to come back to this address
later.
End of validation transaction
Start read transaction
Read rule lines which belong to the next rule set
End read transaction
End while loop
If end of rule sets reached and address not validated
begin create Tag Usage transaction
create tag usage pointing to Tag "Manual Intervention needed"
end create Tag Usage transaction
सभी तीन लेन-देन की (पता, पता पंक्ति अद्यतन, नियम सेट, नियम अद्यतन, और टैग, टैग प्रयोग अपडेट) प्रकार एसिड शर्तों को पूरा: छद्म कोड में इस प्रकार दिखाई देगा। मैं दृढ़ता से विश्वास करता हूं (लेकिन साबित नहीं हुआ है) कि इन तीन प्रकार के लेन-देन के किसी भी इंटरलिविंग, संयोजन या अंतर को निर्धारित करने से एसीआईडी की स्थिति भी पूरी हो जाएगी।
यह वास्तव में दिलचस्प समस्या है। क्या आप इन डेटा को स्टोर प्रक्रिया या ट्रिगर के भीतर से सत्यापित करना चाहते हैं, या आप डीबी क्लाइंट को सत्यापित करना चाहते हैं? –
मुझे एहसास है कि कार्यान्वयन में इनमें से एक मिश्रण की आवश्यकता हो सकती है, लेकिन सिद्धांत में मुझे लगता है कि संग्रहीत प्रक्रियाएं और ट्रिगर्स सबसे अच्छा विकल्प हो सकता है। – Incognito