Подтвердить что ты не робот

Когда я должен использовать С++ вместо SQL?

Я программист на С++, который иногда использует MySQL для работы с базами данных, но мои знания SQL довольно ограничены. Однако я, безусловно, готов изменить это.

В настоящий момент я пытаюсь выполнить анализ (!) данных, которые у меня есть в моей базе данных, исключительно с SQL-запросами. Но я собираюсь сдаться и вместо этого импортировать данные на С++ и выполнять анализ с помощью кода на С++.

Я обсуждал это со своими коллегами, и они также подталкивали меня к использованию С++, говоря, что SQL не предназначен для комплексного анализа, но главным образом для импорта (из существующих таблиц) и экспорта (в новые таблицы) данных, а также немного больше, например, слияние данных - например - объединенные таблицы.

Может кто-нибудь помочь мне рисовать линию? Поэтому я знаю, когда переключиться на С++? Конечно, производительность также является проблемой.

Каковы признаки того, что в SQL-запросы все сложнее? Или, может быть, я просто ошибаюсь при разработке запросов. Тогда где я могу найти учебники, книги,... чтобы лучше подойти?

Надеюсь, это не слишком расплывчато. Я действительно немного потерял.

4b9b3361

Ответ 1

SQL превосходит при анализе больших наборов реляционных данных.

Место для рисования линии - это масштаб вашего анализа.

Если вы анализируете отдельные записи по одному за раз, сделайте это в своем приложении.

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

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

Ответ 2

Я обсуждал это со своими коллегами, и они также подталкивали меня к использованию С++, говоря, что SQL не предназначен для комплексного анализа, но главным образом для импорта (из существующих таблиц) и экспорта (в новые таблицы) данных, а также немного больше, например, слияние данных - например - объединенные таблицы.

Это совершенно произвольно. Изучите SQL. В Интернете доступно множество ресурсов.

Ответ 3

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

SQL имеет функции для выполнения реляционных операций, таких как объединения и прогнозы. Также для выполнения заданных операций, таких как объединение, пересечение и ограничение (подмножество). Также для выполнения базовой арифметики на числах, таких как четыре арифметических оператора, и встроенных функций, таких как SQRT. Также статистические функции, такие как COUNT, SUM и AVG, могут быть объединены с проекциями очень интересными способами. Хорошая СУБД позволит вам расширить встроенные функции с помощью собственных функций, написанных на C, С++ или PL/SQL.

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

Код SQL может храниться в базе данных в хранимых продуктах. Он может храниться в файлах SQL script. И, как вы уже знаете, он может быть встроен в прикладные программы. В дополнение к SQL, вы можете использовать инструменты OLAP и генераторы отчетов, чтобы делать стандартные вещи с данными очень легко.

Люди, которые советуют вам сохранить всю вашу обработку на С++, звучат так, как будто они узнали достаточно, чтобы использовать базу данных, такую ​​как большая и глупая файловая система. Хорошая СУБД намного больше.

Ответ 4

SQL обычно очень эффективен для обработки собственной базы данных (в зависимости от реализации сервера).

Вы должны использовать запросы для анализа базы данных.
Главной причиной этого было бы накладные расходы.
Даже если сервер находится на локальном компьютере (удаленные серверы будут иметь очевидные коммуникационные издержки), вам все равно придется извлекать сохраненную информацию с сервера SQL в вашу программу на С++ для анализа.

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

Если вы позволяете серверу SQL делать это с запросами, вы получите комплексную оптимизацию, выполняемую в соответствии с запросом, который вы выполняете, и в конце вы можете получить только ограниченный объем данных (тот, который вы на самом деле нужно) через сообщение.

Ответ 5

Вы приняли правильное решение начать анализ данных с помощью SQL. Теперь, когда вы чувствуете, что ваши знания SQL ограничивают вас, у вас есть 2 варианта: сдаться и вернуться к привычному, но не очень эффективному набору инструментов (С++) или довести свой уровень до SQL.

Возможно, что в какой-то момент SQL тоже станет слишком сложным, но тогда С++ тоже не будет ответом - скорее всего, некоторые специализированные инструменты.

Ответ 6

По-моему, вы должны выполнять анализ только на С++, если никакой эквивалент функции анализа не предоставляется сервером базы данных. Поскольку серверы баз данных очень умны, и трудно и практически невозможно реализовать алгоритм эффективности функции анализа сервера базы данных, Кроме того, приведение необработанных данных в приложение для выполнения анализа также включает в себя множество накладных расходов.

Если в какой-то момент простой SQL становится чрезмерно сложным, родной PL на сервере может быть хорошим выбором

Ответ 7

Я согласен с JNK и Jochai, но не согласен с Ascanio. Лучше улучшить знания в системах баз данных. Sql поставляется с ним

Ответ 8

Итак, это то, о чем я думал, и мне кажется, что SQL, как только платформа/язык для хранения/манипулирования данными, не должен иметь неотъемлемого преимущества перед библиотекой С++ или C. Мне кажется, что теоретически вы могли бы построить С++-библиотеку так же эффективно, если не более эффективно, чем SQL при этом. При этом вы сможете создавать его с нуля, с точки зрения того, как хранятся ints, символы, строки и другие типы данных, и упростить взаимодействие с вами для конкретного приложения (например, для веб-разработки). Вы даже можете сделать это так, чтобы запросы могли выполняться на языке, таком как javascript (позволяя веб-разработчикам сосредоточиться на просто изучении одного языка на самом деле).