CouchDB - пример реального мира
Сегодня вечером в моем ежедневном техническом Googling я столкнулся с couchDB, увидев массу презентаций о том, как он работает в десять-сто раз лучше, чем любой RDBM, как это спасет нас от SQL-языков, таблиц, первичных ключей и т.д. Я решил сам попробовать. Кажется, проблема только в том, что я не могу понять, как это работает.
Как и для начала, я хотел бы закодировать менеджера веб-контактов с помощью couchDB. Проект позволит пользователю делать базовые вещи, такие как
- Создать/Изменить/Удалить контакты
- см. список их контактов, заказанных
- искать их по различным критериям
Итак, как мне начать?
Вот некоторые из моих мыслей
- создать базу данных для каждого пользователя, например, июль, Ann
- в этой БД, добавьте документ с типом контакта, документ будет выглядеть так, как показано на первом месте, см. код 1
- create/edit/delete прямо необходимо просто выполнить PUT, POST, DELETE в хорошей базе данных
- поиск будет обрабатываться с помощью couchdb-lucene, например dnolen, предлагаемого
теперь вот сложная часть, я действительно не понимаю всю концепцию map/reduce и как я могу использовать ее для выполнения заданий, которые я использовал с SQL. Также с представлениями, как вы обрабатываете пейджинг, а также группируете.
Я хотел бы создать экран с набором подкачки ссылок вроде этого
John, Doe
Johny, Hallyday
Jon, Skeet
A B C D E F **J** etc .... <-- those are link to see persons with that first name
какое представление я должен создать для достижения этого, если вы можете предоставить образцы, это было бы замечательно.
Контактный документ.
{
type: 'contact',
firstname: 'firstname',
lastname: 'lastname',
email: ['home': '[email protected]', 'work': '[email protected]'],
phone: ['home': '+81 00 0000 0000'],
address: []
... some other fields maybe ...
}
Ответы
Ответ 1
В предстоящей книге О'Рейли можно читать онлайн:
http://books.couchdb.org/relax/
Просто установите и поиграйте - вы можете делать прямые HTTP-запросы, используя curl в командной строке, или использовать встроенный веб-интерфейс под названием futon.
Хранение и извлечение данных очень просто, самая сложная часть - мышление в терминах map/reduce-views вместо sql-запросов.
Ответ 2
IBM имеет отличный учебник, используя curl для чтения/записи через REST.
Ответ 3
Ваше приложение довольно легко связано с CouchDB. У вас будет база данных для каждого пользователя. Контакты - это просто документы в конкретной пользовательской базе данных. CRUD просто разговаривает с базой данных, используя HTTP. Вы можете создавать представления, которые выдают ключи (фамилия, имя), чтобы разрешить сортировку.
Для мощного поиска я бы рекомендовал couchdb-lucene.