(IStorageEngine engine = STSdb.FromFile(DataBase))
{
XFile file = engine.OpenXFile(XFileName);
Random random = new Random();
byte[] buffer = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < 100; i++)
{
long position = random.Next();
file.Seek(position, SeekOrigin.Begin);
file.Write(buffer, 0, buffer.Length);
}
engine.Commit();
}
}
//XFile uses special XTable implementation to provide effective sparse file functionality.
//One storage engine can have many files
#endregion
#region Client/Server
static void ClientUpdateData()
{
using (IStorageEngine engine = STSdb.FromNetwork("localhost", 7182))
{
ITable table = engine.OpenXTable("table");
for (int i = 0; i < 100000; i++)
{
table[i] = i.ToString();
}
engine.Commit();
}
}
static void ServerHandleData()
{
string _dbname = "test.stsdb4";
using (IStorageEngine engine = STSdb.FromFile(_dbname))
{
var server = STSdb.CreateServer(engine, 7182);
server.Start();
//server is ready for connections
//server.Stop();
}
}
//The created server instance will listen on the specified port
//and receive/send data from/to the clients
#endregion
#region Memory Usage
/*
min/max children (branches) in each internal (non-leaf) node
max operations in the root node
min/max operations in each internal node
min/max records in each leaf node
number of cached nodes in the memory
*/
static void MemoryUsageHandle()
{
using (StorageEngine engine = (StorageEngine)STSdb.FromFile(DataBase))
{
//下面的demo都是STS.DB的默认值设置
//min/max children (branches) in each internal node
engine.INTERNAL_NODE_MIN_BRANCHES = 2;
engine.INTERNAL_NODE_MAX_BRANCHES = 4;
//max operations in the root node
engine.INTERNAL_NODE_MAX_OPERATIONS_IN_ROOT = 8 * 1024;
//min/max operations in each internal node
engine.INTERNAL_NODE_MIN_OPERATIONS = 64 * 1024;
engine.INTERNAL_NODE_MAX_OPERATIONS = 128 * 1024;
//min/max records in each leaf node
engine.LEAF_NODE_MIN_RECORDS = 16 * 1024;
engine.LEAF_NODE_MAX_RECORDS = 128 * 1024; //at least 2 x MIN_RECORDS
//number of cached nodes in memory
engine.CacheSize = 32;
}
}
#endregion
#region Heap
/*using =>
STSdb4.WaterfallTree;
STSdb4.Storage;
STSdb4.Remote.Heap;
*/
static void HeaperEngine()
{
//Server端
IHeap heap = new Heap(new FileStream("Heap.db", FileMode.OpenOrCreate));
HeapServer server = new HeapServer(heap, 7183); //监听堆服务器
server.Start(); //开始监听
//从远程堆中创建 IStorageEngine 引擎,并处理数据
//using (IStorageEngine engine = STSdb.FromHeap(new RemoteHeap("host", 7183)))
//{
// ITable table = engine.OpenXTable("table");
// for (int i = 0; i < 100000; i++)
// {
// table[i] = i.ToString();
// }
// engine.Commit();
//}
}
#endregion
//...
}
}
?
|