Nano Hash - криптовалюты, майнинг, программирование

Слой Couchdb/Mongodb Application/Logic, например Oracle DB

На моей работе мы используем Oracle для нашей базы данных. Который отлично работает. Я не главный администратор БД, но работаю с ней. Что мне нравится, так это то, что БД имеет встроенный логический уровень, использующий PL/SQL, который может обрабатывать логику, связанную с сохранением данных и их извлечением. Мне это очень нравится, потому что это позволяет нашему приложению MVC (PHP/Zend Framework) быть легче и упрощает привязку данных к другой платформе, например к настольному компьютеру или мобильному устройству.

Хотя у меня есть личный проект, в котором я хочу использовать CouchDB или MongoDB, и я хочу попытаться достичь аналогичной цели. вне mvc/framework я хочу иметь уровень API, с которым общаются основные приложения. на самом деле они не общаются напрямую с базой данных. Они указывают проектный документ (couchdb) или что-то подобное для монго, чтобы получить результаты. И этот уровень API будет проверять входящие данные и следить за тем, чтобы сами данные сохранялись и обновлялись должным образом. Например, при сохранении нового пользователя в рамках мне нужно только отправить объект json с ключами/значениями, которые необходимо сохранить, а слой API сохраняет данные в нужных местах, где это необходимо.

Этот API, вероятно, будет иметь пользовательский интерфейс, но только для административных целей и для облегчения моей жизни. Как правило, он всегда будет отвечать строками json или в некоторых случаях предварительно обработанным/кэшированным html. Поскольку каждый уровень API в любом случае будет специфичным для приложения.

Мне было интересно, если кто-нибудь сделал что-нибудь подобное, или есть какие-либо советы по nethods, я мог бы это сделать. В настоящее время я пытаюсь написать свое приложение на python, и передняя часть, вероятно, будет чем-то вроде Angularjs. Хотя я также смотрю на node.js для серверной части.


Ответы:


1

Именно этим мы и занимаемся на моей нынешней работе. У нас есть MongoDB на серверной части, RESTful API поверх нее, а затем PHP/Zend на передней части.

Большая часть наших данных доступна только для чтения, поэтому мы импортируем эти данные в MongoDB, а затем RESTful API (на Java) просто обслуживает их.

Некоторые вещи, о которых стоит подумать при таком подходе:

  1. Напишите общую логику сортировки/разбиения по страницам в своем API. Это понадобится вам для списков данных. Пользователь может передавать такие вещи, как http://yourapi.com/entity/1?pageSize=10&page=3.

  2. Обязательно создайте соответствующие индексы в Mongo, чтобы они соответствовали тому, что люди будут запрашивать. Представьте, что вы храните пользователей. Сделайте индекс в Mongo для поля идентификатора пользователя или просто используйте поле _id, которое уже проиндексировано во всех ваших вызовах.

  3. Не забудьте включить все соответствующие данные в данный документ. Mongo не выполняет соединения, как вы привыкли в Oracle. Просто имейте в виду, что данные моделирования сильно отличаются от базы данных документов.

  4. Кажется, вы хотите написать слой (API среднего уровня), который не зависит от базы данных. Это хорошая цель. Просто будьте осторожны, чтобы не допустить, чтобы специфичная для Mongo терминология проникла в ваш открытый API. В Mongo есть определенные операторы/концепции, которые вам нужно будет замаскировать более общими терминами. Например, у них есть оператор $set. Не выставляйте это напоказ.

Наконец, имея приличный опыт работы с CouchDB и Mongo, я определенно выберу Mongo.

19.02.2013
  • Причина, по которой я хочу использовать диван, заключается в том, что я могу использовать мастер для управления репликацией, и мне также нравится идея иметь локальные копии документов _design, где я могу их обновлять, и запускать sync() для обновления карты/уменьшения на сервере. Мне кажется, это также подходит для наличия локального слоя API, и я могу сохранить функции map/reduce в своем репозитории git. Хотя мне нравится простота использования монго, и если я могу сделать то же самое, то хорошо. 19.02.2013
  • Еще одна причина, по которой я хочу использовать диван, заключается в том, что, согласно моим исследованиям, он лучше обрабатывает финансовую информацию (корзина для покупок / POS), чем mongo. Одна из вещей, над которой я буду работать, — это система точек продаж. Я не использую MySQL из-за требований гибкой схемы. 19.02.2013
  • Основной причиной, по которой я предпочитаю Mongo на данный момент, является сообщество, стоящее за ним. У Couch все еще есть поддержка, но у Mongo есть импульс и, на мой взгляд, лучшая эко-система вокруг продукта. Но оба работают очень хорошо для хранения JSON. Наборы реплик Mongo могут быть немного сложнее, чем мастер / мастер с Couch. 19.02.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..