public static void TestReadFactPostdataMon(string dir) { var recordDescriptors = CtrlGenParser.ParseAll(dir) .OrderBy(d => d.InFile) .ToArray(); var recordDescriptor = recordDescriptors.Single(d => d.TableName.EndsWith("fact_posdata_mon")); var path = recordDescriptor.GetDataFilePaths(dir).First(); using (var reader = recordDescriptor.GetBinaryRecordReader(path)) { var buf = new byte[recordDescriptor.Length]; // Read top 3 records for demo. for (var i = 0; i < 3; i++) { reader.Read(buf); var model = new FactPosdataMon(); model.ReadFromRecordBuffer(buf); Console.WriteLine(model); } } }
private static void GenerateModels(string dir) { // var recordDescriptors = Tests.GetRecordDescriptors(dir); var recordDescriptors = CtrlGenParser.ParseAll(dir); foreach (var desc in recordDescriptors) { ModelClassGenerator.GenerateClass(desc); } }
public static void LoadFromPath(string dir) { var log = LogManager.GetLogger(nameof(LoadFromPath)); var recordDescriptors = CtrlGenParser.ParseAll(dir) .OrderBy(d => d.InFile) // .Where(d => d.TableName.EndsWith("fact_data_item_mon")) .ToArray(); var descsAndFiles = recordDescriptors .SelectMany(d => d.GetDataFilePaths(dir).Select(p => (Desc: d, Path: p))) .OrderByDescending(d => new FileInfo(d.Path).Length) .ToArray(); log.Info($"Found {recordDescriptors.Length} record descriptors, {descsAndFiles.Length} data files."); var cfg = GetIgniteConfiguration(); using (var ignite = Ignition.Start(cfg)) { // log.Info("Ignite started, deleting caches..."); DeleteCaches(recordDescriptors, ignite); log.Info("Ignite started, creating caches..."); CreateCaches(recordDescriptors, ignite); var sw = Stopwatch.StartNew(); _loadStartTime = DateTime.Now; var dataFiles = new ConcurrentBag <DataFileInfo>(); // ReSharper disable once AccessToDisposedClosure (not an issue). Parallel.ForEach( descsAndFiles, new ParallelOptions { MaxDegreeOfParallelism = 20 }, descAndFile => InvokeLoadCacheGeneric(descAndFile.Desc, descAndFile.Path, ignite, dataFiles)); var elapsed = sw.Elapsed; LogStats(ignite, dataFiles, elapsed); } }