Форум сетевых администраторов Страницы (2): [1] 2 »
Показаны 17 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- NestedSet (http://netadmin.ws/forum/showthread.php?threadid=11041)


Помещено he][es 15-09-2005 в 08:58:

NestedSet

Господа! Ð_азъясните мне плз ещё такой момент, по поводу хранимых процедур (кажется так). В статье http://phpclub.ru/detail/article/db_tree описан метод хранения древовидных структур в БД, а можно ли перенести заботу о них на плечи самой БД?.. Те. написать процедуры что бы сама БД вставляла куда нужно веточки, что нужно изменяла, что нужно удаляла?..
См. доку по MySQL так и не въехал. Ð_то там возможно?.. И возможно ли тоже самое реализовать в MS SQL (там мне кажется что 99,9% это реально)??
(мне кажется это было бы ОЧЕНЬ полезным делом.. даже если придётся писать различные процедуры для этих БД)

__________________
Админ - вождь Апачей...


Помещено he][es 19-09-2005 в 07:35:

Ну так что? Нет желающих этим заняться?.. Неинтересно или нереально или ненужно?..

__________________
Админ - вождь Апачей...


Помещено Xel'[Naga] 19-09-2005 в 09:48:

Что значит "сама БД"?
Например запрос INSERT INTO test VALUES(1,2,3) делает сама БД или нет?
Можно написать функции, например:
Есть категория, Global, под ней есть, Global1, Global2, Global3, у каждой есть ещё по 3(1-1,2-1,3-1...).
функция тебе вернёт ответ:
$global["Global"]["Global1"]["Global1-1"] = <чему-то равно>
$global["Global"]["Global1"]["Global1-2"] = <чему-то равно>
Ну и в этом роде.
Ð_то лиш наброски так скажем, а вообще нужно подумать прежде чем писать функции, типа, что нужно ещё желательно хранить идентификаторы

__________________
Всего хорошего.


Помещено he][es 19-09-2005 в 10:20:

Ð_эээ... Что то мы др. др. не понимаем...
Вы статью смотрели?.. Там есть такие штуки ка cleft, cright, level и прочее... Так их "целостность" при добавлении, удалении, перемещении веток нужно поддерживать, для этого сейчас сущ-ет класс PEAR:B_NestedSet... Я думаю о его переносе в БД, в виде хранимых процедур. Что бы не Ð_НÐ_ скрипт занимался обработкой, а БД...

__________________
Админ - вождь Апачей...


Помещено Xel'[Naga] 19-09-2005 в 13:27:

Мне всё равно непонятно чего ты хочешь
Ппеределать полностью "твой" движок?
Зачем отказываться от класса, если с ним всё прекрасно работает, не понимаю.

__________________
Всего хорошего.


Помещено he][es 19-09-2005 в 13:57:

Для "упрощения"... ИМХО это было бы очень удобно. С Ð_НÐ_ на SQL сервер переложили нагрузку и избавились от накладных расходов на соединение и передачу нескольких запросов связанных с добавлении, удалении, перемещении веток. Всё это делалось внутри SQL сервера... соответственно рост производительности...
"движка" нет. и этот класс не мой...
Ну это как бы просто моя идея. Сюда обратился что бы узнать актуальна ли она...

__________________
Админ - вождь Апачей...


Помещено Xel'[Naga] 19-09-2005 в 16:47:

Насколько мне известно, MySQL не может выполнять те же функции, что и пхп. Ð_то же БД, зачем ей "обрабатывать"(с этим и пхп замечательно справляется) информацию?
И вообще непонятен смысл всего этого. У тебя что, скрипты медленно работают? Если да, оптимизируй свой код, скорей всего алгоритм работы придуман неверно. Хочешь скорости, пиши на перле.

__________________
Всего хорошего.


Помещено he][es 19-09-2005 в 17:08:

Xel'[Naga]

quote:
Насколько мне известно, MySQL не может выполнять те же функции, что и пхп.

Значит почитай доки... Хранимые процедуры наз-ся... (я не говорю, что савсем все функции)... Зачем?.. Да затем что бы Ð_НÐ_ своими делами занимался... =) На Ð_НÐ_ и БД можно написать, но этого же никто не делает... Так и тут. То что можно свалить на БД я хочу свалить... Вообщем хотелось бы ещё чьёнибудь мнение услышать...

__________________
Админ - вождь Апачей...


Помещено Xel'[Naga] 19-09-2005 в 19:52:

Я поверю тебе, если ты мне скажешь мусклевсую ф-ию, которая перебирает весь массив и потом что-то делает с эл-ми этого массива
На пхп можно написать БД, т.к. это язык прогарммирования. На скл нельзя написать практичски ничего(не считая сами запросы), т.к. это язык запросов.
Глупостями ты вообщем занимаешься

__________________
Всего хорошего.


Помещено he][es 19-09-2005 в 21:18:

quote:
На Ð_НÐ_ и БД можно написать, но этого же никто не делает...

quote:
На пхп можно написать БД, т.к. это язык прогарммирования.[quote]
Вы невнимательны уважаемый... Я не отрицал эту возможность, я говорил о её нецелесообразности!..

[quote]Я поверю тебе, если ты мне скажешь мусклевсую ф-ию, которая перебирает весь массив и потом что-то делает с эл-ми этого массива

Ну до чего же невнимательный человек!.. ХÐ_АНИМАЯ ПÐ_ОЦЕДУÐ_А! Первый попавшийся пример с сайта MySQL http://dev.mysql.com/doc/

code:
CREATE PROCEDURE GEOCODE03()
BEGIN
DECLARE X_digit_one CHAR(1);
DECLARE Y_digit_one CHAR(1);
DECLARE INTOSSHEET INT;
DECLARE INTNGFIELD INT;
DECLARE strOSSHEET CHAR(50);
DECLARE strNGFIELD CHAR(50);
DECLARE lngGeoLoop INT;
DECLARE lngXINT INT;
DECLARE lngYINT INT;
DECLARE INTCOUNT INT;
DECLARE INTNUMROWS INT;
DECLARE intMIKEY INT;
DECLARE STRXINT CHAR(50);
DECLARE STRYINT CHAR(50);
DECLARE FIRSTDIG CHAR(2);
DECLARE GeoCodeCUR CURSOR FOR SELECT lpaSheetReference,lpaFieldNumber,UID FROM MIXCheckDB.IACS2003GIS;
OPEN GeoCodeCUR;
SELECT COUNT(*) INTO INTNUMROWS FROM MIXCheckDB.IACS2003GIS;
SET INTCOUNT = INTNUMROWS;
WHILE INTCOUNT > 0 DO
FETCH GeoCodeCUR INTO strOSSHEET,strNGFIELD,intMIKEY;
SET FIRSTDIG = LEFT(strOSSHEET,2);
CASE FIRSTDIG
WHEN "SR" THEN
SET X_digit_one = "1";
SET Y_digit_one = "1";
WHEN "SM" THEN
SET X_digit_one = "1";
SET Y_digit_one = "2";
WHEN "SS" THEN
SET X_digit_one = "2";
SET Y_digit_one = "1";
WHEN "SN" THEN
SET X_digit_one = "2";
SET Y_digit_one = "2";
....(Lots more of the case statement here)...
ELSE
SET X_digit_one = "0";
SET Y_digit_one = "0";
END CASE;
SET STRXINT = CONCAT(X_digit_one, MID(strOSSHEET,3,2), LEFT(strNGFIELD,2), '0');
SET STRYINT = CONCAT(Y_digit_one, RIGHT(strOSSHEET,2), RIGHT(strNGFIELD,2),'0');
SET lngXINT = STRXINT;
SET lngYINT = STRYINT;
UPDATE MIXCheckDB.IACS2003GIS SET xcoord = lngXINT, ycoord = lngYINT WHERE MIXCheckDB.IACS2003GIS.UID = intMIKEY;
SET INTCOUNT = INTCOUNT - 1;
END WHILE;
CLOSE GeoCodeCUR;
END


Устроит?..

Да что там мудрствовать:

code:
update some_table
set col = col + 1
where key = 'some_key_value'


Чем тебе не работа с переменными массива?..

__________________
Админ - вождь Апачей...


Помещено Xel'[Naga] 20-09-2005 в 06:55:

Ладно, спорить бесполезно.
Вот моё окончательное имхо, ты пытаешься изобрести велосипед.

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

В твоём случае я бы сделал так:
загнал всю базу(или только часть, в зависимости от ситуации) в массив(если база не больше объёма оп. памяти), я не расматриваю уже тот случай, что комп слабый. И работал бы с ней и поверь мне она у меня будет как минимум в 2-3 раза быстрей работать чем с твоими процедурами в мускле. Дело конечно хозяйское, но всё таки имхо ты пытаешься делать то, что тебе совсем не нужно, по крайней мере не в пхп.

В случае других языков я бы с тобой согласился, что данные процедуры пригодятся.

__________________
Всего хорошего.


Помещено he][es 20-09-2005 в 07:55:

quote:
и поверь мне она у меня будет как минимум в 2-3 раза быстрей работать чем с твоими процедурами в мускле

Ну это просто абсурд...
quote:
Stored procedures can provide improved performance because less information needs to be sent between the server and the client.

(с) Man по MySQL
Xel'[Naga] а в случае посл. примера вы бы тоже в массив переменные загоняли и обрабатывали, и это тоже быстрее работало???..

__________________
Админ - вождь Апачей...


Помещено Xel'[Naga] 20-09-2005 в 09:07:

Ты так и не сказал размер своей базы. Мы может спорим впустую.

PS: Не воспринимай всё это близко, меня уже не туда понесло

PSS: Скажу тебе просто одно, если мне нужна реальная скорость, то я пишу на перле.

PSSS: Скажу ещё, всё зависит от того, что конкретно нужно делать. Я незнаю чем у тебя должен заниматься скрипт. Поэтому ты должен понимать, что все мои домыслы, могут быть не применимы к твоей задаче. Я тебе рекомендую посмотри алгоритм работы твоего скрипта(ну или нарисуй для удобства) я просто больше чем уверен, что там, что-то не так

__________________
Всего хорошего.


Помещено he][es 20-09-2005 в 09:14:

Да в размерах ли дело!.. Я же не для себя конкретно... А В ЦЕЛОМ...

quote:
Скажу тебе просто одно, если мне нужна реальная скорость, то я пишу на перле.

Ð_еальная скорость - это ТОЛЬКО компилируемые языки...
ЧИТАЙ СТАТЬЮ!!! Я уже не единожды тебя туда отсылал, и говорил, что и для чего...
И скрипт НЕ МОЙ. Я хочу концепцию поменять!..

__________________
Админ - вождь Апачей...


Помещено Xel'[Naga] 20-09-2005 в 12:28:

Ладно, завязываем пустую болтавню. Мы всё равно не понимаем друг друга.

Что значит компилируемые языки? Любой исходный код попадает в компилятор. Даже хтмл.

Ð_еальная скорость - это то, что жрёт мало ресурсов. Перл например, мало жрёт

__________________
Всего хорошего.


Формат времени GMT. Текущее время 13:05. Страницы (2): [1] 2 »
Показаны 17 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.