Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        private static void GenerateModels(string dir)
        {
            // var recordDescriptors = Tests.GetRecordDescriptors(dir);
            var recordDescriptors = CtrlGenParser.ParseAll(dir);

            foreach (var desc in recordDescriptors)
            {
                ModelClassGenerator.GenerateClass(desc);
            }
        }
Пример #3
0
        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);
            }
        }