| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Различия в серверах баз данных |
| Автор: rcdimon 27.8.2007, 20:19 |
| Всем привет. Мне необходимо написать программу, которая должна уметь работать с различными базами даннх. Для этого все запросы за данными из базы направляются в специальный модуль, который знает с какой базой он работает и компилирует запрос к серверу баз данных в соотвествии с конкретным синтаксисом. Я знаком только с SQL, поэтому прощу помочь мне в поиске различий между базами. |
| Автор: DimW 28.8.2007, 08:27 | ||||
собственно в нем и различие. к примеру этот запрос в ms sql вернет колличество строк из таблицы test_teble:
т.е. условие null = null для этого сервера правдиво. а в оракле этот же запрос вернет 0 строк, т.к. для него условие null = null ложно (ничего не может быть равно ничему...) для оравла следует записать запрос так:
таких принципиальных различий между серверами огромное количество, к тому же постоянно добавляются новые конструкции sql. это очень сложная задача, на которую я бы не тратил свое время. имхо в одиночку и без хорошего финансирования не стравиться. лучше подумайте над тем как перенести данные в обну БД. |
| Автор: DimW 28.8.2007, 12:08 | ||||
еще как пример, в оракле допускается конструкция:
т.е. поле id таблицы test_table сравнивается с набором значений поля id из test_table2, а name c name. не знаю в каких серверах такая конструкция поддерживается, но факт что не во многих, поэтому вам нужно будет для другова сервера перепесать запрос так:
|
| Автор: SergeBS 30.8.2007, 07:49 | ||
rcdimon,
Невозможно. Либо есть конкретные БД с их структурами и есть задача - что должна делать программа, либо имеем "сферического коня в вакууме". Прочитай FAQ-и для начала - поймешь сам. |
| Автор: DimW 30.8.2007, 08:19 |
на самом деле такие кони есть в природе, такой софт широко используется в хранилищах данных, как правело этим инструментам по барабану с каким источником данных работать, будь то БД или csv. Но т.к. задачей этих инструментов является вывод отчетности, то их реализация не настолько сложна, по сравнению с задачей rcdimon. К таму же эти инструменты не позволяют пользователям напрямую писать запросы, а если и позволяют то синтаксис очень специфичен. |
| Автор: SergeBS 31.8.2007, 08:22 |
| DimW, Deniz, Давайте не будем путать программу (вещь прикладную) и средства разработки СУБД и отчетов. ErWin (например) с кучей всяких СУБД может работать, но он не предназначен для юзеров. И не только он. Писать средство разработки в одиночку - смешно, годы понадобятся. Писать средство вывода отчетов - да пожалуйста, только при этом надо-таки знать - какие юзеру отчеты нужны. А иначе - Crystal Reports ему в руки и нехай ваяет что хочет. Например. Или взять FastReport - у него есть возможность включить средство построения отчетов. Или очень хочется свое такого духа наваять? Ну флаг в руки. Через 1-2 года что-то может получится. Но вряд ли. По вопросу достаточно просто определяется квалификация спрашивающего: без обид, это просто факт - "Чтобы правильно задать вопрос нужно знать половину ответа"(С) не знаю чей. |
| Автор: DimW 3.9.2007, 07:18 | ||
| 2 SergeBS я ничего не путаю, те средства о которых я говорю позволяют именно юзеру строить ту отчетность которая ему нужна. а вот вы путаете сервер БД с логической структурой. поверьте, я не пытаюсь ни кого ни вчем убедить, я просто привел реальные траблы которые могут возникнуть при написании такова средства, и то что такие средства существуют.
наверное в спешке пропустили... |
| Автор: SergeBS 3.9.2007, 10:59 | ||||||
DimW,
Т.е. юзер должен знать SQL? Или Crystal Reports? И НАПРЯМУЮ работать с таблицами? Ну-ну. Крутые у вас юзеры... Мне такие почему-то не попадаются. А попадаются такие, что в 3-х кнопках и с инструкцией на 1 листке плутают, вместо файла на дискету/флешку/по email отправляют его ярлык. И т.п.
Еще раз:
Т.е. если неизвестно, с какими данными что нужно делать, то и ничего не сделаешь. Нет задачи. А какая СУБД - не так уж и важно. Из Dbf-ки всегда можно импортировать данные в таблицу SQL-сервера, и наоборот... |
| Автор: DimW 3.9.2007, 12:04 | ||
вовсе нет:
роль программиста заключается в том чтобы предоставить пользователю данные, пусть то сводная таблица или вьюха, а пользователь уже сам решает какие данные ему юзать из этого источника, причем все шаблоны конкретного пользователя сохраняются как его собственные. Естественно о сложной по структуре отчетности и речи быть не может, зачастую это обычные линейные отчеты с группировкой и сортировкой которые определяются все тем же юзером. SergeBS, поверьте естьт такие, т.е. они точно знают какие данные должен им подготовить программист, а набор полей, группировки, объединения источников, сортировки, они определяют сами. естественно что без репортеров такова рода не обойтись когда речь идет о строгой отчетности, а в остольном (то что я описал выше) к примеру инструмент DataStage (один из инструментов о котором я говорю) позволяет дать пользователю возможность получать данные в том виде в котором они ему нужны. Такие инструменты являютяся своего рода прослойками между физическими данными и человеком который ими пользуется, и "пользователю" чаще всего наплевать как физически данные храняться, в одной или в нескольких БД. думаю на сей раз моя точка зрения понятна. |
| Автор: batigoal 6.9.2007, 13:35 | ||
Ну не факт, кстати. Встроенный в ABAP SQL делится на Native и еще какой-то, не помню терминологии. И если второй, действительно, обрезан до DML, то первый вообще передается непосредственно базе, поэтому никаких ограничений нет. Теперь по теме. rcdimon, а на каком языке планируешь писать своё приложение? Ведь и в Java, и в большинстве других языков есть средства абстрагирования от конкретной базы и SQL-диалекта (Hibernate, JTA...). Велосипед уже изобретён, можно взять имеющийся. |