Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Лучшая СУБД для научных проектов.   Найти похожие ветки 

 
Anatoly Podgoretsky ©   (2010-03-24 09:15) [40]

> PEAKTOP  (24.03.2010 04:47:39)  [39]

Которое лежит рядом с программой? Или как?


 
pasha_golub ©   (2010-03-24 09:49) [41]


> Паш, я знаю, что ты по Снонопотаму "зажигаешь", поэтому
> холиварить не будем :)

Да я ж никогда! :) Мир, дружба, жвачка!


> Но зато мы более лояльно относимся к "слабому" железу, я
> имею в виду производительность в целом, а не просто "взлетит-
> не взлетит".

На слабом железе можно собрать слона с нужными настройками. Но смысл?


> И Embedded у нас тоже есть - а значит можно не озадачивать
> юзера вопросом "что такое установка SQL-сервера".

Embedded"a не будет у слонов. Сей вопрос периодически всплывает, и вопрошающему тут же суют под нос тезис, что Слон - это для того. С одной стороны жаль, с другой разрываться на несколько направлений смысла действительно нет.


> В общем, давайте жить дружно =)

Давайте! :)


 
pasha_golub ©   (2010-03-24 09:51) [42]


> tesseract ©   (23.03.10 21:57) [38]
>
> И interbase может. А есть ли СМЫСЛ? Если нужны подобные
> расчеты - не проще ли не конопатиться и написать адекватную
> и намного более логичную двухзвенку ?

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

Аггрегатные функции тоже часть серверной логики. Всё упирается в планирование.


 
tesseract ©   (2010-03-24 18:42) [43]


> Например, триггеры на С явно быстрее, чем на хранимых языках.


На С  скомпилированных, или на С-Script? В принципе триггеры должны компилироваться и не терять в производительности. Хотя тут бабка натрое сказала - в логику работы БД  нужно смотреть.


 
pasha_golub ©   (2010-03-25 12:58) [44]


> tesseract ©   (24.03.10 18:42) [43]

Скомпилированные, конечно. Пример:
CREATE OR REPLACE FUNCTION euc_cn_to_utf8(integer, integer, cstring, internal, integer)
 RETURNS void AS
"$libdir/utf8_and_euc_cn", "euc_cn_to_utf8"
 LANGUAGE "c" VOLATILE STRICT
 COST 1;


$libdir/utf8_and_euc_cn - библиотека с функцией. В случае с Виндой utf8_and_euc_cn.dll, в случае с Линями utf8_and_euc_cn.so

euc_cn_to_utf8 - имя функции


 
Romkin ©   (2010-03-25 16:12) [45]

DECLARE EXTERNAL FUNCTION bin_xor
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT "IB_UDF_bin_xor" MODULE_NAME "ib_udf";

А зачем триггер-то на С писать? ЧТо быстрее будет - так очень вряд ли.


 
PEAKTOP ©   (2010-03-25 16:52) [46]

pasha_golub ©   (25.03.10 12:58) [44]
> Скомпилированные, конечно. Пример:


А ты часом функции ни с чем не попутал ?

Внешние функции (UDF - User Defined Functions), которые подключаются из DLL/SO - это одно, это было реализовано еще даже не в Firebird, а в дедушке InterBase.
А вот хранимые процедуры/триггеры/PSQL-блоки на внешних языках - это совсем другое. Например, как у вас (Слоноводов) это сделано на Перловке или Питоне.

CREATE FUNCTION pymax (a integer, b integer)
 RETURNS integer
AS $$
 if (a is None) or (b is None):
   return None
 if a > b:
   return a
 return b
$$ LANGUAGE plpythonu;

или

CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$
   if (($_TD->{new}{i} >= 100) || ($_TD->{new}{i} <= 0)) {
       return "SKIP";    # skip INSERT/UPDATE command
   } elsif ($_TD->{new}{v} ne "immortal") {
       $_TD->{new}{v} .= "(modified by trigger)";
       return "MODIFY";  # modify row and execute INSERT/UPDATE command
   } else {
       return;           # execute INSERT/UPDATE command
   }
$$ LANGUAGE plperl;


 
tesseract ©   (2010-03-25 17:45) [47]


> блоки на внешних языках - это совсем другое.


Фактически то-же самое. Какая разница как функция прилинкована -  динамически или статически - она всё равно функция.


 
pasha_golub ©   (2010-03-25 18:50) [48]


> PEAKTOP ©   (25.03.10 16:52) [46]


> А ты часом функции ни с чем не попутал ?

Не попутал. :) Функция есть функция. А вот триггер в контексте Постгреса - это событие, которое вызывает функцию-обработчик:

CREATE FUNCTION trigf() RETURNS trigger
   AS "filename"
   LANGUAGE C;

CREATE TRIGGER tbefore BEFORE INSERT OR UPDATE OR DELETE ON ttest
   FOR EACH ROW EXECUTE PROCEDURE trigf();


 
PEAKTOP ©   (2010-03-26 12:26) [49]

> А вот триггер в контексте Постгреса - это событие, которое вызывает функцию-обработчик:

А все, понял. Это просто произошла "подмена понятий" =)

у нас это блок (в данный момент писанный только на SQL), который будет выполнен при вставке/изменении/удалении строки. По сути, от ХП или PSQL-блока он ничем не отличается.


CREATE OR ALTER TRIGGER <TRIGGER_NAME> FOR <TABLE_NAME>
 [ACTIVE | INACTIVE]
 {BEFORE || AFTER}
 {INSERT | UPDATE | DELETE}
 [POSITION number]
AS
BEGIN
 <TRIGGER_CODE>...
END



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.06 c
15-1268049903
Дмитрий С
2010-03-08 15:05
2010.08.27
Храниение картинок/фотографий в базе.


2-1265626291
Petr
2010-02-08 13:51
2010.08.27
Работа с Вложенными циклами


15-1264973402
Юрий
2010-02-01 00:30
2010.08.27
С днем рождения ! 1 февраля 2010 понедельник


6-1217926149
dima_tepl
2008-08-05 12:49
2010.08.27
Работа с микроконтроллером по TCP/IP протоколу


15-1272036312
@!!ex
2010-04-23 19:25
2010.08.27
Как получить повышенные привилегии в Vista?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский