public static void GetIterator() { Console.WriteLine("Start get iterator..."); PrepareTable(); PrepareData(); OTSClient otsClient = Config.GetClient(); // 读取 (0, "a")到(1000, "xyz")这个范围内的所有行 PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey { { "pk0", new ColumnValue(0) }, { "pk1", new ColumnValue("a") } }; PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey { { "pk0", new ColumnValue(1000) }, { "pk1", new ColumnValue("xyz") } }; var cu = new CapacityUnit(0, 0); var request = new GetIteratorRequest(TableName, GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey, cu); var iterator = otsClient.GetRangeIterator(request); foreach (var row in iterator) { PrintRow(row); } Console.WriteLine("Consumed CapacityUnit Counter:{0}", cu.Read); }
public GetRowResponse(CapacityUnit consumedCapacityUnit, IRow row) { ConsumedCapacityUnit = consumedCapacityUnit; Row = row as Row; PrimaryKey = Row.GetPrimaryKey(); Columns = Row.GetColumns(); }
public CreateTableRequest(TableMeta tableMeta, CapacityUnit reservedThroughput, List <IndexMeta> indexMetas) { TableMeta = tableMeta; ReservedThroughput = reservedThroughput; TableOptions = new TableOptions(); IndexMetas = indexMetas; }
public void CreateMultiAutoIncrementColumnTableTest_ShouldFailed() { var schema = new PrimaryKeySchema { { "PK0", ColumnValueType.String }, { "PK1", ColumnValueType.Integer, PrimaryKeyOption.AUTO_INCREMENT }, { "PK2", ColumnValueType.Integer, PrimaryKeyOption.AUTO_INCREMENT } }; var tableMeta = new TableMeta(TestTableName, schema); var tableOptions = new TableOptions { MaxVersions = 10, TimeToLive = -1 }; var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput) { TableOptions = tableOptions }; try{ OTSClient.CreateTable(request); WaitForTableReady(); }catch (Exception e) { Assert.IsTrue(e.Message.Contains("AUTO_INCREMENT primary key count must <= 1")); } }
public void GetRangeTest() { CreateTable(); var otsClient = OTSClient; // 指定范围读取数据 var startPrimaryKey = new PrimaryKey(); startPrimaryKey.Add("PK0", new ColumnValue("TestData")); startPrimaryKey.Add("PK1", ColumnValue.INF_MIN); var endPrimaryKey = new PrimaryKey(); endPrimaryKey.Add("PK0", new ColumnValue("TestData")); endPrimaryKey.Add("PK1", ColumnValue.INF_MAX); var consumed = new CapacityUnit(0, 0); var request = new GetIteratorRequest("SampleTable", GetRangeDirection.Forward, startPrimaryKey, endPrimaryKey, consumed); var iterator = OTSClient.GetRangeIterator(request); foreach (var rowData in iterator) { // 处理每一行数据 } DeleteTable(); }
public BatchWriteRowResponseItem(CapacityUnit consumed, string tableName, int index) { IsOK = true; Consumed = consumed; TableName = tableName; Index = index; }
/// <summary> /// 获取文件大小显示字符串 /// </summary> /// <param name="path">文件路径</param> /// <param name="length_type">单位</param> /// <param name="decimal_place">有效数字(Byte此值无效)</param> /// <param name="seperator">分隔符</param> /// <returns></returns> public static string lengthString(string path, CapacityUnit capacity_unit, int decimal_place, string seperator) { if (capacity_unit == CapacityUnit.Byte) { return(length(path) + seperator + "B"); } double dl = length(path, capacity_unit); string res = Math.Round(dl, decimal_place) + seperator; switch (capacity_unit) { case CapacityUnit.Byte: res += "B"; break; case CapacityUnit.KiloByte: res += "KB"; break; case CapacityUnit.MebiByte: res += "MB"; break; case CapacityUnit.GigaByte: res += "GB"; break; } return(res); }
/// <summary> /// 获取文件大小, 不同单位返回不同值 /// </summary> /// <param name="path">文件路径</param> /// <param name="length_type">单位类型</param> /// <returns></returns> public static double length(string path, CapacityUnit length_type) { long llength = length(path); double dlength = llength / Convert.ToDouble((int)length_type); return(dlength); }
public BatchGetRowSuccessResponseItem( CapacityUnit consumedCapacityUnit, PrimaryKey primaryKey, AttributeColumns attribute) : base(consumedCapacityUnit, primaryKey, attribute) { }
private static void PrepareTable() { // 创建表 OTSClient otsClient = Config.GetClient(); IList <string> tables = otsClient.ListTable(new ListTableRequest()).TableNames; if (tables.Contains(TableName)) { return; } PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema { { "pk0", ColumnValueType.Integer }, { "pk1", ColumnValueType.String } }; TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema); CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput); otsClient.CreateTable(request); }
static void Main(string[] args) { var liquids = new List <ILiquid>() { new Liquid("Water"), new Liquid("Fuel") }; var liquidProvider = new LiquidProvider(liquids); var energies = new List <IEnergy>() { new Energy("Electricity"), new Energy("SomethingElse") }; var energyProvider = new EnergyProvider(energies); var regularKettle = new RegularKettle(); var electricKettle = new ElectricKettle(); var capacity = new CapacityUnit(100); var utensil = new Utensil("Kettle", capacity); var boiler = new Boiler("Кипятильник"); regularKettle.Utensil = utensil; regularKettle.Boiler = boiler; regularKettle.WorksOn = energies; electricKettle.Utensil = utensil; electricKettle.Boiler = boiler; electricKettle.WorksOn = energies; var regularKettleRunner = new Runner.Runner(liquidProvider, energyProvider, regularKettle); var electricKettleRunner = new Runner.Runner(liquidProvider, energyProvider, electricKettle); }
public BatchGetRowResponseItem(CapacityUnit consumed, PrimaryKey primaryKey, AttributeColumns attribute) { IsOK = true; Consumed = consumed; PrimaryKey = primaryKey; Attribute = attribute; }
/// <summary> /// 单独在表上再创建一个索引表2 /// </summary> public static void CreateGlobalIndex() { OTSClient otsClient = Config.GetClient(); Console.WriteLine("Start create globalIndex..."); IndexMeta indexMeta = new IndexMeta(IndexName2); indexMeta.PrimaryKey = new List <string>() { Col2 }; indexMeta.DefinedColumns = new List <string>() { Pk1 }; CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateGlobalIndexRequest request = new CreateGlobalIndexRequest(TableName, indexMeta); otsClient.CreateGlobalIndex(request); Console.WriteLine("Global Index is created,tableName: " + TableName + ",IndexName:" + IndexName2); }
public static void TableOperations() { // 创建表 OTSClient otsClient = Config.GetClient(); { Console.WriteLine("Start create table..."); PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema { { "pk0", ColumnValueType.Integer }, { "pk1", ColumnValueType.String } }; TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema); CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput); otsClient.CreateTable(request); Console.WriteLine("Table is created: " + TableName); } //// 更新表 //{ // Thread.Sleep(60 * 1000); // 每次更新表需要至少间隔1分钟 // Console.WriteLine("Start update table..."); // CapacityUnit reservedThroughput = new CapacityUnit(0, 0); // 将预留CU调整为0,0 // UpdateTableRequest request = new UpdateTableRequest(TableName, reservedThroughput); // UpdateTableResponse response = otsClient.UpdateTable(request); // Console.WriteLine("LastIncreaseTime: " + response.ReservedThroughputDetails.LastIncreaseTime); // Console.WriteLine("LastDecreaseTime: " + response.ReservedThroughputDetails.LastDecreaseTime); // Console.WriteLine("NumberOfDecreaseToday: " + response.ReservedThroughputDetails.LastIncreaseTime); // Console.WriteLine("ReadCapacity: " + response.ReservedThroughputDetails.CapacityUnit.Read); // Console.WriteLine("WriteCapacity: " + response.ReservedThroughputDetails.CapacityUnit.Write); //} // 描述表 { Console.WriteLine("Start describe table..."); DescribeTableRequest request = new DescribeTableRequest(TableName); DescribeTableResponse response = otsClient.DescribeTable(request); Console.WriteLine("LastIncreaseTime: " + response.ReservedThroughputDetails.LastIncreaseTime); Console.WriteLine("LastDecreaseTime: " + response.ReservedThroughputDetails.LastDecreaseTime); Console.WriteLine("NumberOfDecreaseToday: " + response.ReservedThroughputDetails.LastIncreaseTime); Console.WriteLine("ReadCapacity: " + response.ReservedThroughputDetails.CapacityUnit.Read); Console.WriteLine("WriteCapacity: " + response.ReservedThroughputDetails.CapacityUnit.Write); } //// 删除表 //{ // Console.WriteLine("Start delete table..."); // DeleteTableRequest request = new DeleteTableRequest(TableName); // otsClient.DeleteTable(request); // Console.WriteLine("Table is deleted."); //} }
public void UpdateTableTest() { CreateTable(); var otsClient = OTSClient; var reservedThroughput = new CapacityUnit(0, 0); var request = new UpdateTableRequest("SampleTable", reservedThroughput); var response = otsClient.UpdateTable(request); DeleteTable(); }
public void CreateTestTable(string tableName, PrimaryKeySchema schema, CapacityUnit reservedThroughput, bool waitFlag = true) { var tableMeta = new TableMeta(tableName, schema); var request = new CreateTableRequest(tableMeta, reservedThroughput); OTSClient.CreateTable(request); if (waitFlag) { WaitForTableReady(); } }
/// <summary> /// 通过多个参数构造一个新的<see cref="GetRangeRequest"/> /// </summary> /// <param name="tableName">表名称</param> /// <param name="direction">前向还是后向</param> /// <param name="inclusiveStartPrimaryKey">区间开始位置,包含</param> /// <param name="exclusiveEndPrimaryKey">区间结束位置,不包含</param> /// <param name="consumedCapacityUnitCounter">用户传入的CapacityUnit消耗计数器。</param> /// <param name="columnsToGet">返回的列名称的列表</param> /// <param name="limit">最大返回数</param> public GetIteratorRequest(string tableName, GetRangeDirection direction, PrimaryKey inclusiveStartPrimaryKey, PrimaryKey exclusiveEndPrimaryKey, CapacityUnit consumedCapacityUnitCounter, HashSet <string> columnsToGet = null, int?limit = null, ColumnCondition condition = null) : base(tableName, direction, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey, columnsToGet, limit, condition) { ConsumedCapacityUnitCounter = consumedCapacityUnitCounter; }
public void CheckSingleRow(string tableName, PrimaryKey primaryKey, AttributeColumns attribute, CapacityUnit expectCapacityUnitConsumed = null, HashSet <string> columnsToGet = null, bool isEmpty = false, ColumnCondition condition = null) { var request = new GetRowRequest(tableName, primaryKey, columnsToGet, condition); var response = OTSClient.GetRow(request); PrimaryKey primaryKeyToExpect; AttributeColumns attributeToExpect; if (isEmpty) { primaryKeyToExpect = new PrimaryKey(); attributeToExpect = new AttributeColumns(); } else if (columnsToGet == null || columnsToGet.Count == 0) { primaryKeyToExpect = primaryKey; attributeToExpect = attribute; } else { primaryKeyToExpect = new PrimaryKey(); attributeToExpect = new AttributeColumns(); foreach (var columnName in columnsToGet) { if (primaryKey.ContainsKey(columnName)) { primaryKeyToExpect.Add(columnName, primaryKey[columnName]); } if (attribute.ContainsKey(columnName)) { attributeToExpect.Add(columnName, attribute[columnName]); } } } AssertColumns(primaryKeyToExpect, response.PrimaryKey); AssertColumns(attributeToExpect, response.Attribute); if (expectCapacityUnitConsumed != null) { AssertCapacityUnit(expectCapacityUnitConsumed, response.ConsumedCapacityUnit); } }
public void CreateTestTable() { var primaryKeys = new PrimaryKeySchema(); primaryKeys.Add("PK0", ColumnValueType.String); primaryKeys.Add("PK1", ColumnValueType.Integer); var tableMeta = new TableMeta("SampleTableName", primaryKeys); var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput); OTSClient.CreateTable(request); WaitForTableReady(); }
public static void AssertCapacityUnit(CapacityUnit expect, CapacityUnit actual) { if (expect == null && actual == null) { return; } if (expect == null || actual == null) { Assert.Fail(); } Assert.AreEqual(expect.Read, actual.Read); Assert.AreEqual(expect.Write, actual.Write); }
private void CreateTable(String tableName) { foreach (var tableItem in OTSClient.ListTable(new ListTableRequest()).TableNames) { OTSClient.DeleteTable(new DeleteTableRequest(tableItem)); } var primaryKeySchema = new PrimaryKeySchema(); primaryKeySchema.Add("PK0", ColumnValueType.Integer); var tableMeta = new TableMeta(tableName, primaryKeySchema); var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput); var response = OTSClient.CreateTable(request); WaitForTableReady(); }
private void CreateTable() { var otsClient = OTSClient; var primaryKeySchema = new PrimaryKeySchema(); primaryKeySchema.Add("PK0", ColumnValueType.String); primaryKeySchema.Add("PK1", ColumnValueType.Integer); var tableMeta = new TableMeta("SampleTable", primaryKeySchema); var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput); var response = otsClient.CreateTable(request); WaitForTableReady(); }
public void CreateTableAndDelete() { string tableName = "SampleTableName"; var primaryKeys = new PrimaryKeySchema { { "PK0", ColumnValueType.String }, { "PK1", ColumnValueType.Integer } }; var tableOption = new TableOptions { MaxVersions = 1, TimeToLive = -1 }; var tableMeta = new TableMeta(tableName, primaryKeys); var reservedThroughput = new CapacityUnit(0, 0); var request1 = new CreateTableRequest(tableMeta, reservedThroughput) { TableOptions = tableOption }; var response1 = OTSClient.CreateTable(request1); var request2 = new ListTableRequest(); var response2 = OTSClient.ListTable(request2); Assert.IsTrue(response2.TableNames.Contains(tableName)); Thread.Sleep(1000); var request3 = new DescribeTableRequest(tableName); var response3 = OTSClient.DescribeTable(request3); Assert.AreEqual(tableName, response3.TableMeta.TableName); Assert.AreEqual(primaryKeys, response3.TableMeta.PrimaryKeySchema); Assert.AreEqual(reservedThroughput.Read, response3.ReservedThroughputDetails.CapacityUnit.Read); Assert.AreEqual(reservedThroughput.Write, response3.ReservedThroughputDetails.CapacityUnit.Write); OTSClient.DeleteTable(new DeleteTableRequest(tableName)); var request4 = new ListTableRequest(); var response4 = OTSClient.ListTable(request4); Assert.IsFalse(response4.TableNames.Contains(tableName)); }
//static void Main(string[] args) //{ // OTSClient otsClient = Config.GetClient(); // //DeleteSearchIndex(otsClient); // //DeleteTable(otsClient); // //创建一张TableStore表 // CreateTable(otsClient); // //在TableStore表上创建一个索引表 // CreateSearchIndex(otsClient); // //Wait searchIndex load success // Console.WriteLine("wait searchIndex load success"); // Thread.Sleep(3 * 1000); // ListSearchIndex(otsClient); // CreateSearchIndexWithIndexSort(otsClient); // DescribeSearchIndex(otsClient); // PutRow(otsClient); // //等待索引数据同步成功 // WaiteAllDataSyncSuccess(otsClient, 7); // //MatchAll Query // MatchAllQuery(otsClient); // //MatchQuery // MatchQuery(otsClient); // //MatchPhraseQuery // MatchPhraseQuery(otsClient); // //RangeQuery // RangeQuery(otsClient); // //PrefixQuery // PrefixQuery(otsClient); // //TermQuery // TermQuery(otsClient); // //WildcardQuery // WildcardQuery(otsClient); // //BoolQuery // BoolQuery(otsClient); // Console.ReadLine(); //} public static void CreateTable(OTSClient otsClient) { Console.WriteLine("\n Start create table..."); PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema { { Pk0, ColumnValueType.Integer }, { Pk1, ColumnValueType.String } }; TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema); CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput); otsClient.CreateTable(request); Console.WriteLine("Table is created: " + TableName); }
//static void Main(string[] args) //{ // Console.WriteLine("GlobalIndexSample"); // CreateTableWithGlobalIndex(); // CreateGlobalIndex(); // PutRow(); // GetRangeFromIndexTable(); // DeleteGlobalIndex(); // DeleteTable(); // Console.ReadLine(); //} /// <summary> /// 创建一个带二级索引的表 /// </summary> public static void CreateTableWithGlobalIndex() { //建主表,两列Pk:Pk1、Pk2。 预定义列:Col1、Col2。 //建索引表,索引表中Col1放Pk0 OTSClient otsClient = Config.GetClient(); Console.WriteLine("Start create table with globalIndex..."); PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema { { Pk1, ColumnValueType.String }, { Pk2, ColumnValueType.String } }; TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema); tableMeta.DefinedColumnSchema = new DefinedColumnSchema { { Col1, DefinedColumnType.STRING }, { Col2, DefinedColumnType.STRING } }; IndexMeta indexMeta = new IndexMeta(IndexName); indexMeta.PrimaryKey = new List <string>() { Col1 }; indexMeta.DefinedColumns = new List <string>() { Col2 }; //indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX; //indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX; List <IndexMeta> indexMetas = new List <IndexMeta>() { }; indexMetas.Add(indexMeta); CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput, indexMetas); otsClient.CreateTable(request); Console.WriteLine("Table is created: " + TableName); }
public BatchGetRowResponseItem(string tableName, IRow row, CapacityUnit consumed, int index) { TableName = tableName; Row = row; Consumed = consumed; Index = index; if (row != null) { PrimaryKey = row.GetPrimaryKey(); Attribute = (row as Row).AttributeColumns; } else { PrimaryKey = new PrimaryKey(); Attribute = new AttributeColumns(); } }
private void CreateTable(OTSClient client, String tableName) { foreach (var tableItem in client.ListTable(new ListTableRequest()).TableNames) { client.DeleteTable(new DeleteTableRequest(tableItem)); } var primaryKeySchema = new PrimaryKeySchema(); primaryKeySchema.Add(COLUMN_GID_NAME, ColumnValueType.Integer); primaryKeySchema.Add(COLUMN_UID_NAME, ColumnValueType.Integer); var tableMeta = new TableMeta(tableName, primaryKeySchema); var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput); var response = OTSClient.CreateTable(request); // 创建表只是提交请求,OTS创建表需要一段时间,这里是简单的sleep,请根据实际逻辑修改 WaitForTableReady(); }
public IEnumerable <Row> GetRangeIterator( string tableName, GetRangeDirection direction, PrimaryKey inclusiveStartPrimaryKey, PrimaryKey exclusiveEndPrimaryKey, CapacityUnit consumedCapacityUnitCounter, HashSet <string> columnsToGet = null, int?count = null, IColumnCondition condition = null) { int?leftCount = count; if (leftCount != null && leftCount < 0) { throw new OTSClientException("the value of count must be larger than 0"); } PrimaryKey nextStartPrimaryKey = inclusiveStartPrimaryKey; while (nextStartPrimaryKey != null) { var request = new GetRangeRequest( tableName, direction, nextStartPrimaryKey, exclusiveEndPrimaryKey, columnsToGet, leftCount, condition); var response = GetRange(request); consumedCapacityUnitCounter.Read += response.ConsumedCapacityUnit.Read; nextStartPrimaryKey = response.NextPrimaryKey; foreach (var rowData in response.RowDataList) { yield return(rowData); } if (leftCount != null) { leftCount -= response.RowDataList.Count; if (leftCount <= 0) { break; } } } }
private void CreateAutoIncrementColumnTable(PrimaryKeySchema schema) { var tableMeta = new TableMeta(TestTableName, schema); var tableOptions = new TableOptions { MaxVersions = 10, TimeToLive = -1 }; var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput) { TableOptions = tableOptions }; OTSClient.CreateTable(request); WaitForTableReady(); }
public void UpdateTableAndThenDescribe() { string tableName = "update_table_and_then_describe"; var primaryKeys = new PrimaryKeySchema { { "PK0", ColumnValueType.String }, { "PK1", ColumnValueType.Integer } }; var tableMeta = new TableMeta(tableName, primaryKeys); var reservedThroughput = new CapacityUnit(0, 0); var tableOption = new TableOptions { MaxVersions = 1, TimeToLive = -1 }; var request1 = new CreateTableRequest(tableMeta, reservedThroughput) { TableOptions = tableOption }; var response1 = OTSClient.CreateTable(request1); WaitBeforeUpdateTable(); var request2 = new UpdateTableRequest(tableName) { TableOptions = tableOption }; var response2 = OTSClient.UpdateTable(request2); OTSClient.DeleteTable(new DeleteTableRequest(tableName)); Assert.AreEqual(0, response2.ReservedThroughputDetails.NumberOfDecreasesToday); Assert.AreEqual(0, response2.ReservedThroughputDetails.CapacityUnit.Read); Assert.AreEqual(0, response2.ReservedThroughputDetails.CapacityUnit.Write); }
public decimal CheckAvailableCapacity(string customer, DateTime validFrom, DateTime validTo, decimal quantity, CapacityUnit unit) { return quantity/2; }