Примеры: Интеграция MetaTrader 4 с MS SQL-сервером - страница 2

 

 А почему MS-SQL - для MySQL эта же задача выглядит существенно проще и, по-моему, реализация более универсальна (TicksInMySQL).-

Можно использовать любой SQL-запрос, не возвращающий данных от SQL-сервера. Хоть структуру данных составляй и привилегии пользователей прописывай прямо из MQL4, не говоря уже об обновлении или добавлении данных в таблицы.

 Сразу скажу, 10Gb сам не пробовал загонять в MySQL, но по документации размер таблиц в нем ограничивается только операционной системой на которой он стоит + кластеризация + партиционирование (одну таблицу можно на несколько серверов разнести). Что касается скорости выборки данных (а это важно для тестирования стратегий при таких объемах данных), MySQL, установленный на легковесной системе типа FreeBSD или QNX будет пошустрее MS-SQL (правда ничего не могу сказать насчет последнего MS-SQL на платформе MS Windows Server 2008, работающем в режиме ядра - говорят что он ощутимо быстрее своих предшественников). С другой стороны, может ли себе начинающий трейдер позволить купить  MS-SQL + MS Windows Server 2008, или ждать пока поломают?

 A MySQL - LGPL-продукт, законно можно качать новейшие версии и использовать для некоммерческих целей, таких как тестирование стратегий. 

 Еще один плюс MySQL - за умеренную плату можно использовать вычислительные мощности серверов Интернет-провайдеров.  

 

При выгрузке в текстовый файл не выгружается индекс бара. Если принять решение, что индексом бара будет просто порядковый номер строки,

то нас ожидает проблема пропущенных баров, и при изменении - перезагрузки номера выгруженных баров в MS SQL и MT4 могут не совпасть.

Пока я не решил эту проблему, но думаю, что ее решение вполне возможно перезагрузкой истории после качественного обновления истории

в самом MT4.

  Если в качестве индекса бара (первичного ключа) использовать строковое представление времени этого бара, то проблема решается. Для нескольких символов и/или таймфреймов в одной таблице можно использовать сложный индекс (первичный ключ) - время бара + символ [+ обозначение таймфрейма]. 

 
YuSP:

 А почему MS-SQL - для MySQL эта же задача выглядит существенно проще и, по-моему, реализация более универсальна (TicksInMySQL).-

Можно использовать любой SQL-запрос, не возвращающий данных от SQL-сервера. Хоть структуру данных составляй и привилегии пользователей прописывай прямо из MQL4, не говоря уже об обновлении или добавлении данных в таблицы.

 Сразу скажу, 10Gb сам не пробовал загонять в MySQL, но по документации размер таблиц в нем ограничивается только операционной системой на которой он стоит + кластеризация + партиционирование (одну таблицу можно на несколько серверов разнести). Что касается скорости выборки данных (а это важно для тестирования стратегий при таких объемах данных), MySQL, установленный на легковесной системе типа FreeBSD или QNX будет пошустрее MS-SQL (правда ничего не могу сказать насчет последнего MS-SQL на платформе MS Windows Server 2008, работающем в режиме ядра - говорят что он ощутимо быстрее своих предшественников). С другой стороны, может ли себе начинающий трейдер позволить купить  MS-SQL + MS Windows Server 2008, или ждать пока поломают?

 A MySQL - LGPL-продукт, законно можно качать новейшие версии и использовать для некоммерческих целей, таких как тестирование стратегий. 

 Еще один плюс MySQL - за умеренную плату можно использовать вычислительные мощности серверов Интернет-провайдеров.  

Шустродейсвие MySQL повыше..  но необходимо ставить UNIX машину...  ( со слов коллег, сам не работал с MySQL )

реализация под MySQL была описана и путь пройден , под MS SQL описанной реализации не было.

кроме того у кого то есть под рукой MS SQL у кого то MySQL.  Хотя используя принцип не важно по сути какой сервер.

При написании статьи преследовал цели, привести простой пример использования связки MT с MS SQL,  просто показать интеграцию.

 
YuSP:

При выгрузке в текстовый файл не выгружается индекс бара. Если принять решение, что индексом бара будет просто порядковый номер строки,

то нас ожидает проблема пропущенных баров, и при изменении - перезагрузки номера выгруженных баров в MS SQL и MT4 могут не совпасть.

