Особенности OPDS???
Что значит не сделанная фича? В сортировке "По Каталогам" - работает все именно такт ка и задумано: представление совпадающее с файловой структурой.rpin wrote: Я думал что это БАГ - при выводе содержимого "по каталогам" и "последние добавленные" происходит действительно по 60 штуук (в соответствии с maxitems = 60) - а это получается просто не сделанная фича.
Что-то типа этого планирую сделать.rpin wrote: А в разделе последних добавленных нужно предлагать выбор наверное так
За сегодня
За последнюю неделю
За месяц
Это вряд-ли необходимо на самом-деле.А вот сейчас пришло в голову - а можно ли сделать примерно так - в каждом меню выбора, например по буквам (А, Б, В... Я) добавить еще дополнительную выборку (по автору, по названию и по жанру). Т.е. при выборке книг авторов на буквы АБ дать возможность выбора еще и по жанрам, названиям и сериям.
По сериям думаю надо будет сделать сортировочку.А вот поле Серия, мне кажется, нужно добавить однозначно - часто хочется посмотреть выборку знакомых серий...
Please Войти or Create an account to join the conversation.
- mitshel
-
- Offline
- Администратор
-
- Posts: 297
- Karma: 8
Вы же сами говорили, что используете каталоги бибилиотеки lib.ru.ec - она недавно обновилась - там сейчас 70 здоровенных архивов размером от одного до двух с половиной гигов. Последнее обновление - 2 файла чуть больше 4Гб.
Вот теперь попробуйте посмотреть содержимое одного из последних каталогов - Вас не утомит листание списка из 2800 файлов????
Это я и имел ввиду, что сортировка по каталогам НЕ ДОЛЖНА выдавать просто представление в соответствии с файловой системой, а нужно выдавать с параметром "alphabet_menu" . Так же и сортировка по последним добавленным выдаст список из 5000 файлов с разбивкой по 60...
>>>>>А вот сейчас пришло в голову - а можно ли сделать примерно так - в каждом меню выбора, например по буквам (А, Б, В... Я) добавить еще дополнительную выборку (по автору, по названию и по жанру). Т.е. при выборке книг авторов на буквы АБ дать возможность выбора еще и по жанрам, названиям и сериям.
Это вряд-ли необходимо на самом-деле.
Тут наверное Вы правы - подумал, наверное это ибыточно...
А сортировка по сериям нужна однозначно...
Please Войти or Create an account to join the conversation.
- rpin
-
Topic Author
- Offline
- Осваиваюсь на форуме
-
- Posts: 36
- Karma: 1
Ну над этим вопросом можно долго спорить. И я понимаю что лично Вам было бы удобно дополнительное разбиение по алфавиту. Но сортировку "По каталогам" я задумал для другой цели. Например у меня в паке Python лежат разные книги в разных форматах (djvu, pdf, fb2) и с совершенно разными названиями. Так вот лично я бы хотел видеть войдя в каталог ...\Python именно то что у меня лежит в этой папке на диске и сразу иметь возможность одним взглядом увидеть сразу все не шаря по дополнительным алфавитным разбиениям. Этот пункт для тех (включая меня самого) кто на диске создавал структуру папок для хранения своих книг, и, соответсвенно хочет видеть ее из своего OPDS-клиента именно в таком виде.rpin wrote: Вы же сами говорили, что используете каталоги бибилиотеки lib.ru.ec - она недавно обновилась - там сейчас 70 здоровенных архивов размером от одного до двух с половиной гигов. Последнее обновление - 2 файла чуть больше 4Гб.
Вот теперь попробуйте посмотреть содержимое одного из последних каталогов - Вас не утомит листание списка из 2800 файлов????
Это я и имел ввиду, что сортировка по каталогам НЕ ДОЛЖНА выдавать просто представление в соответствии с файловой системой, а нужно выдавать с параметром "alphabet_menu" . Так же и сортировка по последним добавленным выдаст список из 5000 файлов с разбивкой по 60...
Ну а Вашу потребность может быть получится сделать в "Последних добавленных"
Please Войти or Create an account to join the conversation.
- mitshel
-
- Offline
- Администратор
-
- Posts: 297
- Karma: 8
mitshel wrote: ......
Ну а Вашу потребность может быть получится сделать в "Последних добавленных"
Безусловно, Вам как разрабу, разумеется виднее, тем более я в сторону каталожного хранения книг на сервере не смотрел, пока SOPDS у меня исключительно заточена на локальный lib.rus.ec.
Ну а если последние добавленные будут работать так, как Вы говорите, то разумеется вопрос снимается. Спасибо ...
Please Войти or Create an account to join the conversation.
- rpin
-
Topic Author
- Offline
- Осваиваюсь на форуме
-
- Posts: 36
- Karma: 1
В основном смотрю на скорость выполнения SQL запросов на моем NAS DS413j - слишком большое время выполнения запросов. Если простые запросы обрабатываются 5-20 секунд, то это быстро, а если сложный запрос, то клиент (в моем случае читалка CoolReader) отваливается по тайм-ауту быстрее, чем выполняется запрос (иногда до 240 сек)
Для примера прикладываю файл mysqld-slow.log
/usr/syno/mysql/libexec/mysqld, Version: 5.1.49-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
# Time: 140316 13:19:11
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 13.523530 Lock_time: 0.027124 Rows_sent: 23 Rows_examined: 281148
use sopds;
SET timestamp=1394965151;
select UPPER(substring(trim(title),1,2)) as letters, count(*) as cnt from books where substring(trim(title),1,1)='Ж' and avail!=0 and doublicat=0 group by 1 order by 1;
# Time: 140316 13:19:31
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 12.218007 Lock_time: 0.000700 Rows_sent: 15 Rows_examined: 281132
SET timestamp=1394965171;
select UPPER(substring(trim(title),1,3)) as letters, count(*) as cnt from books where substring(trim(title),1,2)='ЖЕ' and avail!=0 and doublicat=0 group by 1 order by 1;
# Time: 140316 13:24:30
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 218.909301 Lock_time: 0.027344 Rows_sent: 4 Rows_examined: 1906052
SET timestamp=1394965470;
select 1 s, count(avail) from books where avail!=0 and doublicat=0 and registerdate>now()-INTERVAL 7 DAY union all select 2 s, count(*) from (select b.author_id from bauthors b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.author_id) a1 union all select 3 s, count(*) from (select b.genre_id from bgenres b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.genre_id) a2 union all select 4 s, count(*) from (select b.ser_id from bseries b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.ser_id) a3 order by s;
# Time: 140316 13:25:33
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 217.250989 Lock_time: 0.003937 Rows_sent: 4 Rows_examined: 1906052
SET timestamp=1394965533;
select 1 s, count(avail) from books where avail!=0 and doublicat=0 and registerdate>now()-INTERVAL 7 DAY union all select 2 s, count(*) from (select b.author_id from bauthors b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.author_id) a1 union all select 3 s, count(*) from (select b.genre_id from bgenres b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.genre_id) a2 union all select 4 s, count(*) from (select b.ser_id from bseries b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.ser_id) a3 order by s;
# Time: 140316 13:31:07
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 235.392630 Lock_time: 0.026101 Rows_sent: 4 Rows_examined: 1906052
SET timestamp=1394965867;
select 1 s, count(avail) from books where avail!=0 and doublicat=0 and registerdate>now()-INTERVAL 7 DAY union all select 2 s, count(*) from (select b.author_id from bauthors b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.author_id) a1 union all select 3 s, count(*) from (select b.genre_id from bgenres b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.genre_id) a2 union all select 4 s, count(*) from (select b.ser_id from bseries b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.ser_id) a3 order by s;
# Time: 140316 13:32:18
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 241.788583 Lock_time: 0.001822 Rows_sent: 4 Rows_examined: 1906052
SET timestamp=1394965938;
select 1 s, count(avail) from books where avail!=0 and doublicat=0 and registerdate>now()-INTERVAL 7 DAY union all select 2 s, count(*) from (select b.author_id from bauthors b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.author_id) a1 union all select 3 s, count(*) from (select b.genre_id from bgenres b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.genre_id) a2 union all select 4 s, count(*) from (select b.ser_id from bseries b left join books c on b.book_id=c.book_id where c.avail!=0 and registerdate>now()-INTERVAL 7 DAY group by b.ser_id) a3 order by s;
# Time: 140316 13:34:32
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 9.076760 Lock_time: 0.000758 Rows_sent: 45 Rows_examined: 166085
SET timestamp=1394966072;
select SQL_CALC_FOUND_ROWS a.ser_id, a.ser, count(*) as cnt from series a, bseries b, books c where a.ser_id=b.ser_id and b.book_id=c.book_id and TRIM(a.ser) like 'ГЕ%' and c.avail!=0 and c.doublicat=0 group by 1,2 order by 2 limit 0,60;
# Time: 140316 13:35:19
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 8.423904 Lock_time: 0.000701 Rows_sent: 60 Rows_examined: 166517
SET timestamp=1394966119;
select SQL_CALC_FOUND_ROWS a.ser_id, a.ser, count(*) as cnt from series a, bseries b, books c where a.ser_id=b.ser_id and b.book_id=c.book_id and TRIM(a.ser) like 'ГА%' and c.avail!=0 and c.doublicat=0 group by 1,2 order by 2 limit 0,60;
# Time: 140316 13:36:33
# User@Host: sopds[sopds] @ localhost [127.0.0.1]
# Query_time: 7.683306 Lock_time: 0.000884 Rows_sent: 5 Rows_examined: 281112
SET timestamp=1394966193;
select 1 s, count(avail) from books where avail!=0 and doublicat=0 union all select 2 s, count(author_id) from authors union all select 3 s, count(cat_id) from catalogs union all select 4 s, count(genre_id) from genres union all select 5 s, count(ser_id) from series order by s;
Получается что NAS DS413j не в состоянии обрабатывать запросы за приемлимое время, хотя бы за 20-40 секунд.
Может все таки существует возможность оптимальной настройки SQL сервера на Synology DS 413j ??????
Please Войти or Create an account to join the conversation.
- rpin
-
Topic Author
- Offline
- Осваиваюсь на форуме
-
- Posts: 36
- Karma: 1
Но конечно Ваши цифры по времени выполнения совсем неудовлетворительные. На самом деле, сейчас вроде весь функционал который я хотел сделать вроде бы готов. Надеюсь в дальнейшем произвести оптимизацию запросов. Так что планирую основные изменения в версии 15 произвести в оптимизации скорости работы клиента.
Пока могу порекомендовать следующие настройки для my.cnf
query-cache-type = 1
query_cache_size = 10M
key_buffer_size = 200M
read_buffer_size = 2M
sort_buffer_size = 2M
Только обращаю внимание, что лучше разобраться с ними, поскольку такие параметры я выбирал для своего компьютера.
в любом случае познакомтесь с этой статьей: blog.peter23.com/index.php/2010/11/30/setup-optimzations-mysql
Please Войти or Create an account to join the conversation.
- mitshel
-
- Offline
- Администратор
-
- Posts: 297
- Karma: 8