![]() |
Страницы (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)
NestedSet
Господа! Ð_азъясните мне плз ещё такой момент, по поводу хранимых процедур (кажется так). В статье http://phpclub.ru/detail/article/db_tree описан метод хранения древовидных структур в БД, а можно ли перенести заботу о них на плечи самой БД?.. Те. написать процедуры что бы сама БД вставляла куда нужно веточки, что нужно изменяла, что нужно удаляла?..
См. доку по MySQL так и не въехал. Ð_то там возможно?.. И возможно ли тоже самое реализовать в MS SQL (там мне кажется что 99,9% это реально)??
(мне кажется это было бы ОЧЕНЬ полезным делом.. даже если придётся писать различные процедуры для этих БД)
__________________
Админ - вождь Апачей...
Ну так что? Нет желающих этим заняться?.. Неинтересно или нереально или ненужно?..
__________________
Админ - вождь Апачей...
Что значит "сама БД"?
Например запрос 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"] = <чему-то равно>
Ну и в этом роде.
Ð_то лиш наброски так скажем, а вообще нужно подумать прежде чем писать функции, типа, что нужно ещё желательно хранить идентификаторы 
__________________
Всего хорошего.
Ð_эээ... Что то мы др. др. не понимаем... 
Вы статью смотрели?.. Там есть такие штуки ка cleft, cright, level и прочее... Так их "целостность" при добавлении, удалении, перемещении веток нужно поддерживать, для этого сейчас сущ-ет класс PEAR:
B_NestedSet... Я думаю о его переносе в БД, в виде хранимых процедур. Что бы не Ð_НÐ_ скрипт занимался обработкой, а БД...
__________________
Админ - вождь Апачей...
Мне всё равно непонятно чего ты хочешь 
Ппеределать полностью "твой" движок?
Зачем отказываться от класса, если с ним всё прекрасно работает, не понимаю.
__________________
Всего хорошего.
Для "упрощения"... ИМХО это было бы очень удобно. С Ð_НÐ_ на SQL сервер переложили нагрузку и избавились от накладных расходов на соединение и передачу нескольких запросов связанных с добавлении, удалении, перемещении веток. Всё это делалось внутри SQL сервера... соответственно рост производительности...
"движка" нет. и этот класс не мой...
Ну это как бы просто моя идея. Сюда обратился что бы узнать актуальна ли она...
__________________
Админ - вождь Апачей...
Насколько мне известно, MySQL не может выполнять те же функции, что и пхп. Ð_то же БД, зачем ей "обрабатывать"(с этим и пхп замечательно справляется) информацию?
И вообще непонятен смысл всего этого. У тебя что, скрипты медленно работают? Если да, оптимизируй свой код, скорей всего алгоритм работы придуман неверно. Хочешь скорости, пиши на перле.
__________________
Всего хорошего.
Xel'[Naga]
quote:
Насколько мне известно, MySQL не может выполнять те же функции, что и пхп.
__________________
Админ - вождь Апачей...
Я поверю тебе, если ты мне скажешь мусклевсую ф-ию, которая перебирает весь массив и потом что-то делает с эл-ми этого массива 
На пхп можно написать БД, т.к. это язык прогарммирования. На скл нельзя написать практичски ничего(не считая сами запросы), т.к. это язык запросов.
Глупостями ты вообщем занимаешься 
__________________
Всего хорошего.
quote:
На Ð_НÐ_ и БД можно написать, но этого же никто не делает...
quote:
На пхп можно написать БД, т.к. это язык прогарммирования.[quote]
Вы невнимательны уважаемый... Я не отрицал эту возможность, я говорил о её нецелесообразности!..
[quote]Я поверю тебе, если ты мне скажешь мусклевсую ф-ию, которая перебирает весь массив и потом что-то делает с эл-ми этого массива
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
update some_table
set col = col + 1
where key = 'some_key_value'
__________________
Админ - вождь Апачей...
Ладно, спорить бесполезно.
Вот моё окончательное имхо, ты пытаешься изобрести велосипед.
Вот ещё, я считаю, что пхп(перл кстати тоже) это языки выского уровня, в них легче любого языка(в твоём случае мускл) работать(обрабатывать) с большим потоком данных, любой человек хотябы что-то писавший под пхп и например на си, дельфи меня сразу поймёт. Простой пример, в пхп не нужно объявлять переменные в начале.
В твоём случае я бы сделал так:
загнал всю базу(или только часть, в зависимости от ситуации) в массив(если база не больше объёма оп. памяти), я не расматриваю уже тот случай, что комп слабый. И работал бы с ней и поверь мне она у меня будет как минимум в 2-3 раза быстрей работать чем с твоими процедурами в мускле. Дело конечно хозяйское, но всё таки имхо ты пытаешься делать то, что тебе совсем не нужно, по крайней мере не в пхп.
В случае других языков я бы с тобой согласился, что данные процедуры пригодятся.
__________________
Всего хорошего.
quote:
и поверь мне она у меня будет как минимум в 2-3 раза быстрей работать чем с твоими процедурами в мускле
quote:
Stored procedures can provide improved performance because less information needs to be sent between the server and the client.
__________________
Админ - вождь Апачей...
Ты так и не сказал размер своей базы. Мы может спорим впустую.
PS: Не воспринимай всё это близко, меня уже не туда понесло 
PSS: Скажу тебе просто одно, если мне нужна реальная скорость, то я пишу на перле.
PSSS: Скажу ещё, всё зависит от того, что конкретно нужно делать. Я незнаю чем у тебя должен заниматься скрипт. Поэтому ты должен понимать, что все мои домыслы, могут быть не применимы к твоей задаче. Я тебе рекомендую посмотри алгоритм работы твоего скрипта(ну или нарисуй для удобства) я просто больше чем уверен, что там, что-то не так 
__________________
Всего хорошего.
Да в размерах ли дело!.. Я же не для себя конкретно... А В ЦЕЛОМ...
quote:
Скажу тебе просто одно, если мне нужна реальная скорость, то я пишу на перле.
__________________
Админ - вождь Апачей...
Ладно, завязываем пустую болтавню. Мы всё равно не понимаем друг друга.
Что значит компилируемые языки? Любой исходный код попадает в компилятор. Даже хтмл.
Ð_еальная скорость - это то, что жрёт мало ресурсов. Перл например, мало жрёт 
__________________
Всего хорошего.
| Формат времени GMT. Текущее время 17:00. | Страницы (2): [1] 2 » Показаны 17 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.