1 grid.insert
Release 2017.3
Tag available since version 2017.3.
Inserts the rows obtained from a query executed on the work database on nodes of the grid. The selected node where the row is inserted is assigned using the hash algorithm based on the value for the provided key column.
<grid.insert
name='name'
table='table'
keyColumn='keyColumn'
>
<select /> !
</grid.insert>
Attributes | |||||
---|---|---|---|---|---|
Name | Type | Required | Default | Description | |
Aname | string | Name of the grid | |||
Atable | string | Table name where the rows will be inserted on nodes. | |||
AkeyColumn | String | Indicates the column to use in the hash algorithm to determine the node. |
Arguments | |||||
---|---|---|---|---|---|
Name | Type | Required | Unique | Nullable | Description |
Eselect | select | Query to execute on the work database to get data to insert. The arguments allowed in this context are the arguments for tag select. |
create table t_person( person_id char(10), person_name char(10), person_gender char(10) )
<xsql-script> <body> <table name='@tmpdata' temp='y'> <column name='person_id' type='char' size='10' /> <column name='person_name' type='char' size='10' /> <column name='person_gender' type='char' size='10' /> </table> <vtable name='v1'> <column name='person_id' type='char' /> <column name='person_name' type='char' /> <column name='person_gender' type='char' /> </vtable> <vtable.insert name='v1'> <matrix> { "A987-QWE", "POL", "MALE" } { "B123-POI", "MARY", "FEMALE" } { "C456-DJU", "JAN", "MALE" } { "D912-KIE", "LIAM", "MALE" } { "E984-XCF", "NOAH", "FEMALE" } { "F498-NUE", "OLIVIA", "FEMALE" } { "G357-HUI", "WILLIAM", "MALE" } { "H756-MNB", "MIA", "FEMALE" } { "I293-CAT", "JAMES", "MALE" } </matrix> </vtable.insert> <vtable.insertIntoTable table='@tmpdata'><v1/></vtable.insertIntoTable> <grid.insert name='grid_demo' table='t_person' keyColumn='person_id'> <select> <columns>*</columns> <from table='@tmpdata' /> </select> </grid.insert> <drop table='@tmpdata' temp='y' onexception='ignore' /> <set name='rs'> <select.grid name='grid_demo' timeout='30'> <columns>*</columns> <from table='t_person' /> </select.grid> </set> <println> <rs/> </println> </body> </xsql-script>
+---------+-----------+-------------+--------------+----------+
|person_id|person_name|person_gender|grid_node |grid_error|
|char |char |char |char |char |
|visible |visible |visible |visible |visible |
+---------+-----------+-------------+--------------+----------+
|D912-KIE |LIAM |MALE |demo_sports | |
|C456-DJU |JAN |MALE |demo_industria| |
|E984-XCF |NOAH |FEMALE |demo_industria| |
|H756-MNB |MIA |FEMALE |demo_industria| |
|I293-CAT |JAMES |MALE |demo_industria| |
|A987-QWE |POL |MALE |demo_cons | |
|B123-POI |MARY |FEMALE |demo_cons | |
|F498-NUE |OLIVIA |FEMALE |demo_cons | |
|G357-HUI |WILLIAM |MALE |demo_cons | |
+---------+-----------+-------------+--------------+----------+
2 Why use insert on grid?
The main advantage of using an insert on a grid is that the node assignment is transparent to the programmer. The assigned node is calculated by an algorithm based on the given key value. The algorithm is responsible for determining the node and the data load is distributed in several databases. This type of programming serves to increase the scalability of the system and improve the management of a big set of data on a multiple databases.