Главная страница
    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.155 c
15-1271450855
Kerk
2010-04-17 00:47
2010.08.27
Что делать, чтобы кровать не скользила по паркету?


15-1270656918
sniknik
2010-04-07 20:15
2010.08.27
Ubuntu 10.4


2-1271178784
rozarock
2010-04-13 21:13
2010.08.27
Выделить подстроку: вещественное число с фиксированной точкой


4-1226996099
Сергей
2008-11-18 11:14
2010.08.27
Как вывести Диалог свойств Windows К оприделённому файлу ?


2-1269848151
bobby
2010-03-29 11:35
2010.08.27
Относительные пути Windows





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский