private void Run(Action <BenchmarkIteration, ObjectDB <IFlatbufferObject>, IFlatbufferObject> action, int dataIndex, int dataSize) { var data = InputData[dataIndex]; var factories = new List <Func <ByteBuffer, IFlatbufferObject> > { (bb) => Data_8b.GetRootAsData_8b(bb), (bb) => Data_128b.GetRootAsData_128b(bb), (bb) => Data_1KB.GetRootAsData_1KB(bb), (bb) => Data_1MB.GetRootAsData_1MB(bb), }; var nRecords = dataSize; var buffer = 100_000; using (var db = new ObjectDB <IFlatbufferObject>(FileStorageEngineFactory.Create("benchmark", SIZE_15GB, nRecords + buffer), new FlatBufferSerializer(factories))) { // set up data for (int i = 0; i < nRecords; i++) { db.Insert(data); if (i % 10000 == 0 && i > 0) { Console.WriteLine(i); } } // run benchmark foreach (BenchmarkIteration iter in Benchmark.Iterations) { action(iter, db, data); } } }
private void Insert(BenchmarkIteration iter, ObjectDB <IFlatbufferObject> db, IFlatbufferObject data) { using (iter.StartMeasurement()) { for (var i = 0; i < Benchmark.InnerIterationCount; i++) { db.Insert(data); } } }
//------------------------------------------------------------------------- /// <summary> /// 将对象插入数据库 /// </summary> /// <param name="obj"></param> /// <returns>返回一个结果对象 Result。如果发生错误,则 Result 中包含错误信息;如果没有错误,result.Info即是obj</returns> public static Result insert(Object obj) { if (obj == null) { throw new ArgumentNullException(); } Result result = ObjectDB.Insert((IEntity)obj); return(result); }
public void InsertReturnsGuid() { var expectedGuid = Guid.NewGuid(); var storageEngine = new Mock <StorageEngine>(); Mock <Serializer <object> > serializer = new Mock <Serializer <object> >(); ObjectDB <object> db = new ObjectDB <object>(storageEngine.Object, serializer.Object, () => expectedGuid); var guid = db.Insert(BitConverter.GetBytes(UInt64.MaxValue)); Assert.Equal(expectedGuid, guid); }
private static Result Insert(IEntity obj, EntityInfo entityInfo, Boolean isInsertParent) { Result result = Validator.Validate(obj, "insert"); if (result.HasErrors) { return(result); } if (isInsertParent && entityInfo.Parent != null) { IEntity objP = Entity.New(entityInfo.Type.BaseType.FullName); List <EntityPropertyInfo> eplist = Entity.GetInfo(objP).SavedPropertyList; foreach (EntityPropertyInfo info in eplist) { if (info.IsList) { continue; } objP.set(info.Name, obj.get(info.Name)); } ObjectDB.Insert(objP); obj.Id = objP.Id; } List <IInterceptor> ilist = MappingClass.Instance.InterceptorList; for (int i = 0; i < ilist.Count; i++) { ilist[i].BeforInsert(obj); } IDbCommand cmd = DataFactory.GetCommand(getInsertSql(entityInfo), DbContext.getConnection(entityInfo)); OrmHelper.SetParameters(cmd, "insert", obj, entityInfo); lock (objLock) { executeCmd(cmd, entityInfo, ref obj); } for (int i = 0; i < ilist.Count; i++) { ilist[i].AfterInsert(obj); } CacheUtil.CheckCountCache("insert", obj, entityInfo); result.Info = obj; CacheTime.updateTable(obj.GetType()); return(result); }
static void Main(string[] args) { Guid guid; // create a database var pathToDataDir = "db-data"; var fileStorageEngine = FileStorageEngineFactory.Create(pathToDataDir, SIZE_1G, MAX_ENTRIES); using (var db = new ObjectDB <object>(fileStorageEngine, new BinaryFormatterSerializer())) { // create var data = new MyData(1, "hello world"); Console.WriteLine("inserting object: " + data); guid = db.Insert(data); Console.WriteLine("GUID of inserted object={0}", guid); // read data = db.Read <MyData>(guid); Console.WriteLine("read object: {0}", data); // update data.Text = "very interesting text"; Console.WriteLine("updating object: {0}", data); db.Update(guid, data); } // re-open existing databse using (var db = new ObjectDB <object>(FileStorageEngineFactory.Open(pathToDataDir), new BinaryFormatterSerializer())) { // read after re-opening the db var data = db.Read <MyData>(guid); Console.WriteLine("object after re-opening the DB: {0}", data); // delete Console.WriteLine("deleting object"); db.Delete(guid); // RecordNotFoundException after deletion try { db.Read <MyData>(guid); } catch (RecordNotFoundException) { Console.WriteLine("object was deleted"); } } }
private void Delete(BenchmarkIteration iter, ObjectDB <IFlatbufferObject> db, IFlatbufferObject data) { List <Guid> ids = new List <Guid>(); for (var i = 0; i < Benchmark.InnerIterationCount; i++) { ids.Add(db.Insert(data)); } using (iter.StartMeasurement()) { foreach (var id in ids) { db.Delete(id); } } }