Native CLI i18n: The TrustGraph CLI has built-in translation support that dynamically loads language strings. You can test and use different languages by simply passing the --lang flag (e.g., --lang es for Spanish, --lang ru for Russian) or by configuring your environment's LANG variable. Automated Docs Translations: This PR introduces autonomously translated Markdown documentation into several target languages, including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew, Arabic, Simplified Chinese, and Russian.
12 KiB
| layout | title | parent |
|---|---|---|
| default | Maelekezo ya Kisaikolojia: Uunganishaji wa Vipengele vya Usanidi wa Cassandra | Swahili (Beta) |
Maelekezo ya Kisaikolojia: Uunganishaji wa Vipengele vya Usanidi wa Cassandra
Beta Translation: This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
Hali: Rasimu Mwandishi: Msaidizi Tarehe: 2024-09-03
Muhtasari
Maelekezo haya yanashughulikia utofauti katika majina na mifumo ya usanidi kwa vigezo vya muunganisho wa Cassandra katika mfumo wa TrustGraph. Kwa sasa, mifumo miwili tofauti ya majina ya vigezo ipo (cassandra_* vs graph_*), ambayo husababisha mchanganyiko na ugumu wa matengenezo.
Tatizo
Mfumo wa programu hutumia seti mbili tofauti za vigezo vya usanidi wa Cassandra:
-
Moduli za /Config/Library za Maarifa hutumia:
cassandra_host(orodha ya seva)cassandra_usercassandra_password -
Moduli za /Storage za Grafu hutumia:
graph_host(seva moja, wakati mwingine hubadilishwa kuwa orodha)graph_usernamegraph_password -
Uonyeshaji usio sawa wa amri: Baadhi ya vichakata (e.g.,
kg-store) hazionyeshi mipangilio ya Cassandra kama hoja za amri Vichakata vingine huonyesha kwa majina na muundo tofauti Nakala ya usaidizi haionyeshi maadili chaguo-msingi ya vigezo vya mazingira
Seti zote mbili za vigezo zinaunganisha na kundi sawa la Cassandra lakini kwa mikataba tofauti ya majina, na kusababisha: Mchanganyiko wa usanidi kwa watumiaji Ongezeko la mzigo wa matengenezo Nyaraka zisizo sawa Uwezekano wa usanidi usio sahihi Uwezo wa kutofanya ubadilishaji wa mipangilio kupitia hoja za amri katika vichakata vingine
Suluhisho Lililopendekezwa
1. Kuweka Majina ya Vigezo
Moduli zote zitatumia majina sawa ya vigezo ya cassandra_*:
cassandra_host - Orodha ya seva (hifadhiwa ndani kama orodha)
cassandra_username - Jina la mtumiaji kwa uthibitishaji
cassandra_password - Nenosiri kwa uthibitishaji
2. Hoja za Amri
Vichakata vyote WILIVYO na kuonyesha usanidi wa Cassandra kupitia hoja za amri:
--cassandra-host - Orodha iliyoachwa na alama ya mwelekeo wa koma ya seva
--cassandra-username - Jina la mtumiaji kwa uthibitishaji
--cassandra-password - Nenosiri kwa uthibitishaji
3. Usaidizi wa Vigezo vya Mazingira
Ikiwa hoja za amri hazitolewi wazi, mfumo utangalia vigezo vya mazingira:
CASSANDRA_HOST - Orodha iliyoachwa na alama ya mwelekeo wa koma ya seva
CASSANDRA_USERNAME - Jina la mtumiaji kwa uthibitishaji
CASSANDRA_PASSWORD - Nenosiri kwa uthibitishaji
4. Maadili Chaguo-msingi
Ikiwa hoja za amri wala vigezo vya mazingira hazibainishwi:
cassandra_host huanguka kwenye ["cassandra"]
cassandra_username huanguka kwenye None (hakuna uthibitishaji)
cassandra_password huanguka kwenye None (hakuna uthibitishaji)
5. Mahitaji ya Nakala ya Usaidizi
Pato la --help lazima:
Kuonyesha maadili ya vigezo vya mazingira kama chaguo-msingi wakati yamepangwa
Kamwe kuonyesha maadili ya nenosiri (onyesha **** au <set> badala yake)
Kuonyesha wazi utaratibu wa utatuzi katika nakala ya usaidizi
Mfano wa pato la usaidizi:
--cassandra-host HOST
Cassandra host list, comma-separated (default: prod-cluster-1,prod-cluster-2)
[from CASSANDRA_HOST environment variable]
--cassandra-username USERNAME
Cassandra username (default: cassandra_user)
[from CASSANDRA_USERNAME environment variable]
--cassandra-password PASSWORD
Cassandra password (default: <set from environment>)
Maelezo ya Utendaji
Utaratibu wa Uamuzi wa Vigezo
Kwa kila kiparamu cha Cassandra, utaratibu wa uamuzi utakuwa:
- Thamani ya hoja ya mstari wa amri
- Kigezo cha mazingira (
CASSANDRA_*) - Thamani chaguo-msingi
Usimamizi wa Kiparamu cha Host
Kiparamu cha cassandra_host:
Mstari wa amri unapokea mnyororo ulioachiliwa na alama ya kung'aa: --cassandra-host "host1,host2,host3"
Kigezo cha mazingira kinapokea mnyororo ulioachiliwa na alama ya kung'aa: CASSANDRA_HOST="host1,host2,host3"
Daima kuhifadhiwa kama orodha ndani: ["host1", "host2", "host3"]
Host moja: "localhost" → inabadilishwa kuwa ["localhost"]
Tayari ni orodha: ["host1", "host2"] → inatumika kama ilivyo
Mantiki ya Uthibitisho
Uthibitisho utatumika wakati cassandra_username na cassandra_password zote zimetolewa:
if cassandra_username and cassandra_password:
# Use SSL context and PlainTextAuthProvider
else:
# Connect without authentication
Faili Zinazohitaji Marekebisho
Moduli zinazotumia vigezo vya graph_* (zinazohitaji kubadilishwa):
trustgraph-flow/trustgraph/storage/triples/cassandra/write.py
trustgraph-flow/trustgraph/storage/objects/cassandra/write.py
trustgraph-flow/trustgraph/storage/rows/cassandra/write.py
trustgraph-flow/trustgraph/query/triples/cassandra/service.py
Moduli zinazotumia vigezo vya cassandra_* (zinazohitaji kusasishwa na chaguo-msingi la mazingira):
trustgraph-flow/trustgraph/tables/config.py
trustgraph-flow/trustgraph/tables/knowledge.py
trustgraph-flow/trustgraph/tables/library.py
trustgraph-flow/trustgraph/storage/knowledge/store.py
trustgraph-flow/trustgraph/cores/knowledge.py
trustgraph-flow/trustgraph/librarian/librarian.py
trustgraph-flow/trustgraph/librarian/service.py
trustgraph-flow/trustgraph/config/service/service.py
trustgraph-flow/trustgraph/cores/service.py
Faili za Majaribio Zinazohitaji Kusasishwa:
tests/unit/test_cores/test_knowledge_manager.py
tests/unit/test_storage/test_triples_cassandra_storage.py
tests/unit/test_query/test_triples_cassandra_query.py
tests/integration/test_objects_cassandra_integration.py
Mbinu ya Utendaji
Hatua ya 1: Unda Msaidizi wa Mpangilio wa Msingi
Unda kazi za matumizi ili kuhakikisha mpangilio wa Cassandra ni sawa katika vichakata vyote:
import os
import argparse
def get_cassandra_defaults():
"""Get default values from environment variables or fallback."""
return {
'host': os.getenv('CASSANDRA_HOST', 'cassandra'),
'username': os.getenv('CASSANDRA_USERNAME'),
'password': os.getenv('CASSANDRA_PASSWORD')
}
def add_cassandra_args(parser: argparse.ArgumentParser):
"""
Add standardized Cassandra arguments to an argument parser.
Shows environment variable values in help text.
"""
defaults = get_cassandra_defaults()
# Format help text with env var indication
host_help = f"Cassandra host list, comma-separated (default: {defaults['host']})"
if 'CASSANDRA_HOST' in os.environ:
host_help += " [from CASSANDRA_HOST]"
username_help = f"Cassandra username"
if defaults['username']:
username_help += f" (default: {defaults['username']})"
if 'CASSANDRA_USERNAME' in os.environ:
username_help += " [from CASSANDRA_USERNAME]"
password_help = "Cassandra password"
if defaults['password']:
password_help += " (default: <set>)"
if 'CASSANDRA_PASSWORD' in os.environ:
password_help += " [from CASSANDRA_PASSWORD]"
parser.add_argument(
'--cassandra-host',
default=defaults['host'],
help=host_help
)
parser.add_argument(
'--cassandra-username',
default=defaults['username'],
help=username_help
)
parser.add_argument(
'--cassandra-password',
default=defaults['password'],
help=password_help
)
def resolve_cassandra_config(args) -> tuple[list[str], str|None, str|None]:
"""
Convert argparse args to Cassandra configuration.
Returns:
tuple: (hosts_list, username, password)
"""
# Convert host string to list
if isinstance(args.cassandra_host, str):
hosts = [h.strip() for h in args.cassandra_host.split(',')]
else:
hosts = args.cassandra_host
return hosts, args.cassandra_username, args.cassandra_password
Awamu ya 2: Sasisha Moduli Ukitumia Vigezo vya graph_*
- Badilisha majina ya vigezo kutoka
graph_*hadicassandra_* - Badilisha mbinu (methods) maalum za
add_args()kwa mbinu za kawaida zaadd_cassandra_args() - Tumia kazi (functions) za kawaida za usaidizi wa usanidi
- Sasisha maandishi ya utangazaji (documentation strings)
Mfano wa mabadiliko:
# OLD CODE
@staticmethod
def add_args(parser):
parser.add_argument(
'-g', '--graph-host',
default="localhost",
help=f'Graph host (default: localhost)'
)
parser.add_argument(
'--graph-username',
default=None,
help=f'Cassandra username'
)
# NEW CODE
@staticmethod
def add_args(parser):
FlowProcessor.add_args(parser)
add_cassandra_args(parser) # Use standard helper
Awamu ya 3: Sasisha Moduli Ukitumia Vigezo vya cassandra_*
- Ongeza uunganisha wa hoja za mstari wa amri ambapo haipo (k.m.,
kg-store) - Badilisha ufafanuzi wa hoja zilizopo kwa
add_cassandra_args() - Tumia
resolve_cassandra_config()kwa utaratibu thabiti - Hakikisha utunzaji thabiti wa orodha ya seva
Awamu ya 4: Sasisha Vipimo na Nyaraka
- Sasisha faili zote za vipimo ili zitumie majina mapya ya vigezo
- Sasisha nyaraka za CLI
- Sasisha nyaraka za API
- Ongeza nyaraka za vigezo vya mazingira
Ulinganishaji na Mifumo ya Zamani
Ili kudumisha ulinganishaji na mifumo ya zamani wakati wa mabadiliko:
- Maonyo ya kutolewa nje kwa vigezo vya
graph_* - Ujumuishaji wa vigezo - kukubali majina ya zamani na mapya awali
- Utoaji wa hatua kwa hatua katika matoleo mengi
- Sasisho za nyaraka pamoja na mwongozo wa uhamishaji
Mfano wa msimbo wa ulinganishaji na mifumo ya zamani:
def __init__(self, **params):
# Handle deprecated graph_* parameters
if 'graph_host' in params:
warnings.warn("graph_host is deprecated, use cassandra_host", DeprecationWarning)
params.setdefault('cassandra_host', params.pop('graph_host'))
if 'graph_username' in params:
warnings.warn("graph_username is deprecated, use cassandra_username", DeprecationWarning)
params.setdefault('cassandra_username', params.pop('graph_username'))
# ... continue with standard resolution
Mbinu ya Majaribio
- Majaribio ya kitengo kwa mantiki ya utatuzi wa usanidi
- Majaribio ya ujumuishaji na mchanganyiko mbalimbali wa usanidi
- Majaribio ya vigezo vya mazingira
- Majaribio ya utangamano wa nyuma na vigezo vilivyotolewa
- Majaribio ya Docker compose na vigezo vya mazingira
Sasisho za Nyaraka
- Sasisha nyaraka zote za amri za CLI
- Sasisha nyaraka za API
- Unda mwongozo wa uhamishaji
- Sasisha mifano ya Docker compose
- Sasisha nyaraka za kumbukumbu ya usanidi
Hatari na Kupunguza Madhara
| Hatari | Athari | Kupunguza Madhara |
|---|---|---|
| Mabadiliko yanayoweza kusababisha matatizo kwa watumiaji | Ya juu | Tekeleza kipindi cha utangamano wa nyuma |
| Uchanganyifu wa usanidi wakati wa mabadiliko | Ya kati | Nyaraka wazi na onyo la kutolewa |
| Kushindwa kwa majaribio | Ya kati | Sasisho kamili ya majaribio |
| Matatizo ya usakinishaji wa Docker | Ya juu | Sasisha mifano yote ya Docker compose |
Vigezo vya Mafanikio
[ ] Moduli zote hutumia majina ya vigezo cassandra_* yanayofanana
[ ] Wasindikaji wote huonyesha mipangilio ya Cassandra kupitia hoja za mstari wa amri
[ ] Nakala ya msaada wa mstari wa amri inaonyesha chaguo-msingi ya vigezo vya mazingira
[ ] Maelezo ya nenosiri hayajaonyeshwa katika nakala ya msaada
[ ] Mfumo wa kurudisha nyuma wa vigezo vya mazingira unafanya kazi vizuri
[ ] cassandra_host inashughulikiwa kwa utaratibu kama orodha ndani
[ ] Utangamano wa nyuma umeendelezwa kwa angalau matoleo 2
[ ] Majaribio yote hupita na mfumo mpya wa usanidi
[ ] Nyaraka zimesasishwa kikamilifu
[ ] Mifano ya Docker compose inafanya kazi na vigezo vya mazingira
Ratiba
Wiki ya 1: Tekeleza kusaidia usanidi wa kawaida na sasisha moduli za graph_*
Wiki ya 2: Ongeza usaidizi wa vigezo vya mazingira kwa moduli zilizopo za cassandra_*
Wiki ya 3: Sasisha majaribio na nyaraka
Wiki ya 4: Majaribio ya ujumuishaji na urekebishaji wa hitilafu
Mambo ya Kuzingatia ya Baadaye
Fikiria kuongeza muundo huu kwa usanidi mwingine wa hifadhidata (e.g., Elasticsearch) Tekeleza uthibitisho wa usanidi na ujumbe bora wa kosa Ongeza usaidizi wa usanidi wa muunganisho wa Cassandra (e.g., pooli) Fikiria kuongeza usaidizi wa faili za usanidi (.env files)