|
JavaScript / HTML Создание динамической разметки страниц |
01.10.2013, 13:53
|
#31
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
Учти что поиск по тексту как у тебя не будет использовать никакой индексации, и на больших таблицах может быть очень дорогим, тем более что ты не ограничиваешь число результатов.
Для регулярок, тебе нужно использовать `new RegExp()`. А чтобы использовать индексацию по полю, то можешь сделать так:
Что говорит "начинается с". Естественно это зависит от капитализации символов, поэтому ты может захочешь хранить копию текста с toLowerCase() заранее. Индексация как понимаю будет tree с нодами по алфавиту, что очень продуктивно, тебе не нужно париться как индекс работает и т.п., главное создай индекс по полю. Да и советую убедиться что в регулярке нету ничего "опасного", т.к. сделать её очень тяжолой - весьма просто, следственно и загрузить твою БД, сложной регуляркой не составит труда.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
01.10.2013, 14:25
|
#32
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Node.JS + MongoDB
Мне с индексами не судьба, хочу имена кланов сделать с именами типа -=М.О.Й.К.Л.А.Н=-
|
(Offline)
|
|
01.10.2013, 14:40
|
#33
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
И что мешает это всё равно заиндексировать?
Можно сделать массив `search` который будет содержать 2 вида строк: в нижнем регистре и в нижнем регистре без знаков.
Далее простой индекс по этому полю `search`, и затем поиск будет весьма продуктивен.
Главное это escape'ить регулярные знаки в прописные, например . в \. и т.п.
Далее поиск будет работать по таким запросам:
-=м.О.Й.к.л
мой
МоЙКЛаН
мо
-=м.
Что для поиска думаю вполне достаточно и гравное это будет очень быстрым поиском.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.10.2013, 14:33
|
#34
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Node.JS + MongoDB
Ближайший вопрос, который хотелось бы решить - это резервное копирование базы. Как это правильно сделать?
|
(Offline)
|
|
03.10.2013, 18:41
|
#35
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
Backup?
Есть трои принятых способа бэкапить бд, первый будет используя mongoexport/mongoimport второй mongodump/mongorestore, и снапшот системы (это для облаков).
mongoexport/mongoimport
Оперирует JSON данными, и предусмотрен к бэкапу только данных и не содержит никаких мета данных. Также т.к. данные в JSON формате, а он ненмого будет побольше чем BSON, нужно больше места для его хранения.
Плюс при импорте, подразумевается что у тебя уже есть сама база данных с коллекциями и всеми индексами.
Думаю это удобно для быстрого копирования блока данных между базами, но не совсем для бэкапов.
mongodump/mongorestore
Этот способ реально хорошо справляется с бэкапами, делает полную копию данных самих коллекций и всей базы (если на всю делаешь), хранит данные в BSON (что оптимальнее), а также хранит мета данные о коллекциях, индексах и других плюшках для полной копии восстановления.
Snapshot of System
Этот подход используется в облаках, когда ты можешь создать полную копию текущей системы. Такие снапшоты обычно весьма весомы, т.к. бэкапят всё что есть на системе а не только бд. Если у тебя большая бд и много ресурсов на системе - тебе такой вариант не подойдёт.
Я использую mongodump/mongorestore, с ним можно дампить как всю бд, так и отдельные базы данных, так и более детально - отдельные коллекции.
Учти что при mongorestore, если есть уже бд и коллекция - то данные добавяться паралельно к прошлым, так что если ресторишь, то удаляй коллекцию или всю бд (если всю бд ресторишь).
Я написал скрипт который запускается каждый день в 3 ночи, используя node.js, он используя child_process вызывает command line для mongodump, который в свою очередь создаёт папку. Далее я это дело tar'ю, и заливаю там же скриптом на S3 Bucket, где стоит правило - автономно удалять файлы старее 1го месяца.
Всё автономно, и никакой парки, плюс бэкапяться у меня две базы данных за один подход как два разные tar'а.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.10.2013, 17:00
|
#36
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Node.JS + MongoDB
Все еще не очень понимаю вот это: http://nodejs.org/api/buffer.html
'binary' - A way of encoding raw binary data into strings by using only the first 8 bits of each character. This encoding method is deprecated and should be avoided in favor of Buffer objects where possible. This encoding will be removed in future versions of Node.
|
Как правильно с бинарными данными работать в node js?
|
(Offline)
|
|
04.10.2013, 18:34
|
#37
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
Что конкретно тебе нужно с бинарными данными?
|
(Offline)
|
|
04.10.2013, 22:23
|
#38
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Node.JS + MongoDB
Хочу научиться работать с бинарными данными как с MemoryStream в C#. Хочу свой протокол сериализации реализовать в будущем для клиентсервера.
|
(Offline)
|
|
04.10.2013, 22:29
|
#39
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
Ну ты как бы можешь да юзать то что тут есть, но для работы с бинарными данными я очень рекомендую поступить одним из способов:
1. Писать Addon на С++ для парсинга бинарных данных в JSON объект.
2. Заюзать готовые решения для этого, например protobuf.
3. Взять готовое решение на С++, и написать враппер/addon для него, например Cap'n Proto отличный выбор будет.
Для начала и JSON'а хватает с головой. Если качественно написать логику сбора данных, то заменить сборку и разборку данных сможешь потом без проблем.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.10.2013, 10:05
|
#40
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Node.JS + MongoDB
Больше всего в ноде не нравится то, что приходится делать вот такие "елки":
Особенно в те моменты когда есть асинхронные ветвления (иногда необходимо сделать лишний запрос в базу, а иногда нет). Я тогда справляюсь с использованием функций, которые вызываю несколько раз в ветвлении.
К примеру (функция addRequest):
|
(Offline)
|
|
10.10.2013, 13:47
|
#41
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
Угу, эта проблема популярна. Один из хороших вариантов "решения" её будут promise. Можно chain'ить асинхронные запросы как угодно, и отлавливать ошибки лучше.
И на err ты не проверяешь нигде ..
|
(Offline)
|
|
10.10.2013, 13:59
|
#42
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Node.JS + MongoDB
Сообщение от moka
И на err ты не проверяешь нигде ..
|
Мне проще проверить результат на наличие)
|
(Offline)
|
|
10.10.2013, 14:03
|
#43
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
Сообщение от pax
Мне проще проверить результат на наличие)
|
Результата может не быть, и ошибки может не быть, например просто не найден.
А ошибка указывает на ошибку в запросе, что порой ведёт к неприятным последствиям. Суть ловли ошибок, приводит к отслеживанию где запросы были не хорошие, и заставляет разраба валидить данные в запрос лучше.
Например если ты где-то забыл убрать "неприятные" символы в стринге, что приводит к регулярке, а это очень неприятно для бд.. Или объект для фильтров собрал нехороший А порой претендуешь что есть переменная в документе, а её нету, тоже бывает такие дела..
|
(Offline)
|
|
10.10.2013, 14:37
|
#44
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Node.JS + MongoDB
ну наличие переменных в документе я проверяю там где надо, да и обработки ошибок я когда-нибудь впишу, когда появится на это время)
|
(Offline)
|
|
10.10.2013, 15:04
|
#45
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Node.JS + MongoDB
Вот поковырялся, я писал для себя сам мелкие функции для chain'ов асинхронных функций, но можешь заюзать async https://github.com/caolan/async там етсь например series - запускает функции поочереди. Думаю там можно также вставлять по пути до функции (task injection), и т.п.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:43.
|