Какие аргументы использовать, чтобы объяснить, почему SQL Server намного лучше, чем простой файл - PullRequest
10 голосов
/ 11 июня 2010

Хорошие друзья сказали руководителям моей компании, что плоские файлы - это путь, и мы должны перейти с SQL Server на них для всего, что мы делаем. У нас более 300 серверов и сотни различных баз данных. Из немногих, с которыми я связан, у нас есть> 10 миллиардов записей в довольно многих из них с более чем 100 тысячами новых записей в день, и кто знает, сколько обновлений ... Мне и паре других нужно придумать ответ говоря, почему мы не должны этого делать. Большинство наших вещей - ASP.NET с некоторыми устаревшими ASP. Мы думали, что создание простого консольного приложения, которое тестирует / проверяет время одинакового взаимодействия между плоским файлом (хранящимся в сети) и SQL по сети, выполняет большие операции вставки, поиска, обновления и т. Д., А также такие вещи, как случайное отключение от сети. Это покажет им, насколько плохими могут быть плоские файлы, особенно когда вы имеете дело с миллионами записей.

Какие вещи я должен использовать в своем ответе? Что я должен сделать с моим демонстрационным кодом, чтобы проиллюстрировать это?

Мой список сортировки:

  • Безопасность
  • Параллельный доступ
  • Производительность с большими объемами данных
  • Количество времени, которое требуется для такой масштабной перезаписи / переключения, и огромные затраты $
  • Отсутствие транзакций
  • PITA для сопоставления реляционных данных с плоскими файлами
  • NTFS не поддерживает тонны файлов в каталоге
  • Отсутствие поиска / обработки данных Adhoc
  • Обеспечение целостности данных
  • Восстановление после сбоя сети
  • Задержка клиента при ожидании изменений других клиентов для принятия
  • Большинство людей давно перестали использовать плоские файлы для этого типа хранилища по уважительной причине
  • Балансировка нагрузки / репликация

Боюсь, что когда-нибудь это будет отличное сообщение на Daily WTF, если я не смогу остановить это сейчас.

Дополнительно

Кто-нибудь знает, может ли что-либо о HIPPA использоваться в этом бою? Многие из наших записей являются записями пациентов ...

Ответы [ 19 ]

1 голос
/ 11 июня 2010

Я предлагаю вам сначала получить ответный удар, а теперь публиковать в Daily WTF.

Что касается вашего вопроса: бизнес-причина может быть в том, почему ваш начальник хочет переписать все ваши системы.С нуля, так как вам фактически придется написать собственную систему баз данных.

По соображениям разработки вы потеряете доступ к экосистеме SQL-сервера, ко всем библиотекам, инструментам, утилитам.

Возможно, парень, который предложил это, на самом деле думает вступить в конкуренцию с вашей компанией.

1 голос
/ 11 июня 2010

Это действительно, со стороны вашего работодателя, ОСНОВНОЙ WTF, если он серьезно предлагает плоские файлы для всего ...

Вы уже знаете причины (о - добавьте Репликацию / Балансировка нагрузки в свой список) - что вам нужно сделать сейчас, это убедить его в них.Мой подход к этому был бы в два раза.

Прежде всего, я написал бы скрипт на любом инструменте, который вы в настоящее время используете для выполнения базовой операции с использованием SQL, и рассчитал его время.Затем я написал бы другой сценарий, в котором вы искренне пытаетесь заставить работать текстовое решение, а затем выделите разницу в производительности.Дайте ему оба набора кода, чтобы он знал, что вы не обманываете.

Укажите, что технология развивается, и что только потому, что кто-то добился успеха 20 лет назад, это автоматически не дает им право на заслуживающее доверия мнение сейчас.

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

Затем я бы задал серьезные вопросы управления, и среди них я бы прямо спросил: «Почему вы готовы отменить свой технический персонал по техническим вопросам», основываясь на другом?мнение человека - особенно когда указанный человек не настолько знаком с нашей системой, как мы ...

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

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

Удачи вам в этом - я чувствую вашу боль ...

Martin

1 голос
/ 11 июня 2010

NTFS не поддерживает массовое количество файлов .txt. В зависимости от того, как разработана плоская файловая система, здоровье жесткого диска может стать проблемой. Многие старые файловые системы используют большое количество небольших файлов .txt для хранения данных. Это плохой дизайн, но, как правило, происходит, когда плоская файловая система стареет.

Фрагментация становится проблемой, и вы теряете текстовый файл здесь и там, что приводит к потере небольших объемов данных. Состояние жесткого диска не должно вызывать проблем при проектировании базы данных.

1 голос
/ 11 июня 2010

Pro файловая система:

  1. Стабильно (меньше строк кода = меньше ошибок, проще для понимания, более надежно)
  2. Быстрее с огромными каплями данных
  3. Поиск / сортировка несколько медленны (но sort может быть быстрее, чем SQL order by)

Так, например, вы бы выбрали файловую систему для создания файлов журнала. Вход в БД бесполезен, если вам не нужно выполнять сложный анализ данных.

Pro DB:

  1. Транзакции (включая одновременный доступ)
  2. Может искать по огромному количеству записей (но не по огромным скоплениям данных)
  3. Упорядочить данные различными способами с помощью запросов легко (ну, если вы знаете свой SQL и особые "странности" вашей БД)

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

1 голос
/ 11 июня 2010

Как создать реляционную модель с текстовыми файлами?

Или вы планируете использовать разные файлы для каждой сущности?

0 голосов
/ 13 июня 2010

Вы должны говорить по-исполнительному. Не говоря этого, заставьте их понять, что они находятся здесь над их головами. Вот некоторые боеприпасы:

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

Это работа специалистов PhD уровня. Они уже 20 лет совершенствуют свою деятельность, и самое замечательное в этом заключается в следующем: это позволяет нам специализироваться на построении бизнес-систем.

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

0 голосов
/ 11 июня 2010

• Количество времени, которое требуется для такой масштабной перезаписи / переключения, и огромные затраты $

Это не просто количество времени, это введение новых ошибок.Переписывание этих пропорций может привести к поломке вещей, которые в настоящее время работают.

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

Менеджеры любят числа, поэтому проведите официальный письменный анализ решений.Сравните два предложения по преимуществам и рискам рядом с числовыми значениями.Когда вы получите стоимость 0 для поддержания и 100 000 000 для конвертации, они получат очко.

0 голосов
/ 13 июня 2010

Люди, которые не делают различий между плоскими файлами и sql, не понимают всех аргументов, которые вы говорите раньше. Объяснение должно быть максимально простым, примерно так:
SQL - это своего рода оболочка для поиска / параллелизма вокруг плоских файлов.
Все проблемы, которые существуют в настоящее время, останутся даже у компании, готовой написать обертку с нуля.

Также вы должны дать другой способ решения текущих проблем, использовать умные слова, такие как расширенный BLL или установить / удалить среду сценариев. :)

0 голосов
/ 11 июня 2010

Здесь что-то действительно подозрительное.Для того, чтобы кто-то понял терминологию правильно («плоский файл»), но не знал, насколько невероятно глупа идея, она просто не складывается.Я хотел бы быть вашим менеджером нетехническим, но человек, с которым разговаривает ваш менеджер.Это больше похоже на проблему потерянного перевода.

Вы уверены, что они не означают отсутствие SQL, как если бы вы работали в среде, ориентированной на документы, в некоторых случаях переход от реляционной базы данных действительно имеет смыслС уважением, все еще имея много положительных моментов традиционной СУБД.

Итак, вместо того, чтобы обосновывать, почему SQL лучше, чем плоские файлы, я бы обратил проблему и спросил, какие проблемы предназначены для решения плоских файлов.Я бы поспорил на деньги, что это проблема со связью.

Если это не так, и ваша компания фактически рассматривает возможность замены своей БД на домашнюю плоскую файловую систему по рекомендации «друга», убеждая вашего менеджерапочему он не прав - это наименьшее из ваших беспокойств.Вместо этого стряхните пыль и начните распространять свое резюме.

...