(;¬_¬)
ну бложик например с парой десятков постов
(;¬_¬)
а такую фигню стоит во что-то типа мускуля\постргре все же пихать, имхо
Anonymous
ну я тоже думаю что нужно nosql юзать
Chuvi
ну я тоже думаю что нужно nosql юзать
Чем лучше NoSQL, чем нормализованная реляционка, в данном случае?
Chuvi
Будут. Раз в день. По скрипту.
(;¬_¬)
Чем лучше NoSQL, чем нормализованная реляционка, в данном случае?
тем что запросы будут проще для выборки, как мне кажется, по сравнению с нормализованой
Chuvi
Да ну, там всё в одну таблицу отлично кладётся. Не вижу никаких проблемы выбирать из одной-то таблицы...
Anonymous
еще такое https://www.couchbase.com/preview/couchbase-server-4-0 вот советуют
(;¬_¬)
и это как раз и будет у тебя потом напряги делать при выборках
Chuvi
в одной таблице это не нормализованная бд
Запись - факт поиска, у него нет связей. Никаких.
(;¬_¬)
угу... а надо будет тебе выбрать только тех юзверей у которых accept language ru
(;¬_¬)
если бы у тебя все accept language были в отдельной таблице и связаны с юзверями как многие ко многим, то тебе только айдишники надо было бы выбрать
(;¬_¬)
а так придется делать текстовый поиск по json полю мускуля
(;¬_¬)
ты пример выкладывал скриншотом
Chuvi
Есть только факт поиска.
(;¬_¬)
у тебя там search "" user ""
Chuvi
это просто отграничение данных.
(;¬_¬)
и тебе с ним не придется работать?
Chuvi
что в этом оъекте данные о пользователе, анонимные.
(;¬_¬)
в таблице у тебя что только данные которые в search лежат?
Chuvi
Я не могу их связывать. Они анонимные.
(;¬_¬)
и что?
(;¬_¬)
не улавливаю пока проблемы
(;¬_¬)
допустим тебе надо выбрать все страницы которые искали юзвери с последним хромом
Chuvi
И то что нет сущности "пользователь"
(;¬_¬)
или те запросы на которые юзвери заходили из инкогнито режима браузера
(;¬_¬)
не будет таких задач?
Chuvi
Точнее даже null || !null
(;¬_¬)
окей, как ты все хранишь в sqlite, потому что я сейчас вилами по воде угадываю, а мне так не нравится
(;¬_¬)
а пример задачи выборки?
(;¬_¬)
ну и в цело возьми и перенеси из sqlite в мусуль например, прямо с такой же структурой. добавь индксы грамотно и все должно летать, имхо
Chuvi
Количество поисков через какой-либо поисковик, в определённые дни, под определённым user-agent.
(;¬_¬)
ну и лично я acceptlangs разбил на многие ко многим
Артём
может поудобнее будет сделать searchEngine целым и определть поисковики битовой маской? так же с acceptLangs (если вариантов не много)
(;¬_¬)
может поудобнее будет сделать searchEngine целым и определть поисковики битовой маской? так же с acceptLangs (если вариантов не много)
дальнейшая поддержка будет геморной не? плюс хранить где-то инфу о том, какая маска какому браузеру\языку соответствует
(;¬_¬)
плюс придет кто-то новый, ему тоже вникнуть надо будет время
Chuvi
дальнейшая поддержка будет геморной не? плюс хранить где-то инфу о том, какая маска какому браузеру\языку соответствует
Тут ещё такой нюанс - это просто пэт-проджект. Не сочтите за рекламу - https://chrome.google.com/webstore/detail/phototracker-lite/opadloaiiilnjibkfkopaokgfkhggjgb
Артём
плюс придет кто-то новый, ему тоже вникнуть надо будет время
define('SEARCH_GOOGLE', 1 << 0); define('SEARCH_YANDEX', 1 << 1); define('SEARCH_BING', 1 << 2); define('SEARCH_PORNOHUB', 1 << 3);
Артём
долго вникать в такое?
Chuvi
Хранится всё это на слабеньком VPS с 512 метрами памяти, которые отдавать на растерзание прожорливому MySQL не сильно хочется ради пары тройки выборок в месяц...
Артём
в какое?
на одно сообщение выше - кусок исходника с константами (как раз про битовые маски)
Sergey
тогда дня 2
Sergey
если с нуля, и не знаешь что есть разные системы счисления
Артём
тогда дня 2
это диагноз
(;¬_¬)
долго вникать в такое?
а если я буду искать сразу в мускуле?
(;¬_¬)
без констант на пыхе
Артём
а если я буду искать сразу в мускуле?
плохо тебе значит, если не прочитав доку (или хотя бы комменты в исходниках) - полез в БД.
Chuvi
Ну вот сейчас у меня 1 rows returned in 6003ms from: SELECT COUNT(id) FROM searches WHERE searchGoogle = 1; 😔
Артём
а это всё, что есть? или индексы потом поставил?
(;¬_¬)
это хорошо, если где-то есть эти исходники
(;¬_¬)
я же говорил уже
Chuvi
Не, ещё не расставлял.
Артём
просто как то не комильфо юзать целый INT (а он вроде как 4 байта, а ещё и индекс), ради того, что searchGoogle может быть только 0 или 1.
Артём
Не, ещё не расставлял.
поставь индекты на поля search***, а перед этим сделай их TINYINT
Chuvi
поставь индекты на поля search***, а перед этим сделай их TINYINT
Это как бы SQLite, в нём нет TINYINT. И он сам выбирает 1байтовый тип для таких полей.
(;¬_¬)
Это как бы SQLite, в нём нет TINYINT. И он сам выбирает 1байтовый тип для таких полей.
ну потому и говорят тебе, что sqlite не для такого предназначен
(;¬_¬)
🤷‍♂️твое дело. тогда просто не надо ныть что оно тормозит
Chuvi
1 rows returned in 138ms from: SELECT COUNT(id) FROM searches WHERE searchGoogle = 1;
(;¬_¬)
пока записей не станет пара лямов и не придется искать в том числе по text полям
Артём
Chuvi
Ну тогда и подумаю про миграцию. Или подумаю про то чтобы посчитать старые и удалить. )
Артём
246 тысяч записей.
тут всего селект по одной таблице
Chuvi
Нет, для SQLite - не тормозит.
(;¬_¬)
тут всего селект по одной таблице
он не хочет никого слушать. у него стало искать не 6 секунд.а 136мс, все збс
(;¬_¬)
забей