5.1.22 Meta-information
Overview
Container Infomation
Note: Explains the value that can be obtained in ContainerInfo.
List.1 Obtain of Multi-Query results(ContainerInfomation.java)// Get Container Infomation ContainerInfo containerInfo = store.getContainerInfo("weather_station"); System.out.println("WeatherStation Container Infomation ##########"); int collectionCount = containerInfo.getColumnCount(); System.out.println("Container Name:" + containerInfo.getName()); System.out.println("Container Type:" + containerInfo.getType()); System.out.println("Column Count:" + collectionCount); System.out.println("DataAffinity:" + containerInfo.getDataAffinity()); System.out.println("Column Order Ignorable:" + containerInfo.isColumnOrderIgnorable()); System.out.println("RowKeyAssigned:" + containerInfo.isRowKeyAssigned());List 2 Result of Multi-Query(ContainerDynamicCreate.java)
WeatherStation Container Infomation ########## Container Name:weather_station Container Type:COLLECTION Column Count:5 DataAffinity:null Column Order Ignorable:false RowKeyAssigned:true
Dynamic Container creation
Note: It will be described schema definition and the container of the creation of the container using a ContainerInfo and ColumnInfo. There is such a method other than the method of schema defined using a static class, such as WeatherStation class, explaining the fact that.
List.3 Dynamic Container creation(ContainerDynamicCreate.java)// Create Connection store = logic.createGridStore(); List<ColumnInfo> columnInfoList = new ArrayList<ColumnInfo>(); // Define Container Key and Index EnumSet<IndexType> indexSet = EnumSet.of(IndexType.HASH); ColumnInfo keyColumn = new ColumnInfo("id", GSType.STRING, indexSet); // Define Index columnInfoList.add(keyColumn); // Define Container Columns columnInfoList.add(new ColumnInfo("name", GSType.STRING)); columnInfoList.add(new ColumnInfo("latitude", GSType.DOUBLE)); columnInfoList.add(new ColumnInfo("longitude", GSType.DOUBLE)); columnInfoList.add(new ColumnInfo("hasCamera", GSType.BOOL)); // Define Container ContainerInfo containerInfo = new ContainerInfo("dynamic_weather_station", ContainerType.COLLECTION, columnInfoList, true); // Create Container Container<String, Row> dynamicWeatherStaton = store.putContainer("dynamic_weather_station", containerInfo, true);
Note: Explain the set and registration value way of using the Row.
List.4 Row registration of dynamic Container(ContainerDynamicCreate.java)int columnCount = containerInfo.getColumnCount(); for (int rowIndex = 0; rowIndex < 5; rowIndex++) { Row row = dynamicWeatherStaton.createRow(); for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) { ColumnInfo columnInfo = containerInfo.getColumnInfo(columnIndex); GSType columnType = columnInfo.getType(); Object value = null; switch (columnType) { case STRING: if ("id".equals(columnInfo.getName())) { value = String.valueOf(rowIndex + 1); } else { value = "name_" + (rowIndex + 1) + "_" + columnIndex; } break; case DOUBLE: value = Double.valueOf(rowIndex + 1 + columnIndex); break; case BOOL: value = true; break; // Omitted other types default: break; } row.setValue(columnIndex, value); } // Register Row dynamicWeatherStaton.put(row); }List.5 Row acquisition of dynamic Container(ContainerDynamicCreate.java)
// Re-Get Container Container<String, Row> weatherStationCol = store.getContainer("dynamic_weather_station"); // Retrieve Container System.out.println("ID\tName\t\t\tLongitude\tLatitude\tCamera"); for (int i = 0; i < 5; i++) { // Retrieve Row by key Row row = weatherStationCol.get(String.valueOf(i + 1)); String id = row.getString(0); String name = row.getString(1); double latitude = row.getDouble(2); double longitude = row.getDouble(3); boolean hasCamera = row.getBool(4); System.out.println(String.format("%-3s\t%-20s\t%-10s\t%-10s\t%-5s", id, name, latitude, longitude, hasCamera)); }List.6 Row acquisition result of dynamic Container
ID Name Longitude Latitude Camera 1 name_1_1 3.0 4.0 true 2 name_2_1 4.0 5.0 true 3 name_3_1 5.0 6.0 true 4 name_4_1 6.0 7.0 true 5 name_5_1 7.0 8.0 true
Partition Information
Note: Description of each information that can be acquired in the PartitionController class
List.7 Partition information acquisition(PartitionInfomation.java)// Create Connection store = logic.createGridStore(); // Get PartitionController PartitionController partitionController = store.getPartitionController(); // Show PartitionController has Infomation int partitionCount = partitionController.getPartitionCount(); System.out.println("Partition Count:" + partitionCount); for (int i = 0; i < partitionCount; i++) { System.out.println("Partition:" + (i + 1) + " ##########"); System.out.println("BackupHosts:" + partitionController.getBackupHosts(i)); System.out.println("ContainerCount:" + partitionController.getContainerCount(i)); List<String> containerNames = partitionController.getContainerNames(i, 0, null); for (String containerName : containerNames) { System.out.println("Container Name:" + containerName); } System.out.println("Owner Node:" + partitionController.getOwnerHost(i)); List<InetAddress> nodeHosts = partitionController.getHosts(i); for (InetAddress nodeHost : nodeHosts) { System.out.println("Node Host" + nodeHost); } } System.out.println("\nWeatherStation Partition:" + partitionController.getPartitionIndexOfContainer("weather_station"));List.8 Partition information acquisition result
Partition Count:128 Partition:1 ########## BackupHosts:[/192.168.11.12] ContainerCount:0 Owner Node:/192.168.11.11 Node Host/192.168.11.11 Node Host/192.168.11.12 Partition:2 ########## BackupHosts:[/192.168.11.11] ContainerCount:0 Owner Node:/192.168.11.12 Node Host/192.168.11.12 Node Host/192.168.11.11
TimeSeries Container information
Note: It describes each property of TimeSeriesProperties. For a detailed explanation of CompressionMethod and RowExpirationTime, please refer to Technical Reference (Section 4.3.4).
List.9 TimeSeries Container information acquisition(TimeSeriesInfomation.java)// Create Connection store = logic.createGridStore(); // Get Container Infomation ContainerInfo containerInfo = store.getContainerInfo("weather_station_1"); // Get TimeSeries Properties TimeSeriesProperties tsProp = containerInfo.getTimeSeriesProperties(); // Show TimeSeriesProperties has values System.out.println("########## TimeSeriesProperties"); System.out.println("CompressionMethod:" + tsProp.getCompressionMethod()); System.out.println( "CompressionRate(temperture):" + tsProp.getCompressionRate("temperture")); System.out.println( "CompressionSpan(temperture):" + tsProp.getCompressionSpan("temperture")); System.out.println( "CompressionWidth(temperture):" + tsProp.getCompressionWidth("temperture")); System.out.println("CompressionWindowSize:" + tsProp.getCompressionWindowSize()); System.out .println("CompressionWindowSizeUnit:" + tsProp.getCompressionWindowSizeUnit()); System.out.println("ExpirationDivisionCount:" + tsProp.getExpirationDivisionCount()); System.out.println("RowExpirationTime:" + tsProp.getRowExpirationTime()); System.out.println("RowExpirationTimeUnit:" + tsProp.getRowExpirationTimeUnit()); System.out.println("SpecifiedColumns:"); Set<String> specifiedColumns = tsProp.getSpecifiedColumns(); for (String specifiedColumn : specifiedColumns) { System.out.println(specifiedColumn); } System.out.println("isCompressionRelative(temperture):" + tsProp.isCompressionRelative("temperture"));List.10 TimeSeries Container information acquisition result
TimeSeriesProperties: CompressionMethod:NO CompressionRate(temperture):null CompressionSpan(temperture):null CompressionWidth(temperture):null CompressionWindowSize:-1 CompressionWindowSizeUnit:null ExpirationDivisionCount:8 RowExpirationTime:-1 RowExpirationTimeUnit:null SpecifiedColumns: isCompressionRelative(temperture):null
Source Code
Complete source code used in this sample can be downloaded from the following.
Download:meta-info.zip