Ответ: Node.JS + MongoDB
Учти что поиск по тексту как у тебя не будет использовать никакой индексации, и на больших таблицах может быть очень дорогим, тем более что ты не ограничиваешь число результатов.
Для регулярок, тебе нужно использовать `new RegExp()`. А чтобы использовать индексацию по полю, то можешь сделать так: PHP код:
|
Ответ: Node.JS + MongoDB
Мне с индексами не судьба, хочу имена кланов сделать с именами типа -=М.О.Й.К.Л.А.Н=-
|
Ответ: Node.JS + MongoDB
И что мешает это всё равно заиндексировать?
Можно сделать массив `search` который будет содержать 2 вида строк: в нижнем регистре и в нижнем регистре без знаков. Далее простой индекс по этому полю `search`, и затем поиск будет весьма продуктивен. Главное это escape'ить регулярные знаки в прописные, например . в \. и т.п. Далее поиск будет работать по таким запросам: Код:
-=м.О.Й.к.л |
Ответ: Node.JS + MongoDB
Ближайший вопрос, который хотелось бы решить - это резервное копирование базы. Как это правильно сделать?
|
Ответ: 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'а. |
Ответ: Node.JS + MongoDB
Все еще не очень понимаю вот это: http://nodejs.org/api/buffer.html
Цитата:
|
Ответ: Node.JS + MongoDB
Что конкретно тебе нужно с бинарными данными?
|
Ответ: Node.JS + MongoDB
Хочу научиться работать с бинарными данными как с MemoryStream в C#. Хочу свой протокол сериализации реализовать в будущем для клиентсервера.
|
Ответ: Node.JS + MongoDB
Ну ты как бы можешь да юзать то что тут есть, но для работы с бинарными данными я очень рекомендую поступить одним из способов:
1. Писать Addon на С++ для парсинга бинарных данных в JSON объект. 2. Заюзать готовые решения для этого, например protobuf. 3. Взять готовое решение на С++, и написать враппер/addon для него, например Cap'n Proto отличный выбор будет. Для начала и JSON'а хватает с головой. Если качественно написать логику сбора данных, то заменить сборку и разборку данных сможешь потом без проблем. |
Ответ: Node.JS + MongoDB
Больше всего в ноде не нравится то, что приходится делать вот такие "елки":
Особенно в те моменты когда есть асинхронные ветвления (иногда необходимо сделать лишний запрос в базу, а иногда нет). Я тогда справляюсь с использованием функций, которые вызываю несколько раз в ветвлении. К примеру (функция addRequest): |
Ответ: Node.JS + MongoDB
Угу, эта проблема популярна. Один из хороших вариантов "решения" её будут promise. Можно chain'ить асинхронные запросы как угодно, и отлавливать ошибки лучше.
И на err ты не проверяешь нигде :).. |
Ответ: Node.JS + MongoDB
Цитата:
|
Ответ: Node.JS + MongoDB
Цитата:
А ошибка указывает на ошибку в запросе, что порой ведёт к неприятным последствиям. Суть ловли ошибок, приводит к отслеживанию где запросы были не хорошие, и заставляет разраба валидить данные в запрос лучше. Например если ты где-то забыл убрать "неприятные" символы в стринге, что приводит к регулярке, а это очень неприятно для бд.. Или объект для фильтров собрал нехороший :) А порой претендуешь что есть переменная в документе, а её нету, тоже бывает такие дела.. |
Ответ: Node.JS + MongoDB
ну наличие переменных в документе я проверяю там где надо, да и обработки ошибок я когда-нибудь впишу, когда появится на это время)
|
Ответ: Node.JS + MongoDB
Вот поковырялся, я писал для себя сам мелкие функции для chain'ов асинхронных функций, но можешь заюзать async https://github.com/caolan/async там етсь например series - запускает функции поочереди. Думаю там можно также вставлять по пути до функции (task injection), и т.п.
|
Часовой пояс GMT +4, время: 22:02. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot