Что нужно для создания базы данных MongoDB (коллекция из браузера) на домашнем компьютере?
Задача:
Создать на домашнем компьютере базу данных для коллекционирования интернет контента и информации в различных направлениях. Первоначально речь шла о разномастном творчестве, но в последствии стало ясно, что эту же базу можно использовать и для хранения разной информации. Так как, не возможно предсказать как именно разовьётся какое либо направление в таком коллекционировании, считаю, что лучшим решением будет именно документно ориентированная база данных MongoDB. Контент будет браться непосредственно из браузера.
Так же необходимо извлекать информацию и файлы контента из базы данных и просматривать, или проигрывать их в браузере.
Вопрос:
Что для этого нужно, учитывая, что есть домашний компьютер и база должна храниться на нём?
Или, каков алгоритм разработки такой программной конструкции?
0. Поставить монго :)
1. Нужен достаточно удобный метод вставлять/получать информацию. Можно пойти через REST прослойку: https://docs.mongodb.com/ecosystem/tools/http-inte... или один из драйверов, которые есть под кучу языков программирования.
Или использовать какой-нить Robomongo для работы вручную
2. Какая-то программа (самописная?), которая собственно работает с монго, берёт откуда-то данные, как-то перерабатывает и складывает.
3. Желание.
Понравился ваш статус "Программер чего попало на чем попало" :).
Возможно Ваш кругозор поможет и мне с ориентироваться.
Хочется продолжить разговор.
1. Перед нами стандартный браузер (любой). В его окне мы видим картинку, текст, видео и звуковой файл. Задача: взять из открытого окна: либо выделенный текст, либо картинку, либо видео, либо звук. Устроит один из вариантов.
Вариант А:
Зажать мышкой выделенный текст, или картинку, или видео, или звук и просто перетащить его в плавающее окошко, и таким образом скопировать файл куда-то.
Вариант Б:
Нажать правой кнопкой мышки на выделенном тексте, либо картинке, либо видео, либо звуковом файле, найти в контекстном меню строчку "Поместить в базу" и после нажатия на эту строчку иметь дело плавающим окошком, которое услужливо появляется, для последующей сортировки данных.
Вариант С:
Правой кнопкой мышки нажать на желаемом объекте в браузере и в контекстном меню выбрать конкретное место в базе (минуя плавающее окошко). И после нажатия на заданную строчку контекстного меню быть уверенным, что данный объект сохранён в нужном месте.
Вопросы: как это реализовать?
Нужен ли локальный сервер, типа Денвера, для того, что бы извлечь из браузера объект и поместить его в локальную базу, или можно обойтись без него?
Способен ли на это ЯваСкрипт, или нужно использовать другой язык?
Но для сохранения этого дела уже нужен сервер, не обязательно локальный, главное доступный браузеру. Если очень хочется, можете оставаться в рамках JS (не люблю я его, поэтому подскажу мало). Серверная технология - NodeJS, виндовые сборки в природе есть, которые сервер запускают и прочее.
Вот пример как выделенный текст отсылается на сторонний сервер https://blog.andyjiang.com/textme
серверный скрипт может быть написан на чем попало и делать что угодно.
Вариант С - больше похоже или на явный перехват событий мыши, как на гугл-диске - контекстное меню рисуется не браузерное, а нормальное, или работа расширения, но идея всё та же - данные куда-то отсылаются.
PrAw: цитата"Итоговая сверхзадача вообще в чем заключается?"
В том, что бы изъятые данные складировать в базу Монго. Просто я пытаюсь пошагово разобраться в том, что за чем предстоит делать.
А полностью, задача выглядит так:
Увидел, что то интересное в интернете, или услышал,
не заморачиваясь взял то, что интересует и положил в базу (либо через контекстное меню, либо перетаскиванием в плавающее окошко). База допустим на флешке. Потом вставил эту флешку в любое железо,
открыл программку,
нашёл в базе, что хотел и извлёк без танцев с бубном. В том виде, который был до погружения в базу. То есть файл видео, изображение, звуковой файл или текст.
При чём база должна быть не зависима от наличия интернета. В идеале переносная на флешке.
Конечно, пока это только голая идея на уровне набора функционала. Понятно, что понадобится и программка, которая будет общаться с браузером, с базой и с проводником виндовс. Так же понятно, что понадобится графический интерфейс. Те же окошки, в которые перетаскивать контент. Эта же программка с интерфейсом должна предоставить удобную возможность поиска в базе и извлечения из неё коллекционного контента для просмотра и изменения, или удаления. Ну в общем как то так.
Кузьма Овчинников: ок. Проще всего bookmarklet, который будет подгружать основной скрипт и дёргать куда-нибудь выделенное. Бонус букмарклета - он просто закладка, для добавления на панель достаточно открыть html файл с ссылкой, в которой он прописан и перетащить на панель закладок.
Сам детальный скрипт, который реализует плавающее окошко или что угодно - подгружается с локального сервера на флэшке. Сервер можно поднимать реально на чем попало - сначала определиться с серверной технологией. JS, PHP, Python.
Монго выглядит перебором, он после запуска инициализирует пустую базу мегабайт на 300, так что в работе может не понравиться. Можно особо не заморачиваясь обойтись sqlite БД, причем хватит примерно одной таблицы из 3 полей - ссылка, дата, текст. В текст можно пихать и бинарники.
3.Монго я выбрал не случайно. Ведь в бессистемном коллекционировании система на самом деле есть, но она не таблице-оформляемая, потому что не предсказуема. Например я нашёл музыкальный файл какого то новичка, сохранил его и прилепил в базе те случайные данные, которые были на его странице. То есть размер и формат файла, его частотный диапазон, дата создания. Плюс к этой технической информации, название самого файла, стиль, имя автора. Потом, через какое то время в инете встречается знакомое имя, но уже в качестве автора поэмы. Возникает необходимость в новой таблице уже про литературу. Да ещё так снабдить идентификаторами каждую ячейку, что бы можно было выйти на этого автора и через музыку, и через стихи. А потом выясняется, что его жена тоже пишет, но уже прозу. Она носит фамилию мужа. То есть из фамилии начинает расти новая ветка. А из неё может ещё ветка пойти. Например, если его жена сама по себе креативна по жизни и следить за сменой её макияжа или одежды в соцсети, является тоже своего рода коллекционированием. Можно конечно написать таблицу, а потом неимоверное её раздувать и дописывать столбики и строчки. А можно просто воспользоваться документо-ориентированным подходом и непредсказуемо развивать это собирательство. При этом не рискуя запутаться и потеряться в данных. Потому, что вспомнив, хотя бы имя музыкального файла, сможешь легко найти и марку помады жены автора этого файла. Если я не правильно себе представляю, как работает Монго, поправьте меня. А то может я что-то фантастическое хочу, а этого она не предоставит?
2. Думаю, PHP.
Я думал, что JS больше подходит для клиентских решений, а у вас он в предложен в списке локально-серверных.
1. Залкадурки! Может быть это то что нужно. Буду пробовать. :)
p\s: что касается 300 МБ. Если база на внешнем жёстком диске (большая флешка), это не такая и большая жертва.
Кузьма Овчинников: ок. против монги я ничего не имею против
Серверный язык - любой по вкусу, что более знакомо. Сам с PHP на питон перебираюсь.
Большой объем базы повышает шанс того, что может ненароком поломаться, выдернутое в процессе записи.
А вот что на самом деле плохо в монго - он расслабляет. Можно запихать любой JSON и он его скушает с удовольствием. Проблемы начнутся через год :))) Когда попытаешься как-то упорядочивать это дело.
Реляционные БД более жесткие, так что это заставляет обдумывать. Есть промежуточный вариант - хранить в текстовом поле в JSON обычной реляционной БД :)
Насчёт упорядочивания, думаю надо реализовать возможность, (!) при добавлении в базу (!), сразу указать все связи с уже имеющимися документами, а так же связи с категориями. В этом случае поиск не напряжёт. Будет не сложнее, чем в проводнике Виндовс. Даже легче.
--
Цитата: "Есть промежуточный вариант - хранить в текстовом поле в JSON обычной реляционной БД :)"
Вот тут не совсем понял. Разверните немного эту мысль пожалуйста.
--
Что касается Питона, почему перебираетесь? Он чем то лучше?