admak

Рейтинг
130
Регистрация
19.07.2010

Для подъема больших дампов лучше использовать штатые средства самого mysql, из командной строки.

Дампы я поднимаю так:


zcat backup.sql.gz |/usr/bin/mysql -uroot -p -D mydb
или
pigz -dc backup.sql.gz |/usr/bin/mysql -uroot -p -D mydb

Для винды попробуйте распаковывать дамп в STOUT при помощи 7zip, если не ошибаюсь ключик -so

infant:
П.С. я пользуюсь дампером, работает очень корректно, рекомендую.

Дампер хороший(лучше многих), сам использую. Но на больших дампах - ой...

Про "очень корректно" - я бы убрал слово "очень". При подъеме некоторых баз с миксом разных кодировок внутри случается эпик фейл.

упс, опоздал с советом, но хорошо, что все получилось. :)

http://free.sprinthost.ru/

Про требования этого фрихостинга читайте внимательно: каждые 30 дней нужно заходить в их панель управления.

Пропустили... - хостинг прощай. Мелочь, а не приятно.

Ратник:
Элементарно - юзайте TOR.

но не забывайте, что пачка TOR нод может контролироваться/логироваться кем угодно.

VHS:
admak, а как с удобством переноса веток дерева обстоит дело? Удобно ли?

Перенос ветки - это изменение парента у нее и запуск ребилда. Одновременно переносить можно любое количество ветвей, затем ребилд.

Преемущество этого вида дерева:

- быстрые выборки

- любой уровень вложености

- легко модифицировать дерево (удаление/вставка/перемещение ветвей)

Недостаток:

- необходимость запуска ребилда при модификации дерева.

Поэтому это дерево лучше использовать там, где дерево меняется не часто, например для категорий.

Solmyr:
мне нужны для конкретных элементов все родители. То есть читать дерево надо в обратную сторону, не от корня к ветвям, а от какого-то места к корню. Причем неплохо если эту операцию можно выполнять пакетно, т.е. найти всех родителей для вот этих 50 штук элементов.

Тоже два запроса:

1. select left_key, right_key from table where id='$target'

2. select .... where left_key <= $left_key and right_key >= $right_key order by left_key asc // получить всех родителей для элемента

Можно поробовать объединить эти два запроса в один, тогда будет "пакетный" режим.

Для этого ИМХО лучше всего подходит MP

не скажу, почитать про него нужно

_AXE_:
Используйте Nested Sets (вложенные множества) для хранения деревьев сложной структуры.

н-да, хорошую идею всегда можно угробить - статья и реализация жесть...

В статье предлагают такую структуру данных:

CREATE my_tree (

id INT(10) NOT NULL AUTO_INCREMENT,
name VARCHAR(150) NOT NULL,
left_key INT(10) NOT NULL DEFAULT 0,
right_key INT(10) NOT NULL DEFAULT 0,
level INT(10) NOT NULL DEFAULT 0,
PRIMARY KEY id,
INDEX left_key (left_key, right_key, level)
)

1. parent - не хранится, при малейшем сбое/глюке - дерево посыпится. Операции вставки/удаления/перемещения - "высший" и бесполезный пилотаж. Вся мольба на поля left_key и right_key... Бред.

2. level - бесполезное поле, т.к. выборка может идти не от корня. Удобнее формировать его на лету, это не ресурсоемкая операция.

Более удобная и надежная такая структура данных:

CREATE my_tree (

id INT(10) NOT NULL AUTO_INCREMENT,
name VARCHAR(150) NOT NULL,
left_key INT(10) NOT NULL DEFAULT 0,
right_key INT(10) NOT NULL DEFAULT 0,
parent INT(10) NOT NULL DEFAULT 0,
PRIMARY KEY id,
INDEX left_key (left_key)
)

В этой структуре значимые поля: id и parent.

left_key и right_key - просто "технические" поля, они заполняются при ребилде дерева. Удобно перед ребилдом их вообще обнулять, чтобы автоматом находить и исправлять возможные "потерянные" ветки.

Все операции по модификации дерева сводятся к изменению одного поля - parent.

Добавление/перемещение/массовая вставка - баналоно просто, ставим нужный parent и все.

Удаление всей ветки - легко, удаляем строки - это все.

После модификации дерева - запускаем ребилд, который заполняет поля left_key и right_key. Эти поля нужны для очень быстрого чтения любого куска дерева.

Сам процесс получения всего дерева или любого куска дерева сводится к двум sql запросам, упрощенно:

1. select left_key, right_key from table where id='$id' // получаем left_key и right_key нужного(корневого) элемента.

(выборка быстрая, т.к. идет по примари или уникальному ключу)

2. select .... where left_key between $left_key and $right_key order by left_key asc // получаем само дерево или нужную ветвь

(выборка быстрая, т.к. идет по индексу left_key)

Все, дерево у нас уже есть. На пхп один раз(один цикл) пробегаемся по нему - заполняем level и children.

Konceptovskiy:
Везде одно и тоже, текст, картинка, видео, кнопки плюсовать-репостить, рейтинги юзеров, бонусные системы(за коммент, публикации), репа плюс-минус, форумы, чаты, пользовательские блоги. Нового ничего за последние 10 лет, а движков нет.

Топик начинался интереснее, но хотелки свелись к обычному варезнику...

А варезник - это ДЛЕ. (чаще всего)

DenisVS:
Мне очень не хватает возможности редактирования вложенных файлов не в веб-интерфейсе, а в специальной программе. К примеру, конфигов и скриптов в продвинутом редакторе или IDE, графики в графическом редакторе, ну и т.д.

Если в веб интерфейсе редактирование идет через textarea, то может помочь плагин к файрфоксу It's All Text! - он вызывает внешний редактор для редактирования содержимого textarea. При сохранении, во внешнем редакторе (Ctrl+S), отредактированое содержимое возвращается назад в поле textarea.

Спасибо за топик, пойду смотреть dokuwiki.

Я ответил только на:

luxs:
И как это объединить в один запрос?

:)

Ставьте реальные цели. (с) старая социальная реклама.

В исходном посте: 100 городов... по 10 последних новостей для каждого города. 100*10=1000 новостей на одной странице. Интересно их кто-нибудь будет читать? :)

Следующий пост: where `id`=1000 order by `ido` DESC limit 5

Итого 5000 новостей на одной странице... километровые портянки в дорвеях нервно курят в сторонке. 😂

Шутки, шутками, но тут чудеса в одном запросе вряд-ли будут. Можно получить одним запросом самую последнюю новость с любого количества городов.

Получить 10 последних новостей одним запросом будет проблематично. Пытаться испольховать финты типа where ... ido>=max(ido)-5 (при условии, что ido последовательно и непрерывно в пределах одного id) - может вылезти боком при удалении новостей, да и придеться делать лишние телодвижения пля поддержки последовательной и непрерывной нумерации, по затратам - оно того не стоит.

Рабочие варианты: кеширование, как у Вас, последних новостей в отдельной таблице или кеширование уже результирующего html блока.

luxs:
И как это объединить в один запрос?


select * where `id`=1 order by `ido` DESC limit 5
union all
select * where `id`=2 order by `ido` DESC limit 5
union all
....
select * where `id`=1000 order by `ido` DESC limit 5
Всего: 1235