2010-02-22 3 views
1

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

Erlang 
Ruby 
Java 
.NET 

Есть ли у кого-нибудь какие-либо советы о том, как мне следует разрабатывать этот API?

Благодаря

+2

Да, с большим энтузиазмом, страстью и самоотверженностью; потому что вам понадобятся все три :) Удачи. –

+0

@ Zubair: Это монументальная задача, чтобы создать нечто, что даже смутно полезно. – skaffman

+0

@ skaffman - Как вы определяете «смутно полезный»? Какие функции вы видите? – Zubair

ответ

1

Во-первых, и в качестве общего правила в любое время вы строите «подключаемую» уровень абстракции, строить его поддерживать по крайней мере два реальных реализаций, чтобы начать. Не создавайте его только для одного хранилища данных и старайтесь сделать его абстрагированным, потому что вы не заметите деталей, которые не будут хорошо подключены к другой реализации. Заставив его использовать две отдельные реализации, вы приблизитесь к чему-то, что на самом деле является гибким, но вам нужно будет внести дальнейшие изменения в поддержку третьего и четвертого хранилищ данных.

Во-вторых, не беспокойтесь, эти вещи уже существуют. Microsoft предоставила тонну для своих технологий (ODBC, ADO, ADO.NET и т. Д.), И я уверен, что Ruby/Java/etc также имеет несколько. Я понимаю желание инкапсулировать уже существующую технологию, но чем больше хранилищ данных вам нужно поддерживать, тем больше сложностей вам необходимо собрать, и чем ближе вы будете к ADO.NET (или аналогичным технологиям). Такие компании, как MS, потратили тонну денег и исследования на решение этой точной проблемы, и именно это они придумали.

+1

Отличный ответ спасибо! Можете ли вы сообщить мне, какие Microsoft, Java и Ruby API существуют для хранилищ ключей. Это означает, что мне нужно будет построить только Эрланг. – Zubair

+0

Можете ли вы привести пример одного из хранилищ ключей/значений, которые нужно использовать? ADO.NET довольно гибкий, у него есть список поставщиков для различных хранилищ данных, и в худшем случае вы, вероятно, могли бы создать своего собственного поставщика для какого-то пользовательского хранилища данных, если он еще не существует. –

+0

Riak, Cassandra, MongoDB, CouchDB, Волдеморте, Редис – Zubair

1

Я бы настоятельно рекомендовал проверить проект Twitter Storehaus - это уровень абстракции хранилища ключей для JVM и написанный на Scala, поддерживающий (на сегодняшний день) Memcache, Redis, DynamoDB, MySQL, HBase, Elasticsearch и Kafka.

основной модуль Storehaus определяет три черты:

  1. только для чтения ReadableStore с get, getAll и close
  2. только для записи WritableStore с put, putAll и close
  3. чтение-запись Store Объединение

В экосистеме Ruby вы должны проверить moneta, что также обеспечивает единый интерфейс для магазинов ключей/значений. Он имеет гораздо больше возможностей, чем Storehaus.

Смежные вопросы