.net - type - rezoom sql




Отчеты F#и «корпоративного уровня» (4)

Как он сравнивается с другими технологиями отчетности и может ли он легко интегрироваться в корпоративную среду?

Я не знаю, как F # сравнивается с другими технологиями отчетности, но я развернул его в более чем одной корпоративной среде, и это в основном то же самое, что и C #, то есть простой и надежный.

Как вы обращались к безопасности?

То же, что и C #.

Правильно, какой профиль памяти требуется F # (мы говорим миллионы записей)?

Я нашел одну ошибку GC в .NET за 5 лет использования, и она не была специфичной для F #. У меня было несколько проблем с большими объектами (опять же, а не с F #), но, в общем, GC является надежным и эффективным и собирает агрессивно.

Я обработал миллиарды записей и нашел F # чрезвычайно быстрым и очень надежным. Обратите внимание, что F # используется в Microsoft Bing AdCenter (для размещения объявлений) и Microsoft Halo 3, для обоих из которых требуются обработанные терабайтные наборы данных.

Хорошо ли он обрабатывает табличные данные?

Да, и у вас есть простой параллелизм (см. Модуль Array.Parallel ), но его основная сила по сравнению с другими инструментами заключается в манипулировании структурированными данными, такими как деревья и графики.

Это эффективно?

Да.

Наш текущий клиент, одна из крупнейших страховых компаний в мире, продемонстрировал 10-процентное улучшение производительности с C ++ до F # (а также сокращение размера кода на 10 раз).

Предыдущий клиент видел улучшение производительности, перемещая компилятор из OCaml в F #. Это впечатляет, потому что OCaml был специально разработан для написания компиляторов и работает очень быстро.

Бывший клиент заставил нас переписать свою торговую платформу, и мы увидели улучшения пропускной способности и латентности 100x, хотя мы перешли с не-GC C ++ на GC'd F #.

Насколько легко его поддерживать (особенно, если код растет)?

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

Наш текущий клиент поставил свой первый код F # в живую в апреле прошлого года, и у его сопровождающего не было проблем, несмотря на то, что он вообще не тренировался в F # (или OCaml).

Какие сторонние надстройки, плагины и т. Д. Необходимы для того, чтобы что-то работать (или он может делать все, что угодно)?

Мы никогда не использовали их (но мы продаем два!). Единственными сторонними вещами, которые я рассматривал, являются элементы управления WPF, которые, опять же, не являются F # специфическими.

Сколько работы (часы программирования и т. Д.) Требуется по сравнению с другими системами отчетности (для аналогичных результатов)?

Не знаю, извините. Похоже, у нас есть работа с Dialogue и HP Extreme, поэтому я скоро узнаю ...

Насколько сложной была реализация (по сравнению с аналогичными технологиями)?

F # код намного проще, чем старые основные языки, такие как C ++, C # и Java.

Я хотел бы подчеркнуть, что F # действительно выплачивает дивиденды, когда вы используете его для атаки, которые слишком сложны для решения, используя более традиционные инструменты, а не просто переписывая старый код в F #.

Например, наш текущий клиент использует механизм бизнес-правил, стоимость которого составляет около 1 000 000 фунтов стерлингов, но он не решает их бизнес-задачи (борьба с большими столами, борьба с математикой), поэтому я написал им демо-заявку на заказ за неделю работает около 1000 строк кода F #. Я не мог бы сделать это с помощью любого другого инструмента.

Основываясь на вашем фактическом опыте , техническом документе или другом уважаемом справочном исследовании, является ли F # в настоящее время жизнеспособным инструментом для отчетности на корпоративном / корпоративном уровне?

Внимание: перед голосованием, чтобы закрыть этот вопрос как «неконструктивный», пожалуйста, прочитайте бит внизу.

Задний план
В настоящее время я работаю в крупной корпорации, которая активно использует множество различных инструментов отчетности, включая (но вряд ли ограничивается) SAS, Cognos, SSRS и даже хорошее изложение COBOL. Каждый инструмент имеет свое законное место, и многие из них в большинстве случаев эквивалентны в наборе функций и т. Д. Большинство наших инструментов могут легко выводиться в PDF, Excel и базы данных, и в этих случаях прекрасно работают.

