Удалить недоступный сегмент Mongo

У меня есть сегментированная установка MongoDB с тремя сегментами: shard0000, shard0001 и shard0002. Машина, на которой работает shard0002, сейчас не работает, что приводит к сбою всех моих запросов. Я' Я бы хотел временно удалить shard0002 из своей установки и продолжить работу с первыми двумя осколками. Это должно быть выполнимо, если я использую только необработанные коллекции, которые находятся в первых двух шардах, верно?

Сначала я попробовал: db.runCommand ({removeshard: 'IP: PORT'}) , который очевидно, не помогает, потому что он просто переводит осколок в режим слива, который никогда не закончится (поскольку он не работает). Затем я попытался подключиться к моему серверу конфигурации и сделал db.shards.remove ({_ id: 'shard0002'}) в базе данных конфигурации, а затем перезапустил mongos, чтобы он перезагрузил конфигурацию. Теперь всякий раз, когда я пытаюсь что-то сделать, я получаю «не могу найти осколок для: shard0002».

Есть ли способ просто сообщить Монго, что меня сейчас не волнует этот осколок, а затем снова включить его позже когда он станет доступен. Я думаю, что хочу создать внутренний DSL на Scala. def instrument = new FXInstrument {provider = "EuroBase" ...

Я просматривал пару книг и ресурсов по языкам, специфичным для предметной области. Я думаю, что хочу создать внутренний DSL на Scala.

def instrument = new FXInstrument {

     provider = "EuroBase"
     instrumentOrders = List(
         new FXOrder {
             baseCcy = "GBP"
             termCcy = "EUR"
             legs = List( 
                 new FXLeg {
                    amountPrice = 100000.0
                    spotPrice = 1.56
                    requirements = List(
                        new FXRequirement {
                           baseCcy="GBP" termCcy="EUR" 
                           settlement="Banker Rain"
                        }
                    )
                 },
                 new FXLeg {
                    amountPrice = 200000.0
                    spotPrice = 1.50
                    requirements = List(
                        new FXRequirement {
                           baseCcy="GBP" termCcy="EUR" 
                           settlement="Banker Sunny"
                        }
                    )
                 }
             )

         }                  
}

Так что следующие утверждения действительны:

 instrument.orders(0).baseCcy should equal ("GBP")
 instrument.orders(0).termCcy should equal ("EUR")
 instrument.orders(0).legs(0).amountPrice should equal 100000.0
 instrument.orders(0).legs(0).spotPrice should equal 1.56
 instrument.orders(0).legs(1).amountPrice should equal 200000.0
 instrument.orders(0).legs(1).spotPrice should equal 1.50
 instrument.orders(0).legs(0).requirements(0).settlement should equal "Banker Rain"
 instrument.orders(0).legs(1).requirements(0).settlement should equal "Banker Sunny"

Я просто не совсем знаю, как реализовать специфичный для предметной области язык как внутреннее представление

1) новый FXOrder ( ) {/ closure /}

Мне нравится этот синтаксис, он хорош или мне следует предпочесть сопутствующие объекты. Например, я могу быстро ввести другие типы FX.

2) Я хочу использовать «одноранговые», например FXOrder - это scala.Proxy mixee, поэтому он использует свойство Proxy (mixin)

Например, «инструмент. peer '' предоставляет внутренний одноранговый объект Java стороннего проприетарного API (хорошо известная система торговли финансовыми услугами, вы можете догадаться?)

То же самое для

instrument.orders (0) .peer instrument.orders (0) .legs (0) .peer instrument.orders (0) .legs (0) .requirements (0) .peer

и т. д.

Я понимаю, что специфичный для предметной области язык не так прост, как я думал, однако некоторые указатели на это выше могли бы быть действительно полезным. Буду признателен за ваши ответы. Ta!

PP

12
задан peter_pilgrim 5 October 2010 в 05:32
поделиться