Пока я не решил эту проблему, но думаю, что ее решение вполне возможно перезагрузкой истории после качественного обновления истории

в самом MT4.

  Если в качестве индекса бара (первичного ключа) использовать строковое представление времени этого бара, то проблема решается. Для нескольких символов и/или таймфреймов в одной таблице можно использовать сложный индекс (первичный ключ) - время бара + символ [+ обозначение таймфрейма]. 

отчасти эта проблема надумана мной, согласен... имея время открытия бара по сути индекс бара не нужен.
 
YuraZ:

Шустродейсвие MySQL повыше..  но необходимо ставить UNIX машину...  ( со слов коллег, сам не работал с MySQL )

реализация под MySQL была описана и путь пройден , под MS SQL описанной реализации не было.


Это не совсем так, MySql работает на разных платформах. Дома у меня локальная копия сайта с базой под MySql + Apache работает в составе пакета Denwer на Windows XP SP3. У хостера сайт и MySql база работает под FreeBSD, тоже не совсем Unix.

Чего мне не хватает в базах MySql, это ограничения некоторого синтаксиса и функций. Например, написать так в MySql нельзя:

SELECT * 
FROM `catalog` 
WHERE ID
IN (
SELECT ID
FROM `catalog` 
ORDER BY id DESC 
LIMIT 3
)

Получим ошибку: "#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'".

В MS SQL запросто (таблица только другая в примере):

SELECT *
  FROM [dbo].[Terminal]
where
    ID IN (
        select top 3
        [ID]
        from [dbo].[Terminal]
        order by [ID] desc
    )

Не работал лично с MySql выше 4-й версии (5-я на хостерах мало где есть), но в 4-й и ниже версиях MySql нет ни триггеров, ни views, ни хранимых процедур. Для сайта пока хватает, мирюсь с этим, PHP+MySql более дешёвый хостинг, быстрее что-то поменять по мелочи. Но в целом для профессиональных баз предпочитаю выбор из Oracle или MS SQL. Рабочей базы под MySql на 50 Гб вживую пока не видел, хотя это не значит, что их нет.

Вообще это дело вкуса.

По поводу производительности - однозначного ответа нет, можете посмотреть статьи "MySQL vs MS SQL Server", это сайт о MySql, там сравнивают в основном MS SQL 2000 и MySql 5.0, упоминая о том, что по тестам июня 2006г. MS SQL 2005 x64 занял 1-е место. Там же сравнивается и функциональность СУБД. Нашёл и такую статью: "Производительность и масштабируемость: SQL Server Benchmarks", обратите внимание на фразу "существует масса доказательств того, что SQL Server более производителен, масштабируем и дешев чем любой из конкурентов". Имеется ввиду сравнение коммерческих (платных) версий MySQL и MS SQL серверов.

Итог.

Делайте базы на чём хотите и что знаете :)
главное - избежать в будущем миграции огромном по размеру базы с одной СУБД на другую.

 
chv:
YuraZ:

Шустродейсвие MySQL повыше..  но необходимо ставить UNIX машину...  ( со слов коллег, сам не работал с MySQL )

реализация под MySQL была описана и путь пройден , под MS SQL описанной реализации не было.


Это не совсем так, MySql работает на разных платформах. Дома у меня локальная копия сайта с базой под MySql + Apache работает в составе пакета Denwer на Windows XP SP3. У хостера сайт и MySql база работает под FreeBSD, тоже не совсем Unix.

..

Итог.

Делайте базы на чём хотите и что знаете :)
главное - избежать в будущем миграции огромном по размеру базы с одной СУБД на другую.

на WIN XP  MySQL так же бодр  как и на UNIX машине ?

---

2 Вы пишите что FreeBSD не совсем UNIX...

  а что Вы подразумеваете под тогда если убрать приставку "НЕ"


вообще то UNIX в моем понимании это не конкретная  операционная система

это некий КЛОН ...

т е Linix,  FreeBSD , UNIX-6, UNIX-7 , AIN,SUN OS,SCO,IBM (AIX) , SYSTEM-5... и т д   все это  клоны UNIX

кроме того у каждого клона своя реализация - версия


точно так же как и WINDOWS имеет несколько реализаций да и любая ОС