К сожалению, моя организация, как и многие другие, использует электронные таблицы Excel, любит ее или ненавидит, мы тратим много времени на то, чтобы писать консольные приложения .NET для извлечения информации из вложений Excel и вставки ее в электронные таблицы Excel. (Мне не интересно спорить о достоинствах или недостатках этого подхода. Это то, что есть, и я не могу его изменить).

Как и технологии отчетности, перечисленные выше, они падают, когда речь заходит о передовых ETL или в электронных таблицах. Они просто не были разработаны для этого, и хотя они отлично умеют форматировать отчет в виде таблицы Excel, они не очень хорошо обновляют существующую таблицу или извлекают данные определенным образом (извлекайте только значения, выделенные красным цветом, например). Поэтому мы заканчиваем тем, что пишем LOT консольных приложений .NET, чтобы сделать этот бит. (Опять же - не заинтересован в обсуждении подхода. Это то, что есть. Я знаю - мне это тоже не нравится.)

.NET - это, на мой взгляд, фантастическая структура и достаточно гибкая, чтобы обрабатывать практически любую задачу программирования, поэтому мы могли бы теоретически обрабатывать всю отчетность в .NET. Но - попытка обрабатывать всю отчетность в .NET занимает слишком много времени. Мы должны сами написать весь материал. Мне нравится использовать силу, простоту и надежность существующих инструментов отчетности, которые у нас уже есть.

Таким образом, мы заканчиваем тем, что пишем два приложения для одной задачи - например, задание SAS для загрузки данных из нескольких источников данных, выполняем преобразования и сохраняем результат в постоянном или временном местоположении и вторую .NET-работу результаты и загрузить их в таблицу. (Я знаю.)

Смысл
В последние пару лет я много слышал и слышал о F #, и я немного потрудился в этом. Я изучил OCAML в колледже, и мне нравится функциональное программирование. Когда вызывается, я хотел бы сделать все программирование для конкретного отчета на одной платформе (если не на одном языке). Однако вопрос заключается в том, готов ли язык F # и .NET Framework к отчетности на уровне предприятия - и я говорю о отчетах, которые должны выполняться точно и эффективно . Microsoft, безусловно, продает его , но я хочу знать, действительно ли кто-либо, имеющий опыт работы в других технологиях отчетности, попробовал это в производственной среде. Как он сравнивается с другими технологиями отчетности и может ли он легко интегрироваться в корпоративную среду? Как вы обращались к безопасности? Правильно, какой профиль памяти требуется F # (мы говорим миллионы записей)? Хорошо ли он обрабатывает табличные данные? Это эффективно? Насколько легко его поддерживать (особенно, если код растет)? Какие сторонние надстройки, плагины и т. Д. Необходимы для того, чтобы что-то работать (или он может делать все, что угодно)? Сколько работы (часы программирования и т. Д.) Требуется по сравнению с другими системами отчетности (для аналогичных результатов)?

Если у вас нет опыта работы с F #, или если вы используете только F #, то меня не интересует ваше мнение - я бы хотел услышать от тех, кто действительно преодолел этот пробел и может связать, исходя из опыта, возможностей и ловушки при использовании F # в качестве механизма отчетности для больших данных (миллионы записей, выводимых в различные форматы).

Я видел несколько вопросов, которые уже охватывают некоторые из этих оснований:

Но им уже несколько лет. Несколько версий позже, F # до задачи? Или я собака лаем на неправильном дереве?

РЕДАКТИРОВАТЬ

Для ясности я особенно заинтересован в новом программировании F #. До F # 3.0 это была просто интересная технология, но недавно добавленные возможности F # для использования поставщиков типов баз данных и выражения запросов выглядят как жизнеспособная альтернатива другим технологиям создания отчетов. Microsoft, безусловно, предлагает это .

