{"id":2122,"date":"2022-11-01T19:22:41","date_gmt":"2022-11-01T18:22:41","guid":{"rendered":"https:\/\/x-cross.cloud\/it\/?p=2122"},"modified":"2022-11-30T10:20:14","modified_gmt":"2022-11-30T09:20:14","slug":"blocco-del-record","status":"publish","type":"post","link":"https:\/\/www.x-cross.cloud\/it\/avanzate-funzionalita-di-sistema\/database\/blocco-del-record\/","title":{"rendered":"Blocco del record"},"content":{"rendered":"<p>X-Cross offre un blocco record avanzato e completamente funzionale. Il blocco del record non \u00e8 sulla singola tabella, ma su tutto l&#8217;oggetto complesso (es. fattura, ordine, ecc.) che pu\u00f2 essere composto da pi\u00f9 tabelle.<!--more--><\/p>\n<p>Il blocco dei record (lock) \u00e8 una delle caratteristiche di un ERP che pi\u00f9 spesso viene sottovalutata, ma pu\u00f2 causare problemi.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"size-medium wp-image-2126 aligncenter\" src=\"https:\/\/www.x-cross.cloud\/wp-content\/uploads\/lock.jpg\" alt=\"\" width=\"300\" height=\"300\" \/><\/p>\n<h4>Lock ottimistico<\/h4>\n<p>Nel blocco ottimistico il conflitto pu\u00f2 verificarsi, ma viene rilevato in fase di scrittura, verificando se, tra la lettura e la scrittura dei dati, alcune modifiche sono state eseguite da un altro utente. Questo approccio pu\u00f2 essere accettabile lavorando su una singola tabella (anche se la modifica applicata andr\u00e0 persa), ma non \u00e8 sufficiente quando l&#8217;utente modifica oggetti complessi, ad esempio una fattura o un altro documento commerciale.<\/p>\n<h4>Lock pessimistico<\/h4>\n<p>Questo tipo di blocco record \u00e8 molto pi\u00f9 sicuro, ma ci sono ancora due problemi:<\/p>\n<ul>\n<li>Rilevare il momento in cui inizia la modifica<\/li>\n<li>Lavorare su oggetti multilivello complessi<\/li>\n<\/ul>\n<h4>Rilevare il momento in cui inizia la modifica<\/h4>\n<p>In molti ERP l&#8217;utente, se abilitato, entra nella finestra dati sempre in modalit\u00e0 inserimento ovvero i campi sono sempre modificabili. L&#8217;intenzione di aggiornare il database viene mostrata in seguito, utilizzando un qualche tipo di comando di &#8220;salva&#8221;, come accade in un word processor o in un foglio di calcolo. Quindi, come pu\u00f2 il programma sapere se una finestra \u00e8 aperta solo per leggere i dati o per modificare un record? In questa situazione, il blocco del record pessimistico \u00e8 quasi impossibile.<\/p>\n<p>In X-Cross, invece, le finestre sono sempre aperte in modalit\u00e0 visualizzazione, e i campi non sono modificabili.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2123\" src=\"https:\/\/x-cross.cloud\/it\/wp-content\/uploads\/Screenshot-2022-11-01-at-19.14.03.jpg\" alt=\"\" width=\"237\" height=\"29\" \/><\/p>\n<p>L&#8217;utente, nella finestra, pu\u00f2 inserire un nuovo record o modificare il record esistente, utilizzando un comando. In questo momento, e non prima, X-Cross rilegge i dati e contemporaneamente applica un lock al record.<\/p>\n<h4>Lavorare su oggetti multilivello complessi<\/h4>\n<p>Un altro problema molto comune \u00e8 quando viene modificato un oggetto complesso.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-2129 aligncenter\" src=\"https:\/\/www.x-cross.cloud\/wp-content\/uploads\/Screenshot-2022-11-01-at-19.18.49.jpg\" alt=\"\" width=\"537\" height=\"406\" \/><\/p>\n<p>Immaginate ad esempio una fattura, che \u00e8 composta almeno da un&#8217;intestazione e da una o pi\u00f9 righe. Se viene inserita una nuova riga, dal punto di vista del database viene inserita un nuovo record nella tabella righe, ma in realt\u00e0 la fattura viene modificata.<\/p>\n<p>In questo caso il blocco ottimistico sulle righe di fattura \u00e8 del tutto inefficace, in quanto nessuna riga viene modificata. Il lock pessimistico \u00e8 quindi d&#8217;obbligo, ma questo soffre del problema di rilevare il momento in cui inizia l&#8217;editing, quindi raramente \u00e8 possibile.<\/p>\n<h5>Aggiornamento di oggetti multilivello in un&#8217;unica transazione<\/h5>\n<p>Oltre a quanto gi\u00e0 esposto, il lock su oggetti complessi non richiede solo un lock pessimistico, ma anche l&#8217;insert-update dell&#8217;intero oggetto deve avvenire nella stessa transazione. \u00c8 proprio cos\u00ec che funziona X-Cross: tutti gli aggiornamenti, inserimenti e cancellazioni di un singolo oggetto complesso multilivello vengono eseguiti nel database in un&#8217;unica transazione.<\/p>\n<p>Lock &#8220;orfani&#8221;.<\/p>\n<p>Un problema comune, con il lock pessimistico, \u00e8 la possibilit\u00e0 di lasciare nel database i lock &#8220;orfani&#8221;, che non vengono pi\u00f9 utilizzati. Ad esempio, se un computer si arresta in modo anomalo o si spegne improvvisamente, i blocchi dei record possono rimanere attivi nel database.<\/p>\n<p>Per evitare questo problema, X-Cross in ogni transazione controlla tutti i lock orfani, la cui sessione non \u00e8 pi\u00f9 attiva, e li cancella.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>X-Cross offre un blocco record avanzato e completamente funzionale. Il blocco del record non \u00e8 sulla singola tabella, ma su tutto l&#8217;oggetto complesso (es. fattura, ordine, ecc.) che pu\u00f2 essere composto da pi\u00f9 tabelle.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[30],"tags":[],"class_list":["post-2122","post","type-post","status-publish","format-standard","hentry","category-database"],"_links":{"self":[{"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/posts\/2122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/comments?post=2122"}],"version-history":[{"count":0,"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/posts\/2122\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/media?parent=2122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/categories?post=2122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.x-cross.cloud\/it\/wp-json\/wp\/v2\/tags?post=2122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}