MS DOS имела к примеру клон DR-DOS...

 

Тестов производительности SQL я не проводил, не могу сказать об этом ничего. Лучше поискать готовые е-публикации.

Что касается FreeBSD и Unix - один знакомый админ сказал мне, что знает хорошо FreeBSD, немного Unix и не знает Linux. Из этого я и заключил, что это именно клоны, и знание одного не гарантирует знаний другого.

 
chv:

Тестов производительности SQL я не проводил, не могу сказать об этом ничего. Лучше поискать готовые е-публикации.

Что касается FreeBSD и Unix - один знакомый админ сказал мне, что знает хорошо FreeBSD, немного Unix и не знает Linux. Из этого я и заключил, что это именно клоны, и знание одного не гарантирует знаний другого.

 


Я не хочу ничего плохого сказать

 

но вывод немного неверный

 

из систем которые я описал Linix,  FreeBSD , UNIX-6, UNIX-7 , AIN,SUN OS,SCO,IBM (AIX) , SYSTEM-5...

мне не довелось видеть   AIN,  IBM (AIX), SYSTEM-5

но приходилось даже на EC1045 работать в  VMS  с какой то реализацией UNIX даже название не помню 

но после знаний UNIX-6 UNIX-7 и INMOS который был русcким клоном UNIX,  работа c этим UNIX проблем не представила

 

все это семейство UNIX

 

в том то и вся прелесть что в каждом клоне UNIX к примеру есть команда ls   с  типовыми ключами   которы во всех клонах  присутвуют

и переучиваться не надо - лишь некоторые тонкости могут отличаться 

практически во всех UNIX есть каталоги  /BIN /ETC /TMP  /USR

почти во всех UNIX в каталоге /ETC/PASSWORD живет

во всех /BIN/LS живет

 

поэтому если Ваш знакомый  отлично знает один из клонов UNIX  , а именно  FreeBSD ,

то он знает  семейство UNIX  в принципе  , а значит с клонами типа  LINUX разобраться сумеет без проблем

 

если Вы говорите о знаниях которые уже отложились на уровне подсознания - типа разбуди админа юниксоида

он без труда перечислит в каком каталоге какие системыне файлы лежат - но именно в том юнихе который он сопровождает

но дайте ему недельку другую - хороший админ освоит и другой юних без проблем -  потому,

что это не сложно и потому, что они принципиально не расходятся

проблемы сесть за штурвал любого клона никакой

 

было дело , изменил подсказку с > на #

подошел ко мне тогда начальник и спросил а ты откуда пароль рута знаешь?

я ему показал шутку - как меняется подсказка в окружении :-) он похихикал и успокоился

правда к тому времени у меня лежал в каталоге shell с битом супервизора

но в каталг этот системные утилиты попадать не могли , от того и не знал начальник как я реально изучал ЮНИХ  , ;-)

начальник не любил если кто то знал чуточку больше чем он, пресекал если кто то вдруг

образовываться начинал... боялся наверно за место свое... вот и пресекал

тогда в стране персоналок не было... дома не поизучать -  а он гад не давал

 

системные утилиты не видели мой PS как рутовый , потому как исходники у юниха есть

и все утилиты  начиная с ps login ls find who и многие другие  ,

 которые могли обнаружить и залогировать мое присутвие

были перекомпилированны что бы мой PS не показывать как PS рута и не видеть мои скрытые каталоги

---

так что исходники с одной стороны это хорошо

а с другой попав разок в систему

она  потом практически может не видеть кто в ней находится

только лампочки на модемах или  концентраторах мигают диски шуршат ну мало ли что там юних делает

---

отрытые операционки достаточно уязвимы

имеют  клонов

т к  имеют открытые исходники

 
chv:

Тестов производительности SQL я не проводил, не могу сказать об этом ничего. Лучше поискать готовые е-публикации.

Что касается FreeBSD и Unix - один знакомый админ сказал мне, что знает хорошо FreeBSD, немного Unix и не знает Linux. Из этого я и заключил, что это именно клоны, и знание одного не гарантирует знаний другого.

А Вы знаете такие толковые публикации на русском?
 

'В общем старая как мир тема. MQL MSSQL2005.'

некоторые проблемы SQL 2005 2008

прошу подключиться всех. кто может оказать помощь

Причина обращения: