CZ20004827A3 - Method for maintaining logical integrity among objects in computer interactive applications, its use for data sharing system in networks, the data sharing system in networks per se, method for data sharing in networks and application of such method - Google Patents
Method for maintaining logical integrity among objects in computer interactive applications, its use for data sharing system in networks, the data sharing system in networks per se, method for data sharing in networks and application of such method Download PDFInfo
- Publication number
- CZ20004827A3 CZ20004827A3 CZ20004827A CZ20004827A CZ20004827A3 CZ 20004827 A3 CZ20004827 A3 CZ 20004827A3 CZ 20004827 A CZ20004827 A CZ 20004827A CZ 20004827 A CZ20004827 A CZ 20004827A CZ 20004827 A3 CZ20004827 A3 CZ 20004827A3
- Authority
- CZ
- Czechia
- Prior art keywords
- server
- value
- application
- client
- values
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 45
- 230000002452 interceptive effect Effects 0.000 title claims description 13
- 230000008859 change Effects 0.000 claims abstract description 49
- 238000012423 maintenance Methods 0.000 claims abstract description 21
- 238000004422 calculation algorithm Methods 0.000 claims description 66
- 238000012545 processing Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 17
- 230000002860 competitive effect Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 11
- 238000004883 computer application Methods 0.000 claims description 8
- 230000009471 action Effects 0.000 claims description 7
- 230000010354 integration Effects 0.000 claims description 5
- 238000012790 confirmation Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012508 change request Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Oblast technikyTechnical field
Vynález se týká způsobu udržování logické integrity mezi objekty v interaktivních aplikacích počítačů, jeho použití pro systém sdílení dat v sítích, dále systému pro sdíleni dat v sítích, způsob sdílení dat v sítích v tomto systému a použití tohoto způsobu sdílení dat.The invention relates to a method for maintaining logical integrity between objects in interactive computer applications, to its use for a network data sharing system, to a network data sharing system, to a method of sharing data on networks in this system, and to using this method of data sharing.
Dosavadní stav technikyBACKGROUND OF THE INVENTION
Interaktivní, zejména databázové aplikace, se skládají z množství objektů, například tabulek, jejich sloupců, komponent uživatelského rozhraní a buněk, které jsou vzájemně vázány logickými vztahy. Aby logické vztahy v dané aplikaci byly platné, vytvářejí se pro každý takový vztah v aplikaci algoritmy pro jeho naplnění (etablování, zavedení) a následné udržování (zachování integrity), zejména při změnách v hodnotách objektů. Příklad logických vztahů mezi objekty v aplikaci může být následující:Interactive, especially database applications, consist of a number of objects, such as tables, columns, user interface components, and cells that are bound together by logical relationships. In order for the logical relationships in the application to be valid, algorithms are created for each such relationship in the application to establish (establish, deploy) and then maintain (maintain integrity), especially when changes in object values. An example of logical relationships between objects in an application can be as follows:
• Mezi komponentou uživatelského rozhraní a sloupcem tabulky může existovat logický vztah „zobrazení hodnoty sloupce“, to je daná komponenta uživatelské rozhraní zobrazuje hodnoty daného sloupce (znaky, čísla).• There may be a logical “column value display” relationship between the UI component and the table column, that is, the UI component displays the values of that column (characters, numbers).
• Mezi dvěma tabulkami může být vztah „výběr z tabulky dle kritéria, tj. jedna tabulka obsahuje výběr z druhé tabulky na základě daného kriteria.• Between two tables there may be a relation “selection from the table according to the criterion, ie one table contains the selection from the other table based on the given criteria.
• Mezi buňkou a sloupcem tabulky může existovat vztah „součet sloupce, tj. daná buňka obsahuje součet hodnot sloupce ze všech řádek dané tabulky.• There may be a “column sum” relationship between a cell and a column in a table, ie the cell contains the sum of column values from all rows in the table.
Nevýhodou současného stavu je skutečnost, že je velmi pracné vytvářet udržovací algoritmy a rovněž provádět jakékoli jejich změny. V některých případech je z hlediska využití procesoru (CPU) a pracnosti vývoje udržovacích algoritmů nákladné průběžně zachovávat integritu ve vztazích mezi jednotlivými objekty.The disadvantage of the current situation is that it is very laborious to create maintenance algorithms and also make any changes to them. In some cases, it is costly to maintain integrity in relationships between objects in terms of CPU utilization and maintenance algorithm development.
V mnoha případech je levnější i přijatelnější, aby tato integrita dočasně zachovávána nebyla. Týká se to například aplikací, které pracuji s velkým množstvím dat, vztahů, případně i uživatelů. V takových aplikacích často není ani možné, z hlediska výkonu počítače a paměťové kapacity, vztahy mezi objekty naplnit všechny a stále je iIn many cases, it is cheaper and more acceptable not to maintain this integrity temporarily. This applies, for example, to applications that work with a large amount of data, relationships, or even users. In such applications, it is often not even possible, in terms of computer performance and memory capacity, to fulfill all relationships among objects and still is
t · * » · · · · » · · · ··«*·· • · ♦ · · · · · • til ··· ·· ···· ·· ·· udržovat. V takovém případě je zapotřebí volit, ve kterých časových okamžicích je nutné tuto integritu obnovit. Mohou přitom vzniknout následující situace. Buďto jsou udržovací algoritmy vyvolávány příliš často, což zbytečně zatěžuje procesor počítače a prodlužuje odezvu počítače k uživateli, anebo se vyvolávají nedostatečně často a uživateli jsou v takovém případě prezentovány nekonzistentní údaje, to je údaje, které neodpovídají v daném okamžiku logickým vztahům v aplikaci.t • Maintain. In such a case, it is necessary to choose at what times it is necessary to restore this integrity. The following situations may occur. Either the maintenance algorithms are invoked too often, unnecessarily burdening the computer's processor and prolonging the computer's response to the user, or invoked too often and inconsistent data presented to the user, i.e. data that does not correspond to the logical relationships in the application at the moment.
Částečným řešením problému pracnosti při vytváření algoritmů pro naplňování a udržování logických vztahů v interaktivních aplikacích jsou tak zvané tabulkové procesory (spreadsheet). V těchto aplikačních prostředích jsou logické vztahy pouze deklarovány. Jejich naplňování a údržbu provádí automaticky na základě těchto deklarací sám tabulkový procesor. Tabulkový procesor pracuje takto:A partial solution to the problem of laboriousness in creating algorithms for fulfilling and maintaining logical relationships in interactive applications is the so-called spreadsheet. In these application environments, logical relationships are only declared. They are automatically filled and maintained on the basis of these declarations by the spreadsheet itself. The spreadsheet works as follows:
• Pamatuje si u každého objektu seznam všech objektů, které na jeho hodnotě závisejí.• Remembers for each object a list of all objects that depend on its value.
• Udržuje si seznam objektů, které je třeba přepočítat. Tento seznam je po prvotním naplnění vztahů prázdný.• Maintains a list of objects to be recalculated. This list is empty after the relationships are initially populated.
• Pokud uživatel změní hodnotu nějakého objektu, zanesou se do seznamu objektů k přepočtení všechny objekty, které na daném změněné hodnotě závisí.• If a user changes the value of an object, all objects that depend on the changed value are entered in the object list for recalculation.
• Poté tabulkový procesor prochází seznam objektů k přepočtení a jeden po druhém přepočítává.• Then the spreadsheet scans the list of objects to recalculate and recalculates one by one.
• Po přepočtení daného objektu jej ze seznamu k přepočtení vyřadí.• After recalculating an object, it removes it from the recalculation list.
• Pokud pří přepočítání dojde k nové hodnotě, která je různá od hodnoty před přepočtením, zařadí nově do seznamu všechny objekty, které na dané hodnotě závisejí.• If a new value that is different from the value before the recalculation occurs, all objects that depend on the value are added to the list.
• Toto provádí tabulkový procesor tak dlouho, dokud není seznam objektů k přepočtení prázdný.• This is done by a spreadsheet program until the list of objects to be recalculated is empty.
Problémy s touto architekturou jsou následující:The problems with this architecture are as follows:
1. Uživatel může měnit hodnoty (provádět interakci se systémem) jenom v období mezi dvěma přepočty. Pokud tabulkový procesor právě provádí časově náročný přepočet nějakého objektu, jako třeba součet sloupce veliké tabulky, musí uživatel čekat než tento přepočet skončí nebo musí být tento přepočet ukončen a později započat celý znovu. To vede buď ke zdržování uživatele nebo k plýtvání1. The user can only change values (interact with the system) between the two conversions. If a spreadsheet is currently performing a time-consuming recalculation of an object, such as the sum of a large table column, the user must wait until the recalculation is complete, or the recalculation must be completed and restarted later. This either leads to user delays or wastage
J « · · ··»»· • · « · ·«·*·· 9 · ·« · ♦ · · ·«· ··· ··· ·«·* ♦ · ·· výpočetním výkonem, které může vést až tak daleko, že se daný objekt nemusí dopočíst nikdy.J 9 9 · ním 9 9 ním ním ním ním ním 9 9 ním ním ním ním ním ním ním ním ním ním ním ním ním ním ním ním ním ním so far that the object does not have to be calculated.
2. Jestliže aplikace pracuje s velkým množstvím dat a vztahů, pak plné integrity prakticky nelze dosáhnout nikdy. I pokud lze integrity dosáhnout, mohou výpočty trvat tak dlouho, že práci s aplikací prakticky znemožňují. Z tohoto důvodu se také tabulkové procesory pro interaktivní aplikace s větším množstvím dat a vztahů nepoužívají.2. If the application works with a lot of data and relationships, then full integrity can practically never be achieved. Even if integrity can be achieved, calculations can last so long that they virtually make it impossible to work with the application. For this reason, spreadsheets are also not used for interactive applications with more data and relationships.
Podstata vynálezuSUMMARY OF THE INVENTION
Nevýhody současného stavu jsou do značné míry odstraněny řešením podle tohoto vynálezu. Podstata tohoto řešeni způsobu udržování logické integrity mezi objekty v interaktivních aplikacích počítačů spočívá v tom, že logické vztahy mezi jednotlivými objekty se pouze deklarují vazbami mezi jednotlivými objekty aplikace tak, že se vybírají vztahy ze souboru obecných, předem definovaných základních vztahů a jednotlivé objekty se připojují na výstupy nebo vstupy daného vztahu, načež každému základnímu vztahu se přiřadí obecný předem definovaný prostředek pro naplňování a udržování těchto vztahů při jejich použiti, kde objekty informují prostředky, přiřazené ke vztahům, které na jejich hodnotách závisejí, o změnách svých hodnot, a prostředky reagují na změny v hodnotách svých vstupů a za účelem zachování integrity vztahů mění své výstupy a pracují konkurenčně, kdy několik prostředků může být aktivních současně, takže při běhu aplikace se současně zpracovává vstup uživatele a provádí se udržování integrity vztahů.The disadvantages of the prior art are largely eliminated by the solution according to the invention. The essence of this method of maintaining logical integrity between objects in interactive computer applications is that logical relationships between objects are only declared by relationships between individual objects of the application by selecting relationships from a set of general, predefined basic relationships and connecting individual objects to the outputs or inputs of the relationship, whereupon each basic relationship is assigned a general predefined means for fulfilling and maintaining those relationships in use, wherein the objects inform the resources assigned to the relationships that depend on their values about changes in their values, and the resources respond to change the values of their inputs and to maintain the integrity of relationships, change their outputs and work competitively, where several resources can be active at the same time, so that the user input is simultaneously processed while the application is running, and maintaining integrity of relationships.
Uvedeným řešením se dosáhne toho, že je zajištěna rychlá odezva aplikace pro uživatele i při velkém množství dat a vztahů a zároveň nedochází k takovému plýtváni výpočetním výkonem jako v současných tabulkových procesorech. Navíc provádění jednoho časově náročného výpočtu neblokuje ostatní výpočty, ty probíhají současně. Uživatel tedy vidi výsledky nenáročných výpočtů „včas“, přestože mohou nadále probíhat další náročné výpočty.This solution ensures that the application responds quickly to users with large amounts of data and relationships, while avoiding such a waste of computing power as in today's spreadsheets. In addition, performing one time-consuming calculation does not block the other calculations; Thus, the user can see the results of undemanding calculations "on time", although further demanding calculations can continue.
Při konkurenčním zpracování prostředků a vstupu uživatele se zpracování prostředků, tvořených algoritmy, s výhodou rozdělí na krátké časové úseky, mezi kterými může být algoritmus přerušen a během nichž přerušen být nemůže a okolní data se tedy nemění, a aplikace se řídí centrální smyčkou, určující okamžik, kdy * 9 f I ·With competitive resource processing and user input, the processing of algorithm resources is preferably divided into short periods of time between which the algorithm can be interrupted and during which it cannot be interrupted, and the surrounding data is therefore unchanged, and the application is controlled by a central loop when * 9 f I ·
9 9 9»*«9 9 9
9 <9 9 · · ·9 <9 9 · · ·
9999 V«9 999 9999 99 «9 probíhá zpracování vstupů od uživatele a kdy se provádějí kroky uvedených algoritmů a kterých, přičemž jednotlivé akce se řadí vždy časově za sebou. Při konkurenčním zpracování algoritmů může být několik algoritmů aktivních současně. Ke změnám ve vstupu daného algoritmu tak může dojít v průběhu jeho provádění. Výstupy vztahu existují, i když algoritmus ještě neskončil, a jsou případně měněny tak, jak pokračuje zpracování algoritmu.9999 V «9 999 9999 99« 9 is processing of input from the user and when the steps of the algorithms are performed and which are performed, the individual actions are always sequenced in time. When competing algorithm processing, several algorithms can be active simultaneously. Thus, changes in the input of the algorithm may occur during its execution. The outputs of the relationship exist even if the algorithm is not yet finished and are eventually changed as the algorithm continues to process.
Běh aplikace je složen ze dvou typů akcí, které probíhají konkurenčně:The application run is composed of two types of actions that are competitive:
1. zpracování vstupu uživatele1. User input processing
2. provádění udržovacích algoritmů2. implementation of maintenance algorithms
Zpracování vstupu uživatele může vést ke změnám v primárních datech. V takovém případě jsou o těchto změnách informovány všechny vztahy, které na hodnotách daných primárních dat závisí.User input processing can lead to changes in primary data. In this case, all relationships that depend on the values of the primary data are informed of these changes.
Při informování prostředků o změnách v okolí se pro výpočet nové hodnoty využijí před změnami vypočítané hodnoty. Lze tak dosáhnout výrazných úspor ve výkonu procesoru.When informing resources about changes in the surroundings, the calculated value is used to calculate the new value. This can achieve significant savings in processor performance.
Prostředky pro naplňování a udržování logických vztahů mezi jednotlivými objekty se řídí poptávkou po hodnotách objektu tak, že naplňováni a udržování vztahu probíhá jen pří poptávce po výsledku, a po ukončení poptávky se naplňování nebo udržování ukončí. Jestliže jsou algoritmy řízeny poptávkou po hodnotách objektu, dosahuje se tím výrazné úspory výkonu procesoru i paměťové kapacity počítače. Poptávka primárně vychází z požadavku uživatele zobrazit hodnotu objektů, sekundárně pak poptávka vzniká tím, že pro naplnění hodnoty jednoho objektu (poptávaného objektu) je současné nutné znát hodnotu jiného objektu. Po ukončeni poptávky s naplňování nebo udržování ukončí okamžitě nebo v časovém odstupu.The means for fulfilling and maintaining the logical relationships between the individual objects is governed by the demand for the values of the object so that the fulfillment and maintenance of the relationship takes place only in the demand for the result and upon completion of the demand the fulfillment or maintenance is terminated. When the algorithms are driven by the demand for object values, this results in significant savings in processor performance and computer memory capacity. Demand is primarily based on the user's requirement to display the value of objects, and secondly, demand arises because it is necessary to know the value of another object to fulfill the value of one object (demanded object). Upon completion of the demand with filling or maintenance it terminates immediately or in a time interval.
Všechny výstupy, mezivýsledky a stavové informace algoritmů se s výhodou ukládají do trvalé paměti. Tím lze dosáhnout podstatné úspory prostoru operační paměti. Jestliže se tak děje na konci každého kroku a poté algoritmus na začátku dalšího následujícího kroku všechny potřebné informace načte znovu, pak lze v libovolném okamžiku (po libovolném kroku) aplikaci okamžitě ukončit a později její běh obnovit ve stavu, ve kterém byla ukončena.All outputs, intermediate results and status information of the algorithms are preferably stored in non-volatile memory. In this way, a significant saving of the memory space can be achieved. If this happens at the end of each step and then the algorithm reloads all the necessary information at the beginning of the next step, then the application can be terminated immediately at any point (after any step) and later resumed in the state in which it was terminated.
• · · ····· • · · · 9 · · · ♦ ♦ • · ·· » · · ♦ ···· ··« ··· *··· ·· ··· · · ♦ 9 9 9 9 9 9 9 · · · · · · · · · · · · · · · · · ·
Při konkurenčním zpracováni udržovacích algoritmů a vstupu uživatele se do systému s výhodou zařadí garbage collector pro mazání neužitečných hodnot, kterým se na základě informací o volné paměti počítače a dalších informací iniciuje mazání neužitečných hodnot. Tím lze opět dosáhnout podstatné úspory paměťového prostoru.In a competitive processing of maintenance algorithms and user input, a garbage collector for deleting useless values is preferably included in the system, which initiates deleting of useless values based on free computer memory information and other information. This again results in substantial memory space savings.
Podstatou řešení podle tohoto vynálezu je dále použití výše popisovaného způsobu udržování logické integrity mezi objekty v interaktivních aplikacích počítačů pro sdíleni dat v sítích, zahrnující server k centrálnímu ukládání sdílených dat a nejméně jeden klient, na kterém je provozována aplikace, která využívá sdílená data a zpracovává informace o změnách sdílených dat, kdy klienty jsou alespoň přechodně spojeny sítí, opatřený pro aplikaci pro přístup na sdílená data z klientu vyrovnávací paměti. Klientské a serverové vztahy rozšiřují využití aplikační architektury s automatickou údržbou logické integrity s konkurenčním zpracováním pro provoz na více počítačích, propojených v síti.The present invention further relates to the use of the above-described method of maintaining logical integrity between objects in computer interactive data sharing applications, comprising a server for centrally storing shared data and at least one client running an application that uses shared data and processes information about changes in shared data, wherein the clients are at least temporarily connected by a network, provided for an application for accessing the shared data from the cache client. Client and server relationships extend the use of application architecture with automatic maintenance of logical integrity with competitive processing to operate on multiple computers connected across a network.
Podstatou řešení podle tohoto vynálezu je rovněž systém pro sdílení dat v sítích, zahrnující server k centrálnímu uložení sdílených dat a nejméně jeden klient, na kterém je provozována aplikace, která využívá sdílená data a zpracovává informace o změnách sdílených dat, kdy klienty jsou alespoň přechodně spojeny sítí, opatřený pro aplikaci pro přístup na sdílená data z klientu vyrovnávací pamětí, který pro použití uvedeného způsobu udržování logické integrity v interaktivních aplikacích počítačů zahrnuje dále soubor obecných, předem definovaných základních vztahů speciální klientský vztah s nejméně jedním výstupem a žádným vstupem, přičemž všechna sdílená data v klientské aplikaci jsou reprezentována objektem s připojeným klientským vztahem, pracujícím jako vyrovnávací paměť. Soubor obecných, předem definovaných základních vztahů zahrnuje dále speciální serverový vztah s nejméně jedním vstupem a žádným výstupem, přičemž ke všem objektům, jejichž hodnoty jsou sdíleny, jsou připojeny serverové vztahy pro reagování na požadavky klientů.The present invention also provides a network data sharing system comprising a server for centrally storing shared data and at least one client running an application that uses shared data and processes information about shared data changes where the clients are at least temporarily connected provided with an application for accessing the shared data from the client buffer, which for use of said method of maintaining logical integrity in interactive computer applications further comprises a set of general, predefined basic relationships a special client relationship with at least one output and no input, all shared the data in the client application is represented by an object with a connected client relationship acting as a buffer. Furthermore, the set of general, predefined basic relationships includes a special server relationship with at least one input and no output, with server objects attached to all objects whose values are shared to respond to client requests.
Je výhodné, při porovnání se současným stavem vývoje a provozu síťových aplikací, že na jedné straně se používá obecný mechanismus, který nevyžaduje dodatečné náklady na vývoj pro převedení izolované aplikace na síťovou; na druhé straně pro komunikaci mezi počítači lze použít asynchronní protokol, který není tak citlivý naIt is advantageous, when compared to the current state of development and operation of network applications, that on the one hand a general mechanism is used which does not require additional development costs to convert the isolated application to the network; on the other hand, an asynchronous protocol that is not as sensitive to the
9 kvalitu spojení mezi počítači a tedy bez výrazné újmy na funkčnosti aplikace ji lze provozovat i v méně kvalitních sítích, například v síti Internet, a zejména v bezdrátovém Internetu. Podstatnou výhodou řešení podle tohoto vynálezu je, že lze libovolně rozdělit každou aplikaci na část klientskou a serverovou tak, aby pro většinu interakcí koncového uživatele aplikace nebylo nutné komunikovat se serverem. Tim lze minimalizovat čas čekání uživatele na server.9 the quality of the connection between computers and thus without significant detriment to the functionality of the application, it can be operated even on lower quality networks, such as the Internet, and especially wireless Internet. An essential advantage of the solution of the present invention is that each application can be arbitrarily divided into client and server parts so that for most end user interactions the application does not need to communicate with the server. This can minimize user waiting time for the server.
Podstatou řešení podle tohoto vynálezu je dále způsob sdílení dat v uvedeném systému, spočívající v tom, že v případě, kdy aplikace požaduje hodnotu, která ještě není uložena ve vyrovnávací paměti, zašle se po síti požadavek o tuto hodnotu na server a zároveň se aplikaci vrátí libovolná hodnota zpět. Jakmile se ze serveru vrátí odpověď, pak pokud není shodná s hodnotou, která již dříve byla vrácena aplikaci, tak se aplikaci oznámí změna hodnoty a hodnota obdržená ze serveru se zapamatuje ve vyrovnávací paměti. Jakmile klient obdrží po síti od serveru informace o změně hodnoty, oznámí se tato změna aplikaci a z vyrovnávací paměti se hodnota vymaže nebo se označí za neplatnou tak, aby při dalším požadavku aplikace na tuto hodnotu došlo k novému požadavku na server, a jakmile aplikace na klientu požaduje změnit některou sdílenou hodnotu, tak se nová hodnota okamžitě uloží do vyrovnávací paměti, přičemž aplikace je o změně hodnoty okamžitě informována a zároveň se na server zašle požadavek na změnu této hodnoty. Dokud klient od serveru neobdrží potvrzení, že server jeho požadavek zpracoval, ignorují se veškeré zprávy ze serveru o změně dané hodnoty. Požadavky klientů na zaslání hodnot se přijímají po síti serverem, který hodnoty zasílá zpět, jakmile je sám zjistí a zároveň si pamatuje, kterým klientům které hodnoty odeslal. Jakmile se změní některé hodnoty na serveru, odesílá se tato informace ze serveru těm klientům, kterým se odeslala původní hodnota a pokud se těmito klienty původní hodnota znovu nevyžádá, potom další informace o změnách dané hodnoty od serveru se jim nadále nezasílají. Server přijímá od klientů požadavky na změnu své hodnoty, které se zpracovávají tak, že server danou hodnotu změní a poté odešle klientovi, od kterého požadavek obdržel, informaci o provedené změně a zároveň se tato informace o změně hodnoty odesílá i dalším klientům, kterým server dříve odeslal původní hodnotu.The present invention further provides a method of sharing data in said system, wherein if an application requests a value that is not yet cached, a request for that value is sent over the network to the server and the application returns any value back. When a response is returned from the server, if it does not match the value that was previously returned to the application, the application is notified of the change in value and the value received from the server is stored in the buffer. When a client receives a value change information from the server over the network, the change is notified to the application and the value is cleared or marked as invalid so that the next application request for this value generates a new request to the server and requests to change a shared value, so that the new value is immediately cached, and the application is immediately informed of the change of value and at the same time a request to change the value is sent to the server. Until the client receives confirmation from the server that the server has processed its request, all messages from the server that change that value are ignored. Client requests to send values are received over the network by the server that sends the values back as soon as it detects them, while remembering to which clients it sent which values. When some values on the server change, this information is sent from the server to those clients that sent the original value, and if the clients do not request the original value again, no further information about changes to that value is sent to the server. The server receives requests to change its value from clients, which are processed by changing the value of the server and then sending the change request to the client from which it received the request and sending the value change information to other clients previously served by the server. sent the original value.
Jestliže aplikační architektura s automatickým udržováním logické integrity s konkurenčním zpracováním používá poptávkové řízení, je výhodné, že data jsou zasílána jen klientům, kteří je fakticky potřebují a stejné tak i informace o změnách.If an application architecture that automatically maintains logical integrity with competitive processing uses demand management, it is advantageous that data is only sent to clients who actually need it, and the same information about changes.
· ·· ·· ·* «· * «* • · «· • · * «9 · * · · · · · · ··· ··· «««· ·· ·♦· 9 9 9 9 9 9 9 * 9 9 9 · · 9 9 9 9 9 9 9 9 9
Tím jsou minimalizovány celkové komunikační náklady. Výhodná je rovněž i skutečnost, že o změnách v datech, iniciovaných jedním uživatelem, se s minimální prodlevou dozví ostatní uživatelé, kteří tato data poptávají.This minimizes overall communication costs. Also advantageous is the fact that changes in the data initiated by one user are learned with minimal delay by other users requesting the data.
Při přerušení spojení mezi klientem a serverem se požadavky a informace o změně hodnoty s výhodou ukládají do paměti v místě vzniku této zprávy a odesílají se při následném obnovení spojení. Jednotliví klienti, stejně jako server, mohou být přechodně ukončeni nebo odpojeni od sítě, aniž by se narušila konzistence celého systému klientů a serverů. Navíc může uživatel s klientem často bez výrazné ztráty funkčnosti nadále pracovat, i když je od serveru odpojen. Většina uživatelských interakcí nevyžaduje komunikaci se serverem.If the connection between the client and the server is interrupted, the request and value change information is preferably stored in memory at the origin of the message and sent when the connection is reestablished. Individual clients, like a server, can be temporarily terminated or disconnected from the network without compromising the consistency of the entire client and server system. In addition, a user can often continue to work with a client without significant loss of functionality even when they are disconnected from the server. Most user interactions do not require communication with the server.
Aplikace se u uvedeného způsobu sdílení dat v systému může rozdělit na větší počet úrovní než klient a server, v podstatě na libovolný počet úrovní pracování. Kromě uvedených dvou úrovní klient - server lze aplikaci provozovat například na čtyřech úrovních, mezi klienta a server lze v takovém případě vložit na straně klienta vrstvu zástupce, který soustřeďuje komunikaci se serverem pro více klientských počítačů a na straně serveru vložit vyrovnávací servery, které rozdělují zpracování aplikační logiky na více vyrovnávacích počítačů. Dochází k rozložení výkonu na více počítačů na straně serveru, na klientské straně se jedná o minimalizaci komunikačních nákladů.With this method of data sharing in the system, an application can be divided into a greater number of levels than the client and the server, basically any number of levels of work. In addition to the two client-server levels, the application can be operated at four levels, for example, a client-server layer can be inserted between the client and server to concentrate communication with the server for multiple client computers. application logic on multiple cache computers. There is a distribution of performance across multiple computers on the server side, on the client side it is a minimization of communication costs.
Další podstata tohoto vynálezu spočívá v použití uvedeného způsobu sdílení dat pro aplikace, sdílející data z více než jednoho serveru. Toto použití lze v praxi s výhodou realizovat tak, že po doplnění zástupce pro potřebná data z jiné aplikace o klientský vztah s identifikací počítače, zpracovávajícího tuto aplikaci, a doplnění v ní o vztahy server k datům, které se dávají k dispozici k integraci s jinými aplikacemi, se v okamžiku deklarace klientského vztahu určí, na který server má klientský vztah směřovat své požadavky. Zpracování informací mezi integrovanými aplikacemi probíhá automaticky v reálném čase, s minimálními náklady na vývoj propojení.Another object of the present invention is to use said method of data sharing for applications sharing data from more than one server. In practice, this use can be realized in such a way that after adding a representative for the necessary data from another application with a client relationship with the identification of the computer processing the application and adding in it server-to-data relations, which are available for integration with other applications, at the moment of the client relationship declaration, determine which server the client relationship should direct its requests to. Information processing between integrated applications is done automatically in real time, with minimal development costs.
Přehled obrázků na výkresechBRIEF DESCRIPTION OF THE DRAWINGS
Vynález bude blíže vysvětlen pomocí výkresů a následujícího popisu příkladů provedení. Na obrázku 1 je znázorněn příklad centrální smyčky, která řídí aplikaci aThe invention will be explained in more detail by means of the drawings and the following description of exemplary embodiments. Figure 1 shows an example of a central loop that controls the application of a
- ·· · · · · · ·- ·· · · · · · ·
9 * · · · · * • ·· · ·«*»*· • 9 9 * ···« ···· ··· ··* ··«· ·· 99 určuje, ve který okamžik se provádějí kroky algoritmů a kterých algoritmů. Výběr algoritmu k provedení může například probíhat tak, že se cyklicky prochází všechny aktivní algoritmy, to je ty algoritmy, které jsou v daném okamžiku v běhu.9 9 * determines at what point the steps are taken algorithms and which algorithms. For example, the selection of the algorithm to execute can be performed by cycling through all active algorithms, that is, those algorithms that are currently running.
Na obrázku 2, 3 a 4 jsou znázorněny tři typy kroků, na které je rozdělen algoritmus, který splňuje následující vlastnosti: informuje o změnách, zpracovává změny, pracuje krokově a je řízen poptávkou. Na obr.2 je znázorněn krok zjištění hodnoty sloupce S v řádku R, na obr.3 reakce na změnu hodnoty buňky B a na obr.4 postupná změna hodnot sloupce S. Na obr.5 je znázorněn příklad průběhu zpracování požadavku na hodnotu ze serveru při použití aplikační architektury s automatickým udržováním logické integrity s konkurenčním zpracováním v aplikacích, sdílených větším množstvím uživatelů, např.lnternet. Na obr.6 je znázorněn příklad průběhu zpracování informace o změně hodnoty na serveru, na obr. 7 přiklad průběhu zpracování požadavku na změnu hodnoty na serveru.Figures 2, 3, and 4 show three types of steps divided into an algorithm that fulfills the following characteristics: informs about changes, processes changes, works in steps and is driven by demand. Fig. 2 shows the step of determining the value of column S in row R, Fig. 3 the response to a change in cell B value, and Fig. 4 shows a gradual change in column S values. using an application architecture that automatically maintains logical integrity with competitive processing in applications shared by multiple users, such as the Internet. Fig. 6 shows an example of the process of processing the value change information on the server; Fig. 7 shows an example of the process of processing the value change request on the server.
Příklady provedení vynálezuDETAILED DESCRIPTION OF THE INVENTION
Logické vztahy mezi jednotlivými objekty v interaktivních aplikacích počítačů (například tabulkami, jejích sloupci, komponentami uživatelského rozhraní a buňkami) se pouze deklarují a jejich naplňování a udržování se provádějí automaticky a konkurenčně. Logické vztahy se deklarují vazbami mezi jednotlivými objekty aplikace, přitom samotné vztahy jsou vybírány ze souboru obecných, předem definovaných základních vztahů (katalogu).The logical relationships between individual objects in interactive computer applications (such as tables, columns, user interface components, and cells) are only declared, and their fulfillment and maintenance are performed automatically and competitively. Logical relationships are declared by relationships between individual objects of the application, while the relationships themselves are selected from a set of general, predefined basic relationships (catalog).
Příklady logických vztahů mezi objekty v aplikaci jsou následující:Examples of logical relationships between objects in an application are as follows:
• Mezi komponentou uživatelského rozhraní a sloupcem tabulky může existovat logický vztah „zobrazení hodnoty sloupce“, to je daná komponenta uživatelského rozhraní zobrazuje hodnoty daného sloupce (znaky, čísla).• There may be a logical "display column value" relationship between the UI component and the table column, that is, the UI component displays the values of that column (characters, numbers).
• Mezi dvěma tabulkami může být vztah „výběr z tabulky dle kritéria“, to je jedna tabulka obsahuje výběr z druhé tabulky na základě daného kriteria.• Between two tables there may be a “table selection by criterion” relationship, that is, one table contains a selection from the other table based on a given criterion.
• Mezi buňkou a sloupcem tabulky může existovat vztah „součet sloupce“, to je daná buňka obsahuje součet hodnot sloupce ze všech řádek dané tabulky.• There may be a "column sum" relationship between a cell and a column in a table, that is, the cell contains the sum of column values from all rows in the table.
Každý vztah má jeden nebo více výstupů a může mít jeden nebo více vstupů. Je to názorně vidět na následujícím příkladu:Each relationship has one or more outputs and can have one or more inputs. This is illustrated by the following example:
·· · · · · t · ·· · · · · · « • · · * « » · * b • · ·*«» ···♦ »·* **· ···· ·· ··· T t t t b b b b b b b b b ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
Deklarace vazby mezi danými objekty je pak realizována vybráním vztahu z katalogu a připojením jednotlivých objektů na výstupy či vstupy daného vztahu. Každý objekt může být připojen nejvýše na jeden výstup jednoho vztahu.Declaring the relationship between the objects is then realized by selecting a relationship from the catalog and attaching individual objects to the outputs or inputs of the relationship. Each object can be connected to at most one output of one relationship.
Každému základnímu vztahu je přiřazena sada obecných, předem definovaných algoritmů pro naplňování a udržování těchto vztahů v kontextu jejich použití (udržovacích algoritmů).Each basic relationship is assigned a set of general, predefined algorithms for fulfilling and maintaining these relationships in the context of their use (maintenance algorithms).
Algoritmy splňují následující podmínky:The algorithms meet the following conditions:
a) Informují o změnách; to znamená, že informují objekty, které na hodnotách jejich výstupu závisejí, o změnách svých výstupů. To, že na nějakém objektu A závisí jiné objekty B, se objekt A dozví od objektů B. Buďto se to dozví v okamžiku vytvoření objektů B, to je tak zvaně staticky. Anebo se to dozví tak zvaně dynamicky, to je až v okamžiku, kdy si hodnotu objektu A přečtou objekty B a stanou se fakticky na této hodnotě závislé. Může existovat libovolná kombinace obou těchto přístupů.(a) Report changes; that is, they inform objects that depend on their output values about changes in their output. That other objects B depend on some object A, object A learns from objects B. Either it learns when objects B are created, this is called so-called statically. Or it learns so-called dynamically, that is when the value of object A is read by objects B and actually becomes dependent on that value. There can be any combination of both.
K uvedeným změnám dochází zejména v případě, že algoritmus přepočítává hodnotu výstupu na základě informací o změnách v hodnotách svých vstupů.These changes occur especially when the algorithm recalculates the value of the output based on information about changes in the values of its inputs.
b) Zpracovávají změny; Algoritmy jsou připraveny na změny v hodnotách svých vstupů a reagují na ně patřičným přepočítáním svých výstupů, tak aby integrita vztahu byla zachována. Informace o změnách vstupů dostanou algoritmy jednak od jiných algoritmů nebo od tak zvaných primárních dat, to je objektů, které nejsou připojeny k žádnému výstupu žádného vztahu. K změnám primárních dat dochází zejména na přímý pokyn uživatele.b) Process changes; Algorithms are prepared for changes in the values of their inputs and respond to them by properly recalculating their outputs so that the integrity of the relationship is maintained. Information about input changes is obtained by algorithms from other algorithms or from so-called primary data, ie objects that are not connected to any output of any relationship. Changes to primary data occur primarily at the direct instruction of the user.
«·«· ♦ • » 4 4 4« * 4 4 4· • 4 4 · 44«·« · ♦ • »4 4 4
4 4 44 ··»· 44444 44 44 ·· »· 4444
c) Pracují konkurenčně; to je několik algoritmů může být aktivních současně. Ke změnám ve vstupu daného algoritmu tak může dojit v průběhu jeho provádění. Konkurenční zpracováni udržovacích algoritmů a vstupu uživatele může být například zabezpečeno takto:c) They work in a competitive way; that is several algorithms can be active simultaneously. Thus, changes in the input of a given algorithm may occur during its implementation. For example, competitive processing of maintenance algorithms and user input can be secured as follows:
Algoritmy pracují krokově, v krátkých krocích; to znamená, že jejich běh (zpracování) je rozdělen na časové úseky, které jsou malé a mezi kterými může být algoritmus přerušen. Algoritmy přitom předpokládají, že v rámci každého kroku se okolní data nemění a pokud se změní po nějakém kroku, tak se o této změně algoritmus dozví nejpozději na začátku následujícího kroku. „Malé“ znamená, že zpracování každého kroku i nad téměř libovolně velkými daty probíhá tak rychle, že není z hlediska uživatele zaznamenatelné. Například časová náročnost každého kroku je nezávislá na množství dat, nebo při množství dat n má časovou náročnost nejvýše O (!og n).The algorithms work in steps, in short steps; that is, their run is divided into periods of time that are small and between which the algorithm can be interrupted. Algorithms assume that within each step the surrounding data does not change and if it changes after a step, the algorithm learns about this change at the beginning of the next step at the latest. “Small” means that processing of every step, even over almost arbitrarily large data, proceeds so quickly that it is not noticeable for the user. For example, the time required for each step is independent of the amount of data, or at the amount of data n has a maximum of 0 (! Og n).
Aplikace je řízena centrální smyčkou (její příklad je vyobrazen na obr.1), která určuje, ve který okamžik probíhá zpracování vstupů od uživatele a ve který okamžik se provádějí kroky uvedených algoritmů a kterých algoritmů. Jednotlivé akce jsou vždy řazeny ze sebou, nikdy neprobíhají současně.The application is controlled by a central loop (an example of which is shown in Fig. 1), which determines at which point the input processing is performed from the user and at which point the steps of said algorithms are performed and which algorithms. Individual actions are always ordered from each other, never running simultaneously.
Výstupy vztahu existují, i když algoritmus ještě neskončil, a jsou případně měněny tak, jak pokračuje zpracování algoritmu. Pro lepší orientaci navazujících algoritmů je možno zavést a používat speciální hodnotu (konstantu), která indikuje, že výstup algoritmu ještě není kompletní.The outputs of the relationship exist even if the algorithm is not yet finished and are eventually changed as the algorithm continues to process. For better orientation of related algorithms it is possible to introduce and use a special value (constant), which indicates that the output of the algorithm is not yet complete.
Běh aplikace je složen ze dvou typů akcí, které probíhají konkurenčně:The application run is composed of two types of actions that are competitive:
1. Zpracování vstupu uživatele1. User input processing
2. Provádění udržovacích algoritmů2. Implementation of maintenance algorithms
Zpracováni vstupu uživatele může vést ke změnám v primárních datech. V takovém případě jsou o těchto změnách informovány všechny vztahy, které na hodnotách daných primárních dat závisí.Processing user input can lead to changes in the primary data. In this case, all relationships that depend on the values of the primary data are informed of these changes.
Uvedeným řešením se dosáhne toho, že je zajištěna rychlá odezva aplikace pro uživatele i při velkém množství dat a vztahů a zároveň nedochází k takovému plýtvání výpočetním výkonem jako v současných tabulkových procesorech. Navíc * « ♦ · * β ···* ·«·· ··· ····»·· ·· ·· provádění jednoho časově náročného výpočtu neblokuje ostatní výpočty, ty probíhají současně. Uživatel tedy vidí výsledky nenáročných výpočtů „včas“, přestože mohou nadále probíhat další náročné výpočty.The solution achieves a fast response time for the user, even with a large amount of data and relationships, while avoiding such a waste of computing power as in today's spreadsheets. In addition, the execution of one time-consuming calculation does not block the other calculations; they are performed simultaneously. Therefore, the user sees the results of undemanding calculations "on time", although further demanding calculations can continue.
Výrazných úspor ve výkonu procesoru lze dosáhnout tím, jestliže algoritmy, pokud dostanou informaci o změně v okolí, nezačnou postup výpočtu provádět od počátku znovu, ale danou změnu pouze zapracují do již vypočítaných hodnot.Significant savings in processor performance can be achieved if the algorithms, when they receive information about a change in the environment, do not start the calculation procedure from scratch, but merely incorporate the change into already calculated values.
Výrazné úspory výkonu procesoru i paměťové kapacity počítače se dále dosáhne, jestliže algoritmy jsou řízeny poptávkou po hodnotách objektu. To znamená, že naplňování a udržování vztahu zásadně neprobíhá, pokud není poptávka po výsledku. Poptávka primárně vychází z požadavku uživatele zobrazit hodnotu objektů, sekundárně poptávka vzniká tím, že pro naplnění hodnoty jednoho objektu (poptávaného objektu) je současně nutné znát hodnotu jiného objektu.Significant savings in processor performance and memory capacity are also achieved when algorithms are driven by demand for object values. This means that the fulfillment and maintenance of the relationship does not take place unless there is a demand for the result. Demand is primarily based on the user's requirement to display the value of objects, secondary demand arises from the need to know the value of another object in order to fulfill the value of one object (the requested object).
Například při poptávce na objekt „součet je nutné znát hodnoty všech sčítanců. Po ukončení poptávky se naplňování nebo údržba ukonči okamžitě, případně v časovém odstupu.For example, when requesting an object “sum, it is necessary to know the values of all adders. After completion of the demand, the filling or maintenance is terminated immediately, or in a time interval.
Následuje příklad algoritmu splňujícího tyto vlastnosti: Informuje o změnách, zpracovává změny, pracuje krokově a je řízen poptávkou. Tento algoritmus patří vztahu mezi sloupcem tabulky a buňkou, který lze slovy popsat jako „sloupec S obsahuje hodnotu buňky B“. Úkolem algoritmu tudíž je, aby hodnota sloupce S ve všech řádcích tabulky byla stejná a to rovna hodnotě v buňce B.The following is an example of an algorithm that fulfills the following characteristics: Informs about changes, processes changes, works in steps and is driven by demand. This algorithm belongs to the relationship between a table column and a cell, which can be described as "column S contains the value of cell B". The task of the algorithm is, therefore, that the value of column S in all rows of the table should be the same and equal to the value in cell B.
Problém je, že při změně hodnoty v buňce je třeba změnit hodnoty ve všech řádcích tabulky, což obecné nemůže být provedeno v jednom kroku, protože s dostatečně velkou tabulkou to může trvat libovolně dlouho.The problem is that when you change a value in a cell, you need to change the values in all rows of the table, which generally cannot be done in one step, because with a table large enough, it can take any length of time.
Algoritmus je rozdělen na 3 typy kroků:The algorithm is divided into 3 types of steps:
• zjištění hodnoty sloupce S v řádku R • reakce na změnu hodnoty buňky B • postupná změna hodnot sloupce S• determining the value of column S in row R • responding to a change in the value of cell B • gradually changing the values of column S
První krok je vyvolán jako reakce na požadavek na hodnotu od okolních vztahů. Druhý krok je vyvolán jako reakce na oznámení buňky B, že se její hodnota změnila.The first step is called in response to the demand for value from the surrounding relationships. The second step is called in response to the notification of cell B that its value has changed.
” V * to to to > · • · · to · to to » • · · · to » · ♦ to • · * · to · to to «··♦ «·* ··· ·«·· to· ··”In * To It To It To It To It To It To It To It ·
Třetí krok je vyvolán krokem druhým (viz níže). Algoritmus ze svého okolí požaduje hodnotu buňky B.The third step is called by the second step (see below). The algorithm from its surroundings requests the value of cell B.
Algoritmus si pro sebe ukládá do paměti následující hodnoty:The algorithm stores the following values for itself:
• číslo A aktuální verze hodnoty buňky B • pole H aktuálních a historických hodnot buňky B indexované Číslem verze • pole V verzí hodnoty buňky B platných v jednotlivých řádcích sloupce• the A number of the current version of cell B value • the H field of the current and historical values of cell B indexed by the Version number • the V version of the cell B value valid in each row of the column
S indexované číslem řádku • frontu F všech platných řádků sloupce S, do které lze přidávat na konec a číst ze začátkuWith indexed row number • F queue of all valid rows of column S, to which you can add to the end and read from the beginning
Jednotlivé kroky algoritmu jsou znázorněny dále graficky na obr.2, 3 a 4.The individual steps of the algorithm are shown graphically in Figures 2, 3 and 4 below.
Začátek a konec kroku je v kroužku, větvení kosočtvercem, provedení akce čtvercem. Zjištění hodnoty sloupce S v řádku R je graficky zobrazeno na obr.2, reakce na změnu hodnoty buňky B na obr.3 a postupná změna hodnot sloupce S na obr.4.The beginning and end of the step is in a circle, diamond branching, performing a square action. The determination of the value of column S in row R is shown graphically in Fig. 2, the response to a change in the value of cell B in Fig. 3, and a gradual change in the values of column S in Fig. 4.
Podstatné úspory prostoru operační paměti lze dosáhnout tím, pokud algoritmy ukládají všechny své výstupy mezivýsledky a stavové informace do zvláštní paměti, např. na disk. Pokud se tak děje na konci každého kroku a poté algoritmus na začátku dalšího následujícího kroku všechny potřebné informace načte znovu, a pokud je zvláštní paměť trvalého charakteru (viz výše, např.disk), pak lze v libovolném okamžiku (po libovolném kroku) aplikaci okamžitě ukončit a později její běh obnovit ve stavu, ve kterém byla ukončena.Significant memory savings can be achieved if the algorithms store all of their output intermediate results and status information in a separate memory, such as a disk. If this happens at the end of each step and then the algorithm reloads all the necessary information at the beginning of the next step, and if the special memory is permanent (see above, eg disk), then the application can be applied at any time (after any step) exit and later resume running in the state in which it was terminated.
Podstatné úspory paměťového prostoru lze dosáhnout tím, že je do systému zařazen zvláštní algoritmus pro mazáni neužitečných hodnot (garbage collector - GC), kterému jednotlivé algoritmy sdělují informace o tom, které hodnoty jsou neužitečné, a který na základě informaci o volné paměti počítače a dalších informací iniciuje mazání těchto nepotřebných hodnot. Nepotřebnost a potřebnost hodnot se může řídit podobným principem jako je princip řízení poptávkou po hodnotách objektu, viz výše. Algoritmy, které spolupracují s GC, musí umožňovat smazání nepotřebných hodnot při zachování tri nutných podmínek, to jest pracují konkurenčně, sdělují a přijímají ” · · · · · · · * · · ·*»·* • · · · **···» • · * · · · » ···· ·«· ··· ·«*· «· Μ změny. Pokud po smazání vznikne opětná potřeba těchto již smazaných hodnot, musí je tyto algoritmy znovu vygenerovat.Significant storage space savings can be achieved by incorporating a special garbage collector (GC) algorithm into the system, to which each algorithm communicates which values are useless and which, based on free computer memory and other information information initiates deleting these useless values. The needlessness and necessity of values can be governed by a similar principle as the principle of managing demand for object values, see above. Algorithms that cooperate with GCs must allow deletion of unnecessary values while maintaining the three necessary conditions, ie, working competitively, communicating and receiving ”* · · · * · · · · · · ** ·· · • * Μ Μ Μ Μ Μ Μ Μ Μ Μ Μ Μ Μ Μ. If there is a need for these already deleted values after deletion, these algorithms must regenerate them.
Internetové aplikace, sdílené velkým množstvím uživatelů, jsou v současné době v zásadě založeny na dvou různých architekturách.Internet applications, shared by a large number of users, are currently basically based on two different architectures.
První z nich je terminálová architektura, to je např. využívající HTML/HTTP, WML/WAP, kde všechno nebo téměř všechno zpracování probíhá na serveru a pro komunikaci se serverem se používá obecný protokol. Problémy s touto architekturou jsou:The first is the terminal architecture, ie using HTML / HTTP, WML / WAP, where all or almost all processing takes place on the server and the general protocol is used for communication with the server. Problems with this architecture are:
• Při každé akci uživatele je třeba kontaktovat server pro její zpracování. To znamená, že uživatel ztrácí mnoho času čekáním na server. Jestliže se Internet používá bezdrátově nebo s méně kvalitním spojením, pak tyto problémy mohou uživatele odrazovat od používání aplikace.• For each user action, you must contact the server to process it. This means that the user is wasting a lot of time waiting for the server. If the Internet is used wirelessly or with a poor quality connection, then these problems may discourage users from using the application.
• Mezi klientem a serverem se posílá zbytečně mnoho dat, které už terminál jednou načetl. Tím se opět prodlužuje odezva uživateli a zároveň se zahlcuje komunikační médium.• Unnecessary data is sent between the client and the server that the terminal has already read. This again increases the user response and congestes the communication medium.
• Pokud ke změně v datech na stránce dojde bez vlivu uživatele (např. jiný uživatel, který užívá stejnou stránku, provede změny), není tato stránka automaticky obnovena a uživatel se o tom nemusí ani dozvědět. Druhá architektura spočívá v tom, že se provozuje samostatně část aplikace na straně koncového uživatele (na klientu) a část na serveru a pro komunikaci mezi nimi se používá protokol speciálně vyvinutý pro danou aplikaci. To s sebou nese tento problém:• If a change in the data on a page occurs without user influence (eg another user who uses the same page makes changes), the page is not automatically refreshed and the user may not even know about it. The second architecture is that the end user (client) part and the server part are run separately, and a protocol specially developed for that application is used to communicate between them. This entails the following problem:
• Vývoj speciálních protokolů a aplikací, které je využívají, je mimořádně nákladný pro středně velké a větší aplikace. Tato metoda se proto používá převážně v jednoduchých aplikacích, například pro e - mail.• Developing special protocols and applications that use them is extremely costly for midsize and larger applications. Therefore, this method is mainly used in simple applications such as email.
Pro odstranění výše zmíněných problémů se použije výše popisovaná aplikační architektura s automatickým udržováním logické integrity s konkurenčním zpracováním následujícím způsobem.To overcome the above-mentioned problems, the above-described application architecture with automatic logical integrity maintenance with competitive processing is used as follows.
□ Soubor (katalog) předem definovaných základních vztahů obsahuje dvojici speciálních vztahů klient a server, popsaných níže. Vztah klient má jeden výstup a žádný vstup. Vztah server má jeden vstup a žádný výstup.□ The set (catalog) of predefined basic relationships contains a pair of special client-server relationships described below. The client relationship has one output and no input. The relationship server has one input and no output.
·· · ··· «v v V · · · • ♦ · « * t » • · · · * ··· ··· ·· □ Místo jedné izolované aplikace se vytvářejí aplikace dvé, klientská a serverová, s tím, že klientská bude využívat data aplikace serverové. Všechny serverové objekty, jejichž hodnoty jsou potřeba pro klientskou aplikaci, jsou v klientské aplikaci reprezentovány objektem s připojeným klientským vztahem. V serverové aplikaci jsou k těmto objektům připojeny serverové vztahy.Instead of one isolated application, two, client, and server applications are created, with the proviso that the client will use the server application data. All server objects whose values are needed for a client application are represented in the client application by an object with a connected client relationship. In a server application, server relationships are attached to these objects.
□ Serverový vztah přijímá požadavky od klientů na zaslání své hodnoty přes síť. Tyto požadavky vyřizuje tak, že se zeptá k sobě přiřazeného objektu a výsledek opět po síti odesílá klientovi. Zároveň si pamatuje, kterým klientům odeslal hodnoty výsledku. Pokud od sobě přiřazeného objektu dostane informace o změně jeho hodnoty, pak tuto informaci rozesílá klientům, o kterých ví, že jim původní hodnotu odeslal. Pokud si tito klienti původní hodnotu nevyžádají znovu, další informace o změnách od serverového vztahu už nedostávají. Dále serverový vztah přijímá od klientů požadavky na změnu své hodnoty. To se týká pouze těch serverových vztahů, které jsou přiřazeny k primárním datům. Tento požadavek vyřizuje serverový vztah tak, že požadavek postoupí svému přiřazenému objektu a poté, co je tímto přiřazeným objektem zpracován, odešle klientovi, od kterého požadavek dostal, informaci o úspěšné provedené změně. Zároveň pošle informaci o změně hodnoty i ostatním klientům, kterým dříve původní hodnotu zaslal.□ The server relationship receives requests from clients to send their value over the network. It handles these requests by asking the object itself and sending the result over the network again to the client. At the same time, he remembers to which clients he sent the result values. If it receives information about a change in its value, it sends this information to clients that it knows the original value sent to them. If these clients do not request the original value again, they do not receive further information about the changes from the server relationship. In addition, the server relationship receives requests from clients to change their value. This applies only to those server relationships that are associated with the primary data. This request handles the server relationship by forwarding the request to its associated object and, after being processed by the associated object, sending the client that received the request information about the successful change made. At the same time, it sends information about the change of value to other clients to whom it previously sent the original value.
□ Klientský vztah požadavky na svou hodnotu, pokud ji ještě nezná, vyřizuje tak, že zašle po síti požadavek o tuto hodnotu na server a zároveň okamžitě vrátí libovolnou hodnotu zpět. Když se klientskému vztahu vrátí odpověď ze serveru, nastanou dvě možnosti. Buďto je vrácená hodnota stejná s hodnotou, kterou již dříve vrátil; pak není potřeba žádné dodatečné akce. V opačném případě oznámí změnu své hodnoty všem na něm závislým objektům a hodnotu obdrženou ze serveru si zapamatuje. Pokud příště je požádán o svou hodnotu, vrátí již hodnotu, kterou si dříve zapamatoval. Příklad průběhu zpracování požadavku na hodnotu ze serveru je znázorněn na obr.5. Když klientský vztah obdrží po síti od serveru informaci o změně hodnoty, oznámí tuto změnu všem na něm závislým vztahům a nadále se chová tak, jakoby žádnou hodnotu od serveru neobdržel (neznal). Příklad průběhu zpracováni informace o změně hodnoty na serveru je znázorněn na obr.6. Klientský vztah požadavky na změnu své hodnoty (pokud tento vztah zastupuje primární data) vyřizuje tak, že okamžitě změní svou hodnotu, informuje o této změně všechny na něm závislé objekty a zároveň • · · »«»44 • · ♦ · ·**·»* • · · 4 4 · · 4 ···· ·«« «·· 4·44 4* »· požadavek na změnu své hodnoty zašle na server. Dokud od serveru neobdrží potvrzení, že server jeho požadavek zpracoval, ignoruje veškeré zprávy ze serveru o změně dané hodnoty. Příklad průběhu zpracováni požadavku na změnu hodnoty na serveru je znázorněn na obr.7.□ The client relationship handles requests for its value if it does not already know it by sending a request for this value to the server over the network and immediately returns any value back. When the client relationship returns a response from the server, there are two options. Either the return value is the same as the value previously returned; then no additional action is required. Otherwise, it notifies its object of any change to its value and remembers the value it receives from the server. The next time it is asked for its value, it will return the value it had previously remembered. An example of the process of processing a value request from the server is shown in Fig. 5. When a client relationship receives a value change information from the server over the network, it notifies the relationship of any relationship that is dependent on it and continues to behave as if it did not receive any value from the server. An example of the process of processing the value change information on the server is shown in Fig. 6. The client relationship handles requests to change its value (if this relationship is represented by primary data) by instantly changing its value, informing all the objects dependent on it, and at the same time 44 • · « 4 4 4 4 4 4 4 4 5 6 7 8 9 4 5 6 7 8 9 10 11 12 »» 4 4 4 4 4 »» Until it receives confirmation from the server that the server has processed its request, it ignores all messages from the server that have changed the value. An example of the process of changing the value request on the server is shown in Fig. 7.
Klientské a serverové vztahy rozšiřují využití aplikační architektury s automatickou údržbou logické integrity s konkurenčním zpracováním (AULIK) pro provoz na více počítačích, propojených v síti.Client and server relationships extend the use of application architecture with automated logical integrity maintenance with competitive processing (AULIK) to run on multiple computers connected across a network.
Další výhoda při porovnání se současným stavem vývoje a provozu síťových aplikací je v tom, že na jedné straně se používá obecný mechanismus, který nevyžaduje dodatečné náklady na vývoj pro převedení izolované aplikace na síťovou; na druhé straně pro komunikaci mezi počítači je použit asynchronní protokol, který není tak citlivý na kvalitu spojení mezi počítači, a tedy bez výrazné újmy na funkčnosti aplikace ji lze provozovat například i v méně kvalitních sítích, například v síti Internet, a zejména v bezdrátovém Internetu. Podstatnou výhodou řešení je, že lze libovolně rozdělit každou aplikaci na část klientskou a serverovou tak, aby pro většinu interakcí koncového uživatele aplikace nebylo nutné komunikovat se serverem; tím lze minimalizovat čas čekáni uživatele na server.Another advantage when compared to the current state of development and operation of network applications is that, on the one hand, a general mechanism is used which does not require additional development costs to convert the isolated application to the network; on the other hand, asynchronous protocol is used for communication between computers, which is not so sensitive to the quality of the connection between computers, and therefore without significant damage to the functionality of the application it can be operated even in lower quality networks such as the Internet and especially wireless Internet . An essential advantage of the solution is that each application can be arbitrarily divided into client and server parts, so that for most application end user interactions it is not necessary to communicate with the server; this minimizes the user's waiting time for the server.
Další podstatnou výhodou je, pokud aplikační architektura s automatickou údržbou logické integrity s konkurenčním zpracováním používá poptávkové řízení, že data jsou zasílány jen klientům, kteří je fakticky potřebují a stejně tak i informace o změnách. Tím jsou minimalizovány celkové komunikační náklady.Another significant advantage is that the application architecture with automatic maintenance of logical integrity with competitive processing uses demand management that data is sent only to clients who actually need it, as well as information about changes. This minimizes overall communication costs.
Výhodná je rovněž skutečnost, že o změnách v datech, iniciovaných jedním uživatelem, se s minimální prodlevou dozví ostatní uživatelé, kteří tato data poptávají.Also advantageous is the fact that changes in the data initiated by one user are learned with minimal delay by other users requesting the data.
Systém může být doplněn o mechanismus, který v případě přerušení spojení mezi klientem a serverem požadavky a informace o změně hodnoty ukládá do paměti v místě vzniku této zprávy; a automaticky je posílá při následném obnovení spojeni. Je to výhodné, protože jednotliví klienti, stejně jako server, mohou být přechodně ukončeni nebo odpojeni od sítě, aniž by se narušila konzistence celého systému klientů a serverů, Navíc s klientem může uživatel, často bez výrazné ztráty funkčnosti, nadále pracovat, i když je od serveru odpojen. Většina uživatelových interakcí nevyžaduje komunikaci se serverem.The system may be supplemented by a mechanism that stores requests and value-change information in the event of a loss of connection between the client and the server at the origin of this message; and automatically sends them the next time the connection is reestablished. This is advantageous because individual clients, like the server, can be temporarily shut down or disconnected from the network without compromising the consistency of the entire client and server system. In addition, the user, often without significant loss of functionality, can continue to work with the client disconnected from the server. Most user interactions do not require communication with the server.
• · · «φφφφ • · · * ««·«·» • · φ · φφφφ φφφφ φφφ φφφ φφφφ φφ φφ• · · φ · φ • φ · · · · φ φ φ φ
Výhodná je též možnost rozdělení aplikace na libovolný počet úrovní pracování; kromě popisovaných dvou úrovní klient - server lze aplikaci provozovat například na čtyřech úrovních, mezi klienta a server lze v takovém případě vložit na straně klienta vrstvu zástupce, který soustřeďuje komunikaci se serverem pro více klientských počítačů a na straně serveru vložit vyrovnávací servery, které rozděluji zpracování aplikační logiky na více vyrovnávacích počítačů. Dochází k rozložení výkonu na více počítačů na straně serveru; na klientské straně se jedná o minimalizaci komunikačních nákladů.Also advantageous is the possibility of dividing the application into any number of levels of operation; in addition to the described two client-server levels, the application can be operated at four levels, for example, a client-server layer can be inserted between the client and server, concentrating communication with the server for multiple client computers. application logic on multiple cache computers. Performance is distributed across multiple server-side computers; on the client side, it is about minimizing communication costs.
Řešení podle tohoto vynálezu je využitelné i při integraci aplikací od různých dodavatelů. Při integraci aplikací od různých dodavatelů je nejpracnější vývoj algoritmu pro automatické zapracování informací z jednoho systému do druhého systému v reálném čase. Tato pracnost je tak velká a roste takovým způsobem s velikostí aplikace, že integrace aplikací v reálném čase se realizuje jen zřídka a s velkými náklady.The solution according to the invention is also applicable to the integration of applications from different suppliers. When integrating applications from different vendors, the most arduous development is an algorithm for automatically integrating information from one system to another in real time. This laboriousness is so great and growing in such a way with the size of the application that real-time application integration is rarely and costly.
Pro odstranění tohoto problému se s výhodou využije Aplikační architektura s asynchronním komunikačním protokolem a automatickou synchronizací a doplní se následovně:To solve this problem, the Application Architecture with asynchronous communication protocol and automatic synchronization is advantageously used and completed as follows:
V okamžiku deklarace klientského vztahu se určí, na základě standardizovaného způsobu identifikace (například URL), na který server má klientský vztah směřovat své požadavky. Tímto způsobem může aplikace A automaticky využívat data z aplikace B. V aplikaci A postačuje pouze doplnit zástupce pro potřebná data z aplikace B o klientský vztah s identifikací počítače, který zpracovává aplikaci B.At the moment the client relationship is declared, it is determined based on a standardized way of identifying (for example, a URL) to which server the client relationship should direct its requests. In this way, application A can automatically use data from application B. In application A, it is sufficient to add a shortcut for the necessary data from application B with a client relationship with the identification of the computer that processes application B.
V aplikaci B je třeba doplnit vztahy server k datům, které se dávají k dispozici k integraci s jinými aplikacemi. Serverové vztahy je možné doplnit o řízení přístupu, to je algoritmy, které rozhodnou, zda a za jakých podmínek a kterým klientům budou data poskytovat. Zpracování informací mezi integrovanými aplikacemi probíhá automaticky v reálném čase, s minimálními náklady na vývoj propojení.In Application B, you need to add server-to-data relationships that are made available for integration with other applications. Server relationships can be supplemented by access control, that is, algorithms that decide whether and under what conditions and to which clients to provide data. Information processing between integrated applications is done automatically in real time, with minimal development costs.
Průmyslová využitelnostIndustrial applicability
Vynález je využitelný při udržování logické integrity mezi objekty v interaktivních aplikacích počítačů, včetně v systémech sdílení dat v sítích.The invention is useful in maintaining logical integrity between objects in interactive computer applications, including in network data sharing systems.
Claims (14)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CZ20004827A CZ299529B6 (en) | 2000-12-21 | 2000-12-21 | Method for maintaining logical integrity among objects in computer interactive applications, its use for data sharing system in networks, the data sharing system in networks per se, method for data sharing in networks and application of such method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CZ20004827A CZ299529B6 (en) | 2000-12-21 | 2000-12-21 | Method for maintaining logical integrity among objects in computer interactive applications, its use for data sharing system in networks, the data sharing system in networks per se, method for data sharing in networks and application of such method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CZ20004827A3 true CZ20004827A3 (en) | 2002-08-14 |
| CZ299529B6 CZ299529B6 (en) | 2008-08-27 |
Family
ID=5472891
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CZ20004827A CZ299529B6 (en) | 2000-12-21 | 2000-12-21 | Method for maintaining logical integrity among objects in computer interactive applications, its use for data sharing system in networks, the data sharing system in networks per se, method for data sharing in networks and application of such method |
Country Status (1)
| Country | Link |
|---|---|
| CZ (1) | CZ299529B6 (en) |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5255387A (en) * | 1990-04-27 | 1993-10-19 | International Business Machines Corporation | Method and apparatus for concurrency control of shared data updates and queries |
| US5410691A (en) * | 1990-05-07 | 1995-04-25 | Next Computer, Inc. | Method and apparatus for providing a network configuration database |
| US5355477A (en) * | 1991-12-23 | 1994-10-11 | International Business Machines Corporation | Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning |
| US6023586A (en) * | 1998-02-10 | 2000-02-08 | Novell, Inc. | Integrity verifying and correcting software |
-
2000
- 2000-12-21 CZ CZ20004827A patent/CZ299529B6/en not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| CZ299529B6 (en) | 2008-08-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0950952A2 (en) | Server workload management in an asynchronous client/server computing system | |
| RU2507567C2 (en) | Multiuser network collaboration | |
| US6237005B1 (en) | Web server mechanism for processing multiple transactions in an interpreted language execution environment | |
| US6804706B2 (en) | Network system for transmitting overwritten portion of client side node cache image to server site through intermediate downstream nodes updating cache images of data requested by client | |
| CN100484119C (en) | Method, system and device for creating service instance in computational grid | |
| US7047484B1 (en) | Method, system, and apparatus for providing access to asynchronous data in a spreadsheet application program | |
| US5799146A (en) | Communications system involving groups of processors of a distributed computing environment | |
| US7464138B2 (en) | Mirror queue in a shared queue environment | |
| CN111427675B (en) | Data processing method and device and computer readable storage medium | |
| US20010039548A1 (en) | File replication system, replication control method, and storage medium | |
| US20040044718A1 (en) | Submitting jobs in a distributed computing environment | |
| US20090119302A1 (en) | Asynchronous client to server updates | |
| US20060206583A1 (en) | Framework for managing client application data in offline and online environments | |
| US20120042327A1 (en) | Method and System for Event-Based Remote Procedure Call Implementation in a Distributed Computing System | |
| JP2008033952A (en) | Most eligible server in common work queue environment | |
| JP4663948B2 (en) | Anonymous subject-based addressing method and apparatus | |
| CN108984290A (en) | Method for scheduling task and system | |
| US5764875A (en) | Communications program product involving groups of processors of a distributed computing environment | |
| US7885906B2 (en) | Problem solving system and method | |
| US20120197961A1 (en) | Method and system for information exchange utilizing an asynchronous persistent store protocol | |
| US8606833B2 (en) | Method and system of committing operations of a synchronized transaction | |
| JP2534229B2 (en) | Distributed data processing method in multi-process computer system | |
| JPH10333925A (en) | Autonomous agent architecture | |
| CZ20004827A3 (en) | Method for maintaining logical integrity among objects in computer interactive applications, its use for data sharing system in networks, the data sharing system in networks per se, method for data sharing in networks and application of such method | |
| US8327380B2 (en) | Method and interprocess communication driver for managing requests of a database client to a database server |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Patent lapsed due to non-payment of fee |
Effective date: 20191221 |