áá áááľ áĽááłá á áá°ááᤠáá ááľá á¨áĽááá á á¨ááἠááłáá˝ áááľ á áľááá á¨ááŤáááŁáá áááľááᣠáĽá á áá¨á¨áťá ááááŤáą ááá áááááĄ

á DB-Engines Ranking áá á¨áľáŁ áááą á áŁá á°ááłá
á¨áááľ á¨NoSQL á ááľ á¨ááἠááłáá˝ áŤáłááľáŤ (á¨áá
á áá CS ááŁáá) áĽá HBase (HB) áá¸áá˘

áĽáá° áĽáľá ááᣠá Sberbank á¨áááá á¨ááἠáááľ á áľá°áłá°á áĄáľáá˝á á áľááľá á áľááá áĽá á¨á¤á˝á˘ áá á á
áá áľ áá°áŤáᢠá áá
ááᣠáľá áĽááŤáŹáášá áľáááśáš á ááᣠá°á¨áľá°áá áĽáá˛áá áĽáá´áľ áĽáá°ááá ááá áľ á°áá¨ááᢠáááᣠá á˛á¤áľ ááá á ááŤá ááአáŤáłá˝áá á áĽááŁáŹ áĽááľáá°áá áŤá°ááááᥠáľáááááá áá፠á áľáááá? á á°ááá á¨áá¤áą áá˛á
ᢠá¨DataStax áá¨áŤáá˝ á˛á¤áľ á ááá HBá á áá
á áľ áĽáá°ááŤá¸áá á°ááá¨ááᢠááá ááᣠDataStax á¨áŤáą á¨áá áĽá
á á ááᣠáľááá
ááá¸áá ááá á á¨ááĽááľáᢠáľá ááá፠áááłáá˝ áŤáá á á ááťáŤá áááł ááľá áá¨áá á áłáłá˘ áá áᣠáľááá
á¨BigData NoSql ááἠáá áĽáá°áá á áŤáłá˝á áááá
áá°ááᣠáá¤áśášá á áŁá á áľá°áłá˝ áá áŠá˘
ááá ááᣠá¨áá°á áá¤áśášá á¨áááŤá¨áłá˝á á ááľáŁ á¨á áŤáŁá˘ áá
á ááá áá˝áłáá˝á áááá˝ á áľááá ááᢠCS á ááἠááĽááľ-á°ááá áááł áĽá
á áá ááá áá˝ááᢠáá
áááľ áá ááľ á¨á°áá°á ááá áá¨á á ááľ á áááá (ááľ) áĽáť áá á°á áŤá á¨ááááᣠáĽá á ááááá ááááŤáľ áŤáá°áłáŤáŁ á¨á፠ááá áá áá ááᢠááĽá á áááŹá˝áá˝áŁ áá
ááłá á áá°ááᣠááá áá ááŁááᣠá¨á
á ááá
áአááᢠá áĽá áááłáŁ á°á
áááą á¨á°á á á áá¨ááť áááááľ áĽá á¨ááἠá
ááá˝ áááŤá¸á ááłá ááá˘
áľááá ᣠá¨á˛á¤áľ á¨áśáľáľáŽá˝ ááŁááľ áááł áĽáť á°ááľááᣠáááľá á¨ááá áŚáł ááá á á¨á°á¨áááá á áá¨á°ááľ áááŞáŤáá˝ áááĄ
CREATE KEYSPACE ks WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3}; á¨áááááá ááĽááľ á°á¨á ááá¨ááἠáááľ ááááśá˝ á áᢠá á ááá á°ááĄáĄ
NW + NR > á áá¤á
áá
áááľ á¨ááľ á¨á˝áá áá¨áááŤáá˝ (NW) áĽá á¨ááľ ááŁáĽ áá¨áááŤáá˝ áĽááľ (NR) á¨ááŁááľ áááł á¨á áá ááá á ááŁá¸á áááľ ááᢠá áĽá áááłáŁ RF = 3ᣠáá
á áááľ á¨áá¨á°ááľ á ááŤáŽá˝ á°áľáá áá¸á áááľ áááĄ
2 + 2 > 3
3 + 1 > 3
áá¨áá á á°áťá áá á á°á áááą á á°á á á áááł áá¨áá¸áľ ááĽá ááłá áľáááᣠá¨3+1 áĽá áľá ááá ááᢠá á°á¨ááŞáᣠHB á á°ááłáłá ááá áá áá°áŤáᣠáá áááľ áá áá˝á˝á á¨á áá ááľáá áááá áááľ ááá˘
áłáłáľáłááľ á áĽááłá¸á á°ááŤááá áĽááłá°á¨á áἠááŁá á¨áááŁá ááᥠááááąá CS áĽá HB RF = 1 á áľááá áá (á¨ááááá HDFS á ááĽáŽá˝á á ááá¨á)ᢠáá á áŁá á áľááá áá˝áł ááᣠââááááŤáąá á áá ááłá áá á CS á ááťá¸á áá áŤáá á°á˝áĽá ááá ááᢠáááłáᣠá¨áłá˝ áŤáá ááľá ááἠáá° CS áááŤá á¨ááŤáľááááá áá áá¨áá áŤáłáŤááĄ

