# C++开发向导

# 1.SQL API

# 1.1.SqlFieldsQueries

SqlFieldsQuery接受一个标准SQL作为其构造器的参数,下面是其执行查询的代码。可以只选定特定的字段,来最小化网络和序列化开销。

    可查询字段定义

    在特定字段可以被SqlFieldsQuery访问之前,它们应做为SQL模式的一部分,使用标准的DDL命令,或者特定的.NET属性,或者QueryEntity配置,都可以进行字段的定义。

    通过SqlFieldsQuery,还可以使用DML命令进行数据的修改:

      # 2.模式和索引

      除了常规的DDL命令,C++开发者还可以使用特定的SQL API进行模式和索引的定义。

      # 2.1.基于QueryEntity的配置

      索引和字段可以通过org.apache.ignite.cache.QueryEntity进行配置,其使用基于Spring的XML配置,还是很方便的:

      <bean class="org.apache.ignite.configuration.CacheConfiguration">
          <property name="name" value="mycache"/>
          <!-- Configure query entities -->
          <property name="queryEntities">
              <list>
                  <bean class="org.apache.ignite.cache.QueryEntity">
                      <property name="keyType" value="java.lang.Long"/>
                      <property name="valueType" value="Person"/>
      
                      <property name="fields">
                          <map>
                              <entry key="id" value="java.lang.Long"/>
                              <entry key="orgId" value="java.lang.Long"/>
                              <entry key="firstName" value="java.lang.String"/>
                              <entry key="lastName" value="java.lang.String"/>
                              <entry key="resume" value="java.lang.String"/>
                              <entry key="salary" value="java.lang.Double"/>
                          </map>
                      </property>
      
                      <property name="indexes">
                          <list>
                              <bean class="org.apache.ignite.cache.QueryIndex">
                                  <constructor-arg value="id"/>
                              </bean>
                              <bean class="org.apache.ignite.cache.QueryIndex">
                                  <constructor-arg value="orgId"/>
                              </bean>
                              <bean class="org.apache.ignite.cache.QueryIndex">
                                  <constructor-arg value="salary"/>
                              </bean>
                          </list>
                      </property>
                  </bean>
              </list>
          </property>
      </bean>
      

      运行时更新索引和可查询字段

      如果需要在运行时管理索引或者使新的字段对SQL引擎可见,可以使用ALTER TABLE, CREATE/DROP INDEX命令。

      # 2.2.自定义主键

      如果主键只使用了预定义的SQL数据类型,则无需使用与模式相关的配置来执行其他操作。

      预定义SQL数据类型

      • 所有的有符号整形类型;
      • bool
      • float
      • double
      • std::string
      • ignite::Timestamp
      • ignite::Date
      • ignite::Guid
      • int8_t[]

      不过一旦决定引入自定义复杂主键并在DML语句中引用其字段,就必须在QueryEntity配置中将QueryField.IsKeyField设置为true

      XML:

      <cacheConfiguration name="cars">
        <queryEntities>
      	<queryEntity keyTypeName="CarKey" valueTypeName="Car">
      	  <fields>
      		<queryField fieldType="System.String" fieldTypeName="java.lang.String" isKeyField="true" name="VIN" />
      		<queryField fieldType="System.Int32" fieldTypeName="java.lang.Integer" isKeyField="true" name="Id" />
      		<queryField fieldType="System.String" fieldTypeName="java.lang.String" name="Make" />
      		<queryField fieldType="System.Int32" fieldTypeName="java.lang.Integer" name="Year" />
      	  </fields>
      	</queryEntity>
        </queryEntities>
      </cacheConfiguration>
      

      18624049226

      最后更新时间:: 10/21/2020, 4:44:25 PM