Допустимый ответ будет содержать учетную запись из первых рук (или ссылку на документированное тематическое исследование) по внедрению механизма отчетности на уровне предприятия, построенного в F #, и сравнение с другой технологией отчетности с любой прибылью или убытками за производительность и т. Д. t должен быть слишком подробным - достаточно, чтобы убедить среднего (компетентного) менеджера, что F # будет подходящей / неподходящей технологией для обработки объемных / пакетных данных. Это было сделано? Кто сделал это? Каковы были результаты? Насколько сложной была реализация (по сравнению с аналогичными технологиями)? Он хорошо работает?

Почему я задаю субъективный вопрос?
Как и большинство лучших участников stackoverflow, я часто голосую, чтобы закрыть субъективные вопросы. Согласно FAQ , субъективные вопросы следует избегать, но не запрещены полностью. Часто задаваемые вопросы связаны с шестью рекомендациями по большим субъективным вопросам, которые я пытался придерживаться. Пожалуйста, прочитайте эти рекомендации перед голосованием, чтобы закрыть этот вопрос.


Off, но вы можете немного автоматизировать рабочий процесс Excel с помощью других инструментов, таких как XLReport или его более крупного двоюродного брата DBxtra , оба могут читать из файлов Excel, делать запросы на основе их и экспортировать результаты вручную или в случае DBxtra автоматически, хорошая сторона на том, что, если структура файлов Excel не изменяется, вам нужно спроектировать запросы только один раз.


Чтобы ответить на ваш вопрос - вы на правильном пути. Я говорю об этом как о ком-то, кто создал ряд отчетов и больших систем данных. Я построил одну из платформ Big Data Analytics, используемую на eBay в Scala и R. Совсем недавно я построил Hadoop / Hive F # Type Provider для MSRC. Я могу сказать, что ничто не приближается к стеку F # .net для этой цели. Отличная производительность, простой в использовании встроенный интерфейс, множество библиотек, REPL, Type Providers, WPF для составления диаграмм. Начиная с MSRC, я создаю полнофункциональную F # IDE, которая может быть встроена в Excel, где вы можете использовать провайдера типов для взаимодействия с книгой в комплекте с Intelisense. Напишите мне, если вы хотите это увидеть.

Редактировать;

Конечно; Я заменил одну из моих клиентов базу данных Infobright на F #, используя данные в памяти и механизм с нуля. Это сократило время запроса на 10 с ГБ данных с 30 минут до 100 с миллисекунд. Все это заняло у меня 6 часов, чтобы построить и было всего несколько сотен строк кода. База данных была базой для веб-службы отчетов, которая после обновления стала более гибкой.

В то время как на eBay я делал свою большую обработку данных (объемную / пакетную) в R. Базовые плоские файлы составляли 10 с ГБ, поэтому они были слишком большими для Excel. R сделал огромное количество ненужного распределения памяти во время пропусков агрегации; 10 ГБ станет 40 ГБ и будет ползти до остановки, как только он запустит файл подкачки. В зависимости от данных это займет минуты, часы или никогда не закончится. Есть заплаченные R-библиотеки, которые исправляют это, но они ограничивают другими способами. Выполнение агрегатов в F # привело к уменьшению до 100 с миллисекунд с постоянным пространством. Эти скопления составляли 10 с строк кода, примерно такие же, как и у R, но гораздо проще для понимания и проверялись по типу. Если R-запрос завершился после часа обработки из-за опечатки, это бесит.

Я использовал кубы OLAP (например, Microsoft Analysis Services), но эти системы были полностью затмиты большими кластерами данных и машинами большой памяти. Теперь легко создать собственную машину большой памяти с F # и новым сборщиком мусора в .net 4.5.

Надеюсь, это поможет.


Я не уверен, насколько это помогает, но есть несколько документов о F # на веб-сайте Microsoft. В первом, который я привел ниже, конкретно упоминается статистическая обработка / базы данных, поэтому он может быть наиболее полезным из трех.

Существует также провайдер типа R для F # , который упрощает взаимодействие между F # и R.





etl