áĽáá
áá á¨áá¨á°ááá áĽááŤáááĄ- áĽá á°ááŤáŤáŞ ááŽá˝ ááἠá˛á˝áᣠá¨áá áŤá áá áááľáłáᢠáá
á°ááĽáŻá ááᣠááá áá á¨RF=3 á¨á ááťá¸á áá áá¸áľ á á¨áá°á áááł á¨á áŤá áááá áἠáááľ á áľááá ááᢠá áá á ááááᣠáĽáŤááłááłá¸á 5 ááŽá˝ áŤáá¸á 4 á°áá á¨áŚá˝ (á á á ááá 20) áĽáá˝áᣠRF=3 á áááľ 2 áá áá áá (áRF=3 150 á°á¨ááśá˝ á¨RF=1 áá á˛ááťá¸á 75)ᢠááá áá áĽáŤááłááłá¸á 5 ááŽá˝ áŤáá¸á 8 á°áá á¨áŚá˝ áłáł á ááŤá áááąá á¨á¨ááá (á á á ááá 40)ᣠRF=3 á 2,7 áĽáĽá (á á á ááá 375 á°á¨ááśá˝ á¨138 áá á˛ááťá¸á) áŤáŁáá˘
ááááŁáľ áá á á¨áá á¨DataStax á¨á˛á¤áľá á¨á°áłáŤ á¨áááľ áá¨áŤ ááľáĽá ááá áá˝ááᣠááááŤáąá á¨ááŁááľ ááá°áá á¨2 áá° 3 ááá¨á á á á ááĽá ááľáĽ á á¤á˝á˘ áá ááá á°á˝áĽá áľáááłá°á¨á˘ áá áááľ á˛áľáŽá˝ á áĽá áá á ááľáĽ áá¤á˝á˘ á˝áá á áá°áá áááľ ááᢠááá ááᣠáĽáá áĽá ááá˝ ááĽááśá˝ á áᣠááááŤáąá á¨á¤á˝á˘ áľáŞáłá˝á á áľááš á¨á°áľá°áŤá¨á áĽá á¨á°áľá°áŤá¨á áááᣠá áŤáŁá˘ááš áá á áá á¨á°ááŤáŠ áááá¸áᣠááá° áἠááŁá á¨áááŁá ááᢠáĽáá˛áá CSá áĽáá´áľ á áľááá áááááľ áĽááłááĽá áĽááá á áŁáááá áĽá á¨áĽáą áá áááľáŤáľ á¨á áá áá¤áłá ááááśá˝ ááአáĽáá°áá˝á áἠááŁá áááŁáᢠáá áá á á áľá°áŤá¨áśáš ááľáĽ áĽáá°ááá¨áł á°áľá á á°ááááᢠáá á ááááŞáŤ áááŽá˝á˘
ááá áá¨áŤáá˝ á¨á°á¨ááááľ áĽáŤááłááłá¸á á¨áá¨á°ááľá áá á áŁáá¸á 4 á ááááŽá˝ á á°ááᨠá¨áááľáá áááľá°á áá áááĄ
á˛ááŠáĄ Xeon E5-2680 v4 @ 2.40GHz 64 ááŽá˝á˘
áľáŤááŽá˝áĄ 12 á¨SATA á¤á˝á˛á˛áá˝
á፠áľáŞáľ: 1.8.0_111
á¨á˛á¤áľ áľáŞáľáĄ 3.11.5
cassandra.yml áááŞáŤáá˝á¨num_tokens: 256
hint_handoff_enabled: áĽáááľ
hint_handoff_throttle_in_kb: 1024
á¨áá°á_áááŽá˝_á¨ááľá¨áť_ááŽá˝áĄ 2
á¨á˛ááľ_áłááŹááśáŞ: /data10/cassandra/hints
hints_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
á á¨áááᥠAllowAllAuthenticator
áááľ á°áŞáĄ AllowAllAuthorizer
áá_á áľá°áłáłáŞáĄ áŤáłááľáŤ áááááá
roles_validity_in_ms: 2000
á¨áááśá˝_áá¤áłáááľ_á _ááľ_ááľáĽáĄ 2000
credentials_validity_in_ms: 2000
áááááᥠorg.apache.cassandra.dht.Murmur3ááááá
á¨áááĽ_ááá_áááŤáá˝áĄ
â /data1/cassandra/data # áĽáŤááłááą dataN áá፠á¨á°áᨠá˛áľá áá
â /data2/cassandra/data
â /data3/cassandra/data
â /data4/cassandra/data
â /data5/cassandra/data
â /data6/cassandra/data
â /data7/cassandra/data
â /data8/cassandra/data
commitlog_directory: /data9/cassandra/commitlog
cdc_enabled: áá°áľ
á¨á˛áľá_ááľááľ_ááá˛áĄ á áá
á¨ááľááľ_ááŞ_ááá˛áĄ á áá
á¨á°ááá_ááááŤáá˝_áá¸ááŤ_áá á_mbáĄ
thrift_prepared_statements_cache_size_mb:
ááá_áá¸ááŤ_áá á_á _mbáĄ
á¨ááá_áá¸ááŤ_ááľáááŤ_áá: 14400
á¨row_cache_size_in_mb: 0
á¨row_cache_save_period: 0
á°ááŤá_áá¸ááŤ_áá á_á _mbáĄ
á¨á°ááŤá_áá¸ááŤ_ááľáááĽ_áá: 7200
á¨á°ááá _áŤáź_áááŤáŚ /data10/cassandra/saved_caches
commitlog_Sync: áá
áłá
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
á¨áá_á á
áŤá˘áĄ
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
áááŞáŤáá˝
â ááŽá˝áĄ "*áŁ*"
concurrent_reads: 256 # áááŻá 64 - ááá ááŠááľ á ááłá¨á
concurrent_writes: 256 # áááŻá 64 - ááá ááŠááľ á ááłá¨á
concurrent_counter_writes: 256 # áááŻá 64 - ááá ááŠááľ á ááłá¨á
concurrent_materialized_view_writes: 32
memtable_heap_space_in_mb: 2048 # 16 áᣠáááŻá - áááá áá á
á¨áááĽá_á ááá˝á_á áááľáĄ á¨áá_ááá¨áŽá˝
index_summary_capacity_in_mb:
index_summary_resize_interval_in_á°áááá˝: 60
trickle_fsync: áá°áľ
trickle_fsync_interval_in_kb: 10240
áá¨ááť_áá°áĽáĄ 7000
ssl_storage_port: 7001
á¨ááłááĽ_á áľáŤáťáĄ *
á¨áľáááľ_á áľáŤáťáĄ *
á¨áľáááľ_á áľáŤáť_áá_ááłááĽáĄ áĽáááľ
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: áĽáááľ
á°ááá
_áľáŤááľáááľ_áááľáĄ 9042
start_rpc: áĽáááľ
á¨rpc_á áľáŤáťáĄ *
rpc_port: 9160
rpc_keepalive: áĽáááľ
rpc_server_type: áááłá°á
thrift_framed_transport_size_in_mb: 15
incremental_backups: áá°áľ
á¨_áŽááááľ_á ááľ_ááśááŤáᥠáá°áľ
áŤáľ-á°á_á
á˝á áłá áá˝ áĽááłáĄ áĽáááľ
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
áŽááŽááľáŤáľ_áŽáááá°áŽá˝áĄ 4
ᨠcompaction_throughput_mb_per_sec: 1600
sstable_preemptive_open_interval_in_mb: 50
á¨read_request_timeout_in_ms: 100000
á¨_áŹáá
_áĽáŤá_áá_áááŁáľ_á _á¤áá¤áľ: 200000
á¨áťá_áĽáŤá_áá_á ááľ_á _á¤áá¤áľ: 40000
á¨áááľ_ááťá_áĽáŤá_áá_á ááľ_á _á¤áá¤áľ: 100000
cas_contingion_timeout_in_ms: 20000
truncate_request_timeout_in_ms: 60000
á¨áĽáŤá_áá_á ááľ_á _á¤áá¤áľ: 200000
slow_query_log_timeout_in_ms: 500
á¨ááľáá_ááľ_áá_á áá: áá°áľ
á¨áá¨á¨áť_ááĽáĽ_áľáá˝áĄ áá˛áááPropertyFileSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
á¨dynamic_snitch_badness_threshold: 0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
á¨á áááá_ááľá áŤ_á ááŤáŽá˝áĄ
á¨á˘áá°áááľ_á˘áááŞáá˝áᥠá¨áá
á¨á°áá á_ááľá áŤ_á ááŤáŽá˝áĄ
áá
áˇá: áá°áľ
á¨ááľáĽ_áááááŤáĄ dc
inter_dc_tcp_nodelay: áá°áľ
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
á¨á°á áá_á¨á°ááá¸_á°ááŁáŤáľá á ááᥠáá°áľ
enable_scripted_user_defined_functions: áá°áľ
á¨áááśááľ_áá_áá_áá_áá_áá: 1
ááá˝_áááĽ_ááľá áŤ_á ááŤáŽá˝áĄ
áá
áˇá: áá°áľ
á¨áááĽá_áľááá_ááľá ááááŤ_ááłá¨áťáĄ 1000
á¨áááĽá_áľááá_ááľááľ_ááłáᥠ100000
áŁá˝_áá á_ááľá ááááŤ_á _áŞáŁ: 200
áŁá˝_áá á_ááľá
_á¨ááá_á°á¨á_á _áŞáŁ: 250
áŤáá°ááá_áŁá˝_á á ááŤá_ááááá˝_ááľá ááááŤ_ááłá¨áťáĄ 10
compaction_large_partition_warning_threshold_mb: 100
gc_warn_threshold_in_ms: 1000
á¨áá_áááľ_áá
áˇá: áá°áľ
enable_materialized_views: true
enable_sasi_indexes: áĽáááľ
á¨áᲠá ááĽáŽá˝áĄ
### á¨á˛á¤áá¤áľ á
ááĽáŽá˝-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:á¨á°á¨áááľ áá á=8
-XX:á¨áá°ááá¨ááááŤáThreshold=1
-XX:CMSá¨áááááŤá¨áŚáł ááááá=75
-XX:+á˛á¤áá¤áľ áá ááá¨áááá፠áŚáł áĽáť
-XX:CMSá¨áááł áá=10000
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordAlways
-XX:+CMSClassUnloadingEnabled
á¨jvm.options áá á°á¨ áľááľáł 16 Gb á°ááľá§á (áĽáá 32 Gb ááá¨ááᣠááá ááŠááľ á ááłá¨á)á˘
á°áá á¨áŚáš á¨á°áá áŠáľ á áá¨á°áá áľááá áááĄ
CREATE TABLE ks.t1 (id bigint PRIMARY KEY, title text) WITH compression = {'sstable_compression': 'LZ4Compressor', 'chunk_length_kb': 64};á¨á¤á˝á˘ áľáŞáľáĄ 1.2.0-cdh5.14.2 (á org.apache.hadoop.hbase.regionserver.HRegion ááá ááľáĽáŁ MetricsRegioná á áľááá°ááᣠáá á á RegionServer áá áŤááľ áááá˝ áĽááľ á¨1000 á áá á˛áá áá° GC á ááŤ)
ááŁáŞ áŤááá á¨HBase áááŞáŤáá˝á¨áááá.session.timeout: 120000
hbase.rpc.timeout: 2 á°áá(áá˝)
hbase.client.scanner.timeout.period: 2 á°áá(áá˝)
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.period: 2 á°áá(áá˝)
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: 30
hbase.regionserver.logroll.period: 4 á°ááľ(áá˝)
hbase.regionserver.maxlogs: 200
hbase.hregion.memstore.flush.size: 1 GiB
hbase.hregion.memstore.block.multiplier: 6
hbase.hstore.compactionThreshold: 5
hbase.hstore.blockingStoreáááá˝áĄ 200
hbase.hregion.majorcompaction: 1 áá(áá˝)
á hbase-site.xml á¨HBase á áááááľ á¨áá á¨áá
á á
ááŁá˘ (á¨á°á
áááľ áŤáá)áĄ
hbase.regionserver.wal.codecorg.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
hbase.master.namespace.init.timeout3600000
hbase.regionserver.optionalcacheflushinterval18000000
hbase.regionserver.thread.compaction.large12
hbase.regionserver.wal.enablecompressiontrue
hbase.hstore.compaction.max.size1073741824
hbase.server.compactchecker.interval.multiplier200
á¨á፠áá
á á ááŤáŽá˝ á HBase RegionServeráĄ
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: 2 á°áá(áá˝)
hbase.snapshot.region.timeout: 2 á°áá(áá˝)
hbase.snapshot.master.timeout.millis: 2 á°áá(áá˝)
HBase REST á¨á áááá á¨áá°á á¨áá áá áᥠ100 MiB
á¨HBase REST á áááá á¨áá°áá á¨áá ááá ááľáŹáá˝áĄ 5
á¨HBase Thrift á áááá á¨áá°á á¨áá áá áᥠ100 MiB
á¨HBase Thrift á áááá á¨áá°áá á¨áá ááá ááľáŹáá˝áĄ 5
á¨ááľá°á áááľ áá áá áᥠ100 ááŁ
ááľá°á áááľáá áá ááá ááľáŹáá˝áĄ 5
á¨RegionServer á¨áá°á á¨áá áá áᥠ100 MiB
ᨠRegionServer á¨áá°áá á¨áá ááá ááľáŹáá˝áĄ 5
á¨HBase á áá˛á ááľá°á á˛á´áá˝á ááľáŽáľáĄ 4 á°áá(áá˝)
dfs.client.hedged.read.threadpool.size: 40
dfs.client.hedged.read.threshold.millis: 10 ááá°á¨ááľ(áá˝)
hbase.rest.threads.min: 8
hbase.rest.threads.max: 150
á¨áá°áá á¨áá°áľ ááá áááŽá˝áĄ 180000
hbase.thrift.minWorkerááŽá˝áĄ 200
hbase.master.executor.openregion.threads: 30
hbase.master.executor.closeregion.threads: 30
hbase.master.executor.serverops.threads: 60
hbase.regionserver.thread.compaction.small: 6
hbase.ipc.server.read.threadpool.size: 20
á¨ááá á áááłáá˝ ááŽá˝áĄ 6
á¨á°áá á á፠ááá áá á á áŁááľáľáĄ 1 áá˘
á¨HBase REST á áááá ááŁáŞ áĄáľáᥠ3 áá˘
á¨HBase Thrift á áááá ááŁáŞ áĄáľáᥠ3 GiB
ᨠHBase ááľá°á á áŁááľáľ á¨á፠ááá áá áᥠ16 áá˘
ᨠHBase ááá á áááá á áŁááľáľ á¨á፠ááá áá áᥠ32 áá˘
+á¨áĽááľáłáľ á áŁá
maxClientCnxns: 601
á¨áá°á á¨ááá áá ááĽááŤáĄ 120000
á°áá á¨áŚá˝á ááá ááĄ
hbase org.apache.hadoop.hbase.util.RegionSplitter ns:t1 UniformSplit -c 64 -f cf
alter 'ns:t1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF', COMPRESSION => 'GZ'}
áĽáá áá á ááľ á áľááá ááĽáĽ á áᥠá¨DataStax ááááŤá á¨HB á°áá á¨áŚá˝á áááá á áá áŤá á áááá˝ áĽá á áá áĽáá°áá á áááá˝áᣠááá áĽááłá áá ááľááá áá áá˝ ááłá á˘áááᢠáľááá ᣠáĽáľá¨ 640 áᣠá¨áá°ááľ áá¨ááť áĽáá˛áá 64 áááá˝ á°ááá ááᣠáááľá ááŤá¨áá áá á áŤáá á°áá á¨áĽá˘
á áá¨áŤá ááᣠHBase 22 á á¨á´ááá˝ áĽá 67 áááá˝ áá áŠáľ (áá á¨áá áá°á áá°á áá˝ áŁááá áᎠááľáŞáľ 1.2.0 á áľá¨á ááá áá á)á˘
á ááᣠáľá áŽáąá˘ ááĽáŤááłááą á¨ááἠááł á¨áľááš áá áŽá˝ á¨á áá á áá áĽáá°áá ááá˝ áľáááá áᣠáá¨áŤáá˝ á á°ááŤáŠ áĽáá¨áśá˝ á°áŤáá°ááᢠáŤá áááľáŁ á á ááłááľ áá¨áŤáá˝áŁ áááľ á á ááľ áá á á áŤáľ á°áá á¨áŚá˝ ááľáĽ á°á¨áááá (ááá á áŤáą ááśá˝ ááááááą áĽá á áá áááá)ᢠá ááá˝ áá¨áŤáá˝áŁ áľáááľ á¨á°ááŤáŠ á°áá á¨áŚá˝ áĽá á áá ááááᢠá á ááłááľ áááłáá˝áŁ á¨áŁá˝ áá á 100 áá áᣠá ááá˝ á°áá 200 áá á (á¨áŁá˝ áááŞáŤ - á¨áłá˝ áŤááá áŽáľ áááá¨áą)ᢠááĽá´áľ á¨ááἠáá á 10 áŁááľ ááá 100 áŁááľ (á¨áłáłSize) áá áᢠá áĽáŤááłááą áá 5 áááŽá ááááŚá˝ á°á˝áá á áĽáŤááłááą á áá á¨áĽ ááľáĽ á°áá áĄá˘ á ááľáľ ááŽá˝ (thNum á¨áá ááĽá) á áĽáŤááłááą á áá á¨áĽ ááľáĽ á˝ááá/á°áá ááᣠáĽáŤááłááłá¸á á¨áŤáłá¸áá á¨ááá ááá áá ááá (ááĽá = 1 áááŽá)áĄ
if (opType.equals("insert")) {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
StringBuilder sb = new StringBuilder("BEGIN BATCH ");
for (int i = 0; i < batch; i++) {
String value = RandomStringUtils.random(dataSize, true, true);
sb.append("INSERT INTO ")
.append(tableName)
.append("(id, title) ")
.append("VALUES (")
.append(key)
.append(", '")
.append(value)
.append("');");
key++;
}
sb.append("APPLY BATCH;");
final String query = sb.toString();
session.execute(query);
}
} else {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
StringBuilder sb = new StringBuilder("SELECT * FROM ").append(tableName).append(" WHERE id IN (");
for (int i = 0; i < batch; i++) {
sb = sb.append(key);
if (i+1 < batch)
sb.append(",");
key++;
}
sb = sb.append(");");
final String query = sb.toString();
ResultSet rs = session.execute(query);
}
}
á áá áá á¨áľ áá¤á˝á˘ á°ááłáłá á°ááŁá á°á°áĽáˇááĄ
Configuration conf = getConf();
HTable table = new HTable(conf, keyspace + ":" + tableName);
table.setAutoFlush(false, false);
List<Get> lGet = new ArrayList<>();
List<Put> lPut = new ArrayList<>();
byte[] cf = Bytes.toBytes("cf");
byte[] qf = Bytes.toBytes("value");
if (opType.equals("insert")) {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
lPut.clear();
for (int i = 0; i < batch; i++) {
Put p = new Put(makeHbaseRowKey(key));
String value = RandomStringUtils.random(dataSize, true, true);
p.addColumn(cf, qf, value.getBytes());
lPut.add(p);
key++;
}
table.put(lPut);
table.flushCommits();
}
} else {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
lGet.clear();
for (int i = 0; i < batch; i++) {
Get g = new Get(makeHbaseRowKey(key));
lGet.add(g);
key++;
}
Result[] rs = table.get(lGet);
}
}
á á¤á˝á˘ ááľáĽ á°áá áá ááá¨á áἠá¨áá áľáááľ áááááľ áľááááľáľáŁ á¨ááá á¨á á°ááŁá áĽáá°áá áááľáááĄ
public static byte[] makeHbaseRowKey(long key) {
byte[] nonSaltedRowKey = Bytes.toBytes(key);
CRC32 crc32 = new CRC32();
crc32.update(nonSaltedRowKey);
long crc32Value = crc32.getValue();
byte[] salt = Arrays.copyOfRange(Bytes.toBytes(crc32Value), 5, 7);
return ArrayUtils.addAll(salt, nonSaltedRowKey);
}
á áá á áŁá á áľá°áłá˝á ááá - áá¤áśáš

á ááŤá áááá á°ááłáłá áááĄ

á¨á¤á˝á˘ (HB) áĽá
á á áŁá á áľááŤá áľááá á á˛á¤áľ á
ááĽáŽá˝ ááľáĽ á ááłááľ ááá°áśá˝ áĽááłá áĽáááłááᢠááá ááᣠá áŁá ááá˝ á¨áááľá áááŞáŤáá˝ (áĽáá° concurrent_writes ááá memtable_heap_space_in_mb áŤá) á ááá áá ááľá°áŤá¨á áĽá ááľá°áŤá¨á ááá ááĽááľ á áááŁáᢠáá
á áĽáá˛á
áĽááłáᣠááááŚáš áášá
áá¸áᣠááá á˝áá á¨ááŁá¸ááá˘
áá¨áá á ááśáš áá á áĽáŠá áá á áá°áŤáŤáᣠáĽá á¨ááá ááśá˝ á¨á°ááá áľáłá˛áľá˛ááľ á áááľ á°ááłáłá ááá˘
á¨ááśá˝ á ááą áŤáá á áá á¨áĽ áľáłá˛áľá˛ááľ á¨áááľáá áá
ááá˘á¨ááá ááá°áľáĄ ks
á¨á°áá á áĽááľ: 9383707
á¨ááŁáĽ áááá¨áľáĄ 0.04287025042448576 áá´
á¨á˝áá áĽááľáĄ 15462012
á¨á
áá áááá¨áľáĄ 0.1350068438699957 ms
á áá áŁá á
áá áŤá ááá˝áá˝áĄ 0
á°áá á¨áĽáĄ t1
á¨á¤áľá¤áľá˛á¤á áĽááľáĄ 16
áĽá
á áá á¨áá áŚáł (á ááĽáł): 148.59 áá˘
áĽá
á áá á¨áá áŚáł (á á
áá): 148.59 áá˘
á á
á˝á á°-ááśáá˝ á¨á°á ááá áľ áŚáł (á á
áá): 0 áŁááľ
áĽá
á áá á¨ááá á¨ááá á᪠á¨áá áá
á°á¨ áľááľáł (á á
áá): 5.17 áá˘
á¨á¤áľá¤áľá˛áĽá áŽáááŹá˝á áŹážáĄ 0.5720989576459437
á¨ááááá˝ áĽááľ (áááľ): 3970323
á¨áááĽááľ á´á áĽááľáĄ 0
á¨áááĽááľ á¨ááἠáá áᥠ0 áŁááľ
áĽá
á áá á¨ááá á¨ááá´áĽá á¨ááá áá
á°á¨ áľááľáł ááŞáĄ 0 áŁááľáľ
á¨áááĽááľ ááĽáŞáŤ/ááĽá፠áĽááľáĄ 5
á¨á áŤáŁá˘á á¨á°áá á áĽááľáĄ 2346045
á¨á áŤáŁá˘ ááŁáĽ áááá¨áľáĄ NaN ms
á¨á áŤáŁá˘á á¨á˝áá áĽááľáĄ 3865503
á¨á áŤáŁá˘ á¨á˝áá áááá¨áľáĄ NaN ms
á áá áŁá á
áá áŤá áĽáá˝áśá˝áĄ 0
á¨á°á áá ááśáጠ0.0
á¨áĽáá ááŁáŞáŤ á¨áá¸áľ ááá˛ááľáĄ 25
á¨áĽáá ááŁáŞáŤ á¨á°áłáłá° áĽáááłáĄ 0.00000
áĽá
á áá á¨ááá á¨áĽáá ááŁáŞáŤ áŚáłáĄ 4.57 áá˘
áĽá
á áá á¨ááá á¨áĽáá ááŁáŞáŤ á¨ááá áá
á°á¨ áľááľáłáŚ 4.57 áá˘
áĽá
á áá á¨ááá á¨ááá áá
á°á¨ áľááľáł áá፠áá áááŤáĄ 590.02 áŞáŁ
áĽá
á áá á¨ááá á¨ááá ááłáłáł á¨ááá áá
á°á¨ áľááľáł ááŞáŚ 19.45 áŞáŁ
á¨á°á¨áá á¨ááááá áá
á°á áŁááľáĄ 36
á¨á°á¨áá ááááá á¨áá°áá áŁááľáĄ 42
á¨á°á¨áá ááááá á ááŤá áŁááľáľáĄ 42
á á ááľ ááŤá á ááŤá ááŤá á´áá˝ (á áá¨á¨áťá á ááľáľ á°áá): NaN
á á ááľ ááŤá á¨áá°áá á¨ááĽáł á´áá˝ (á áá¨á¨áťá á ááľáľ á°áá)ᥠ0
á á ááľ ááŤá á ááŤá á¨áááĽá áľáááŽá˝ (á áá¨á¨áťá á ááľáľ á°áá): NaN
á á ááľ ááŤá á¨áááá°á á¨áá°á á¨áááĽá áľááá (á áá¨á¨áťá á ááľáľ á°áá)ᥠ0
á¨á°áŁá ááá´á˝áá˝áĄ 0 áŁááľ
á¨áŁá˝ áá áá áááááľ ááá¨á (á¨ááá°áĽ áŁá˝áá˝á ááá áĽááłá) ááá áá¤áľ á ááľáááᤠá¨áŁá° ááá ááᢠáCS á¨á°áááľ áá¤áśá˝ á¨DataStax áá á°ááłáłá áľááá áá áCS á¨áá°áá á ááťá¸á ááá áá˝áá - á á°á¨ááľ áá° ááś áşá á¨áá á áľáŤáá˝á˘ á á°á¨ááŞáᣠá¨ááĽáľ á á áááá á¨á°ááá¨áľáᣠCS á á¨áá°á áááł á¨á áá á˛áአáĽá á¨á˛áľá áŚáł áĽáá°áá áá áĽááŤáááĄ

