Най-ефективната архитектура за уебсайт, използващ Cassandra и Solr?

Разработвам уебсайт, който ще използва Cassandra за съхранение на база данни и Solr за индексиране и търсене на някои от данните, съдържащи се в тази база данни (само някои от данните искам да могат да се търсят). Възнамерявах да използвам PHP за скриптове от страна на сървъра, взаимодействие с базата данни Cassandra и предоставяне на динамично HTML съдържание въз основа на съдържанието на базата данни.

Когато потребител ангажира нещо към базата данни, си представях, че PHP издава запис на Cassandra и ако това са данни, които трябва да бъдат търсени, същите тези данни могат да бъдат записани в индекса Solr. Работата е там, че не се нуждая непременно от данните за търсене, незабавно налични в индекса Solr, нито искам процесът на добавянето им към индекса чрез PHP да изразходва ценни ресурси, особено в часовете с пиков трафик. Има ли начин асинхронните актуализации на индекса Solr да се извършват във фонов режим чрез прехвърляне на данните директно от Cassandra? Може би може да се създаде опашка от данни за търсене, които да се използват за актуализиране на индекса Solr по време на неактивност от някакъв фонов процес?

Нов съм в цялото това нещо, но по някакъв начин бих искал връзката между Cassandra и Solr да бъде изолирана от основните PHP скриптове. Не съм сигурен дали Cassandra и Solr могат да се свържат ефективно от Java, като само достъпът от по-високо ниво до Cassandra (за четене/запис в базата данни) и Solr (за заявка на данни за търсене) се поддържа в PHP за създаване на уеб съдържание. Оценявам всякакви предложения.


person onlinespending    schedule 01.02.2011    source източник


Отговори (2)


Вместо да работите със Solr и Cassandra поотделно, трябва да помислите за Solandra, бекенд на cassandra за solr.

Прочетете повече за това тук: http://github.com/tjake/Lucandra

person tjake    schedule 01.02.2011
comment
Бях разгледал за кратко Solandra, но имам едно основно притеснение относно използването му. Наистина не се нуждая от търсене в реално време (въпреки че със сигурност бих го взел безплатно) и се притеснявам, че Solandra по същество прави незабавни ангажименти към индекса Solr. Предполагам, че това може значително да забави заявките за търсене, когато има много ангажименти, които се случват едновременно. - person onlinespending; 01.02.2011
comment
Това вече не е вярно, има настройка за запазване на кеширани четци за минимално време. - person tjake; 02.02.2011
comment
Добре благодаря. Определено ще го разгледам тогава. Предполагам, че има печалба в производителността от това, че Cassandra и Solr са толкова тясно свързани и работят под една JVM. Това истина ли е? Има ли случаи, при които производителността страда от Solandra спрямо стартирането на Cassandra и Solr поотделно? - person onlinespending; 02.02.2011
comment
Хранилището на Solandra github.com/tjake/Solandra има последно ангажиране през 2012 г., все още ли е актуално? - person Michal; 03.01.2016

Имате много възможности.

Един прост е да имате планирано задание, което грабва всичките ви актуализации от момента на последното изпълнение на задание и извършва пакетно вмъкване в solr.

Или можете да направите вашата публикация в cassandra и след това да издадете асинхронна публикация на solr. както е описано тук: Как да направя асинхронна GET заявка в PHP?

Тъй като не се нуждаете от търсене в реално време, можете да зададете и размера на ангажимента по подразбиране да бъде доста голям.

person bdargan    schedule 02.02.2011