7

Czy instancja com.datastax.driver.core.PreparedStatement powinna być pojedyncza w aplikacji?Datastax - czy system zabezpieczania wątków PreparedStatement jest bezpieczny?

Jeśli tak, co się stanie, jeśli połączenie zostanie utracone? Czy Przygotowana Deklaracja staje się nieważna i konieczne jest ręczne działanie w celu jej "reprezentacji"?

Prosty przykład użycia PreparedStatement (inny niż przygotowanie + wykonanie w tej samej metodzie) byłby genialny!

Odpowiedz

8

Obiekty PreparedStatement są objęte ochroną wątków. Możesz je zmutować (na przykład ustawiając domyślny poziom spójności) w sposób, który może prowadzić do niespójności, jeśli jednocześnie wykonywałoby to wiele wątków, ale to jest anorher.

Przygotowane wyciągi są zasadniczo opakowaniami związanymi z identyfikatorem i metadanymi, a serwer będzie przechowywać przygotowane oświadczenie tak długo, jak długo trwa (ale awaria lub ponowne uruchomienie węzła oznacza utratę i konieczność rejestracji). Teoretycznie przygotowane oświadczenie może być serializowane i deserializowane gdzie indziej i nadal działać, trochę nie polecam go.

Przygotowane wyciągi są lokalne dla węzła i, jak już wspomniałem, nie przetrwają restartu, więc jeśli zamierzasz je przechowywać, upewnij się, że je wyczyścisz, gdy połączenia się nie powiodą lub węzły uruchomią się ponownie. Próbowałbym je rozdzielić w taki sam sposób, jak zakres połączeń, odtwarzać je na połączeniach i ponownych połączeniach. Może nie świetna rada, ale to zależy od tego, jak twoja aplikacja jest zorganizowana.

+0

Myślę, że przygotowane instrukcje są nie tylko specyficzne dla węzła, ale są udostępniane w całym klastrze Cassandra. – pinkpanther

Powiązane problemy