áá
ááľá ááááąá á¨ááἠááłáá˝ á á°á¨áłáłá á¨á°á°á¨á á¨ááá áá¨áŤáá˝ á á áááá áŤáłáŤáá˘
HB á ááŁáĽ á ááťá¸á áá áľááá ááá áĽá áᣠááááąá á¨ááἠááłáá˝áŁ á ááŁáĽ áá áľ á¨á˛áľá á á ááá áĽá á á áŁá áá á°á ááá ááá áá (á¨ááŁáĽ áá¨áŤáá˝ á¨áĽáŤááłááą á¨ááἠááł á¨áá¨áŤ áá°áľ á¨áá¨á¨áť ááá áá¸áᤠáááłá áCSᣠáá á¨áá 15áĄ20 áĽáľá¨ á¨á°ááľ á áá 15áĄ40 ááá˘) á HB ááłáᣠááááŤáą ááá˝ áá - á áĽááá áá¨á á áá á°á¨ áľááľáł ááľáĽáŁ á áááľáśá ááľáĽ ááᣠáĽá á ááłááśáš á áĽáááŤá˝ ááľáĽ á°á¨áá˝á°ááᢠáľá CSᣠáĽáá´áľ áĽáá°áá°áŤ áá á áá ááá˝ á áá°ááᣠááá áá á¨á˛áľá á á áááá á ááłááᢠááááŁáľáŁ áá¸ááŤáá áááááľ ááᏠáá á (row_cache_size_in_mb = 2048) áĽá áááá cache = {'keys': 'ALL', 'rows_per_partition': '2000000'}ᣠááá áá áá á áĽáááą áááŽá˝á á áľááš á áŁáĽáśáłáá˘
á á¤á˝á˘ ááľáĽ áľááá á¨ááá áĽááľ á ááľ á áľááá ááĽáĽ ááľáá á°áᢠááᢠá áĽá áááł 64 á°áááž áá áᢠáá° 4 áá áŤá°á¨áááᣠáááłáᣠá¨ááŁáĽ ááĽááľ á 2 áĽáĽá ááááłáᢠáá á¨ááá áľ ááááŤáľ áááľáśá á ááĽááľ áľááááᣠáááá˝ á á°á°ááá áľááá አáĽá ááŁáĽ á°á¨á᪠áááá˝á áááá á áľáááŤáľááá ááᣠáá á áá¤á˝á˘ á áŁá ááľáĽáľáĽ á¨áá á á áŤá ááᢠá áĽááá°á ááá áááłáá˝áŁ áá á áľá-áá°áá á áĽá á¨áá¨áá áľáľáŤá´á á áááááľ áááł áá˝ááᢠá á°áááᣠá¨ááťáť áá°áĽá°áĽá áĽá á¨á¤á˝ááááľ áááááŤá á¨á áľá°ááᣠáŤáááá¨áĽ á¨ááŤá¨ááá áĽá áááá፠áĽáá ááááᢠá¨DataStax áá¨áŤáá˝ á á ááľ á áá á¨áĽ á ááľ ááá áĽáť á¨á°áá°á ááá áá˝áá (áá á á¨á°áłáłá° áá)ᣠáĽá áá HB á ááŁáĽ áá¨áŤááťá¸á ááľáĽ ááá á°áŤá áĽááłá°á¨á á á°áá°á á°á¨á áŤáĽáŤáŤáá˘
á¨áá á¨áá¨á°ááľ á¨ááááŞáŤ áá°áá°ááŤáá˝ ááá áá˝ááᢠá áá¨áŤ áá ááá á áááľ á¨áŁáľ áľá á°áśá˝ áĽááłáá°á°á¨á á¨áááľ ááľáĽ á ááľááŁáľ áŤáłááľáŤ áĽáá° á¸áá áĽááŽá˝ áŤááľ áŽáá°áľ ááᢠáá áἠá áľáááᣠá á ááľ áĽáá áá ááá á˛á áĽá ᣠá á˝áá ááááŞáŤ áá áŁáá ááľá áá áĽáá°ááłá¨áᣠá á ááťáŤá áááł áĽáŠ áá¤áśá˝á áŤáłáŤáᣠááá áá á á°ááłáłá áááłáá˝ á˛áá¨á áá á áá áá ááᢠá¨áá á á ááᣠá áááľááá˝á áá áŤáá áá á°á á¨á˛áአá á ááá á¨áááľ ááľáĽ á ááľááŁáľáŁ á á ááľ á áľá°ááá áááľ á¨ááá á°áá¨á HBs áá°ááŤáľá á°áá¨ááᣠá áá á á ááááá á áĽáĽá áá¨ááŤáᢠáľááá ᣠá¨ááĽáľ á á áááá áááľ ááľáĽ á ááľááŁáľáŁ á¨á˛á¤áľ áááł á¨á áá á áľá¨á ááááá˘
áĽááἠááᣠáĽááá áá¨áŤáá˝ á áŁá á°á á°áŤá˝ áá¸áᣠáĽá áĽáá áĽá á áá á¨ááá á¨ááἠáá á á á ááťáŤáááľ áá áá ááᢠáĽáľá¨ á´áŤáŁááľ áľá¨áľ áĽááłáľá áᎠáááłá ââá¨á°áᨠááá áá áᣠááá áá á HB á´áŤáŁááľ á¨ááἠáá á ááľá°áááľ áĽáá˝ááᣠáá á CS á˝áá ááá áłáᢠá¨ááá˝ áá ááĽá፠áááŞáŤáá˝ á¨ááŁáŞá áá á˛áááአá á¨áá°á áááł á˘á¨ááŠá á áĽááá áĽáŤáá˝ áá áĽááłá OperationTimedOutException á á°á°ááá ááĽááá˘
á á፠áĽá¨áłá˝á á á˛á¤áľ ááľáĽ áŤááľá ááááá˝ áĽáá°áááá á°áľá á á°ááááᣠáĽá ááá á á¨áťááᣠáľá áá¨á¨áťá áá¤áľ áá¨á á áĽááá áááľ á á˝áá áá¨á¨áť áá áĽá¨ááŤááá˘
ááááĄ- ááá°ááź ááá ááľáá áááŁáá ááŁá¤á ááá á á˝áŤááá˘
159,644 áŚááľ (4 á°áá á¨áŚá˝áŁ 5 ááŽá˝áŁ áŁá˝ 100)á˘
á°á¨ááŻá á
.withLoadBalancingPolicy(new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
áĽá á¨áá áá áĽááľá á°áŤááľáŠá˘ áŤááááľ áá áááĄ
4 á°áá á¨áŚá˝áŁ 100 ááŽá˝áŁ áŁá˝ = 1 (á á°áá á): 301,969 áŚááľ
4 á°áá á¨áŚá˝áŁ 100 ááŽá˝áŁ áŁá˝ = 10ᥠ625,655 áŚááľ
4 á°áá á¨áŚá˝áŁ 100 ááŽá˝áŁ áŁá˝ = 100ᥠ625,655 áŚááľ
á áá áá ááá˝ á¨ááľá°áŤá¨áŤ áááŽá˝á á°ááŁáŤá á á°ááááᣠáá á¨áá¨áŤ áá°áľ á ááłááᣠáĽá áá¤áśášá á ááĽá áá¨á¨áť áá áĽá¨ááŤááá˘
ááá: hab.com
