Показаны сообщения с ярлыком TimeSeries. Показать все сообщения
Показаны сообщения с ярлыком TimeSeries. Показать все сообщения

воскресенье, 7 июня 2020 г.

TimeSeries DataBase

TimeSeries01 DataBase.
Bars.Count 39 700 342 bars

Delete BarSeries URANUS, MARS BarSeriesId = 6,7,8,9

Last BackUp with URANUS, MARS TimeSeries01_200608

After Delete
Bars.Count 32 554 851 bars


пятница, 11 мая 2018 г.

Save some some sql scripts for fast restore in future

use DbTrade2

DECLARE @DT DateTime
DECLARE @DT1 DateTime
DECLARE @DT2 DateTime

DECLARE @CUR_TABLE VARCHAR(100)
SET @CUR_TABLE = 'ORDERS'
-- ORDERS
SET @DT1 = GETDATE()
SELECT @DT1 [DateTime], DB_NAME()  [DB_NAME], @CUR_TABLE [TABLE]

SET @DT = GeTDATE()
Select @DT [DateTime], 'Orders To Delete' as Operation, Count(*) as Cnt, 
Min(Cast( Modified as Date)) as Dt1, Max(Cast( Modified as Date)) as Dt2
From Orders
-- Go

DELETE from Orders
where Cast( Created as Date) NOT IN
(
select top 2 Cast( o.Created as Date) dt
from Orders o
Group by Cast( o.Created as Date)
Order by Cast( o.Created as Date) DESC
)
--GO
select  Cast( o.Created as Date) DT, Count(*) OrdersCount
from Orders o
Group by Cast( o.Created as Date)
Order by Cast( o.Created as Date) DESC
--GO

SET @DT = GeTDATE()
Select @DT [DateTime],'Orders After Delete' as Operation, Count(*) as Cnt, 
Min(Cast( Modified as Date)) as Dt1, Max(Cast( Modified as Date)) as Dt2
From Orders
--Go

SET @DT2 = GeTDATE()

Select @DT2 [DateTime], DB_NAME() [DB_NAME], @CUR_TABLE [TABLE],
CAST((@dt2 - @dt1) AS Time) as 'Elapsed_Time'
GO

-- TRADES
Select 'Trades To Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From Trades
Go

DELETE from Trades
where Cast( DT as Date) NOT IN
(
select top 2 Cast( DT as Date) DT
from Trades o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
)
GO
select  Cast( DT as Date) dt, Count(*) TradesCount
from Trades o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
GO

Select 'Trades After Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From Trades
Go

-- DEALS
SELECT 'DEALS' [Context]
GO

DECLARE @DT DateTime
DECLARE @DT1 DateTime
DECLARE @DT2 DateTime

DECLARE @CUR_TABLE VARCHAR(100)

SET @CUR_TABLE = 'DEALS'

SET @DT1 = GETDATE()
SELECT @DT1 [DateTime], DB_NAME()  [DB_NAME], @CUR_TABLE [CUR_TABLE]

Select 'Deals Count' as Operation
--go
Select 'Deals Count' as Operation, Count(*) as Cnt,
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
from Deals
-- go

SET @DT2 = GETDATE()
SELECT @DT2 [DateTime], DB_NAME()  [DB_NAME],  @CUR_TABLE [CUR_TABLE],
CAST((@dt2 - @dt1) AS Time) as 'Elapsed_Time'

--select  Cast( DT as Date) dt, Count(*) DealsCount
--FROM Deals
--Group by Cast( DT as Date)
--Order by Cast( DT as Date) DESC

--Select 'Deals Delete' as Operation

--DELETE from Deals
--where Cast( DT as Date) NOT IN
--(
--select top 3 Cast( DT as Date) dt
--from Deals o
--Group by Cast( DT as Date)
--Order by Cast( DT as Date) DESC
--)
--GO
--select  Cast( DT as Date) dt, Count(*) DealsCount
--from Deals o
--Group by Cast( DT as Date)
--Order by Cast( DT as Date) DESC
--GO

-- EventLogs
--USE EventLog
--EXECUTE dbo.SP_EVLS_CLEAR_2_DAYS
--USE EventLog1
--EXECUTE dbo.SP_EVLS_CLEAR_2_DAYS
--USE EvlContext
--EXECUTE dbo.SP_EVLS_CLEAR_2_DAYS

/*
Use EventLog
Select 'EventLog To Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From EventLogItems
Go
DELETE from EventLogItems 
where Cast( DT as Date) NOT IN
(
select top 2 Cast( DT as Date) dt
from EventLogItems o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
)
GO
select Cast( DT as Date) dt, Count(*) as EvliCount
from EventLogItems o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
GO
Select 'EventLog After Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From EventLogItems
Go
*/

USE TimeSeries01
Declare @dt1 as DateTime, @dt2 as DateTime

SET @dt1 = GETDATE()
Select @dt1 as 'Start DateTIme'
delete from Bars
where id In
(
Select b.Id
FROM dbo.Bars b
INNER JOIN TimeSeries ts on b.BarSeriesId = ts.Id
INNER JOIN Tickers t on ts.TickerId = t.Id
inner join TradeBoards tb on t.TradeBoardId = tb.Id
Where (tb.Id = 2 Or tb.Id = 3) AND 
(cast(Dt as Time) < '10:00:00' OR cast(DT as Time) > '23:50:00')
)

SET @dt2  = GETDATE()
Select @dt2 as 'Finish DateTIme'
Select cast((@dt2 - @dt1) as Time) as 'ElapsedTime'

go

USE EventLog1
EXECUTE [dbo].[SP_EVLS_CLEAR_2_DAYS]
GO

USE EventLog
EXECUTE [dbo].[SP_EVLS_CLEAR_2_DAYS]
GO

USE EvlContext
EXECUTE [dbo].[SP_EVLS_CLEAR_2_DAYS]

GO


воскресенье, 22 апреля 2018 г.

Config DataBase with Quotes for projects

Конфигурация доступа к БД котировок

<WebClients>
  <BarWebClient>
    <!--<Code>StringWebClient</Code>-->
    <BaseAddress>http://localhost/gs.trade.web.api.timeseries01/</BaseAddress>
    <!--<BaseAddress>http://185.31.162.98/gs.trade.web.api.timeseries01/</BaseAddress>-->

<TimeSeriesStatWebClient>
    <!--<Code>StringWebClient</Code>-->
    <BaseAddress>http://localhost/gs.trade.web.api.timeseries01/</BaseAddress>
    <!--<BaseAddress>http://185.31.162.98/gs.trade.web.api.timeseries01/</BaseAddress>-->

Активная опция localhost подразумевает наличие БД котировок нa localhost. То есть требуется как минимум еженедельная синхронизация БД для всех hosts, если тестирование производится еженедельно.

воскресенье, 3 января 2016 г.

Compress, TimeSeries, UTests, Binary

GS.Trade.Series2
GS.Trade.TimeSeries.Test_01
public void BinarySerializeBarSeries()

1. BinarySerialization
2. Compress

Имя теста: BinarySerializeBarSeries
Выходные данные теста: Пройден
Результат Стандартный вывод:

Bars: 9770, BytesBar: 723517, BytesBarStr: 462761, BytesBarStrPacked: 403982

BytesBar: 167343, BytesBarStr: 113724, BytesBarStrPacked: 113631

t1: 0:00:00,0910052 t2: 0:00:00,0580033, t3: 0:00:00,0650037

Best Variant 2

 _dt1 = DateTime.Now;
                var bytesBar = BinarySerialization.SerializeToByteArray(bars);
                var bsBarsZip = Compressor.Compress(bytesBar);
                var bytesBack = Compressor.DeCompress(bsBarsZip);
                var barsBack = BinarySerialization.DeSerialize<List<Dto.Bar>>(bytesBack);
                // barsBack[10].Open = 123;
                _dt2 = DateTime.Now;
                var t1 = Diff(_dt1, _dt2);

                VerifyCollection(bars, barsBack);
           
                _dt1 = DateTime.Now;
                var barsStr = bars.Select(b => b.ToStr()).ToList();
                var bytesBarStr = BinarySerialization.SerializeToByteArray(barsStr);
                var bsBarsStrZip = Compressor.Compress(bytesBarStr);
                var bytesBarStrBack = Compressor.DeCompress(bsBarsStrZip);
                var barsStrBack = BinarySerialization.DeSerialize<List<string>>(bytesBarStrBack);
                var barsDto = barsStrBack.Select(s => s.ToBarDto()).ToList();
                
                _dt2 = DateTime.Now;
                var t2 = Diff(_dt1, _dt2);
                
                VerifyCollection(bars, barsDto);

                _dt1 = DateTime.Now;
                var barsStrPacked = bars.Select(b => b.ToStrPacked()).ToList();
                var bytesBarStrPacked = BinarySerialization.SerializeToByteArray(barsStrPacked);
                var bsBarsStrPackedZip = Compressor.Compress(bytesBarStrPacked);
                var bytesBarStrPackedBack = Compressor.DeCompress(bsBarsStrPackedZip);
                var barsStrPackedBack = BinarySerialization.DeSerialize<List<string>>(bytesBarStrPackedBack);
                var barsDtoPack = barsStrPackedBack.Select(BarSimpleExt.ToBarSimple).ToList();

                _dt2 = DateTime.Now;
                var t3 = Diff(_dt1, _dt2);


                VerifyCollection(bars, barsDtoPack);


понедельник, 9 ноября 2015 г.

Sql,TimeSeries01

Частично восстановлен после потери в результате сбоя

USE TimeSeries01
Declare @dt1 as DateTime, @dt2 as DateTime

SET @dt1 = GETDATE()
Select @dt1 as 'Start DateTIme'
delete from Bars
where id In
(
Select b.Id
FROM dbo.Bars b
INNER JOIN TimeSeries ts on b.BarSeriesId = ts.Id
INNER JOIN Tickers t on ts.TickerId = t.Id
inner join TradeBoards tb on t.TradeBoardId = tb.Id
Where (tb.Id = 2 Or tb.Id = 3) AND 
(cast(Dt as Time) < '10:00:00' OR cast(DT as Time) > '23:50:00')
)

SET @dt2  = GETDATE()
Select @dt2 as 'Finish DateTIme'
Select cast((@dt2 - @dt1) as Time) as 'ElapsedTime'
go

воскресенье, 18 октября 2015 г.

суббота, 25 октября 2014 г.

TimeSeries Project

D:\vspr12\Trade\GS\Trade\GS.Trade.TimeSeries\GS.Trade.TimeSeries.sln - проект с DdeTimeSeries for Quotes Publish
D:\vspr12\Trade\GS\Trade\GS.Trade.Series2\GS.Trade.Series2.sln
D:\vspr12\Trade\GS\Trade\GS.Trade.Series\GS.Trade.Series.sln

понедельник, 31 марта 2014 г.

Capasity - свойство

1.
Необходимо добавить свойство Capasity во все Коллекции и Контейнеры GS.Trade с возможностью инициализации из .xml.
Пока добавлены в TimeSeries и EventLog.

TimeSeries Update

TimeSeries

1. Добавил Capasity, CapasityLimit. Эти параметры задаются пока HardCoded
    После превышения (Capasity + CapasityLimit) происходит Очистка до Count = Capasity.

Capasity = 1024
Limit = 256

Цель - при длительной или непрерывной работе старые сообщения